WAMP by RedRaven
WAMP: MySQL


MySQL. Índice de trucos, ideas, tips ...    


1.- CONCAT() y LPAD(). Formateando en origen con String Functions de MySQL.
2.- Múltiples MySQL´s. Una base de datos con identidad disociativa.

MY2

 CONCAT() y LPAD(). Formateando en origen con String Functions de MySQL.

   MySQL tiene una amplia implementación del idioma de Scripts SQL. En ella dispone de toda una larga relación de String Functions. Veremos aquí un pequeño ejemplo de un par de ellas. 

   Un SELECT no solo puede recuperar datos "en bruto" de la Base de datos sino que tambien puede manipularlos, dándonos el resultado de dicha manipulación como una columna de dicho SELECT. 

   El ejemplo que os propongo va a realizar simplemente un "formateo" de un campo Id de tipo integer para añadirle un prefijo alfanumérico y al mismo tiempo ajustar el integer a una longitud dada, rellenando con ceros por la izquierda. 

   Así un simple SELECT me generaría una tabla del estilo de: 

SELECT Id,Nombre FROM singers ORDER BY Id ASC;

Id    Nombre
-----------------------------------
1     Greg Lake 
10    Jon Anderson
100   Robert Plant

   Vamos ahora a añadir una columna en la que vamos a manipular el campo Id. Vamos a utilizar ajustarle la longitud a 4 dígitos añadiéndole ceros por la izquierda con LPAD() y despúes vamos a añadirle, también por la izquierda el texto ´SG´. 

   Entonces nuestro SELECT quedaría de la siguiente forma y con estos resultados: 

SELECT Id,CONCAT("SG/",LPAD(Id,4,0)) AS "Fomateado",Nombre FROM singers ORDER BY Id ASC;

Id  Formateado Nombre
-----------------------------------
1   SG/0001    Greg Lake 
10  SG/0010    Jon Anderson
100 SG/0100    Robert Plant

   Con este tip podéis obtener tablas mucho mas "bonitas" en origen, sin necesidad de ulterior tratamiento. 

   Volver 

MY1

 Múltiples MySQL´s. Una base de datos con identidad disociativa.

   Hay situaciones en las que necesitamos tener mas de una versión ´viva´ de MySQL funcionando. En mi trabajo por ejemplo tengo que mantener la 4 y la 5 simultáneamente. ¿Como puede hacerse esto? 

   Solo hay que tener en cuenta dos cosas: El nombre del Servicio MySQL y el Puerto TCP de escucha del mismo. Mientras ambos sean distintos podemos tener tantos servidores MySQL en el mismo Windows como queramos. 

   Desde la versión 5 el configurador MySQLInstanceConfig.exe nos permite elegir ambos parámetros, realizar dos instalaciones sucesivas seleccionando los dos distintos es la forma mas fácil de conseguir lo que deseamos. Hacerlo con una instalación ya realizada anteriormente es algo mas complicado pero también se puede. 

   El más facil de establecer es el Puerto TCP de escucha ya que solo hay que detener el servicio, cambiar una línea en el fichero mysql.ini e iniciar de nuevo el servicio. 

   Para eso entramos en Herramientas Administrativas de Windows y en la opción Servicios. Alli buscamos el servicio, que se llamará MySQL (ó MySQL4 ó MySQL51 o algo así pero siempre empezando el nombre por MySQL-lo-que-sea). Con él seleccionado pulsamos sobre Detener y el servicio dejará de funcionar. 

   Si conocemos el nombre del servicio MySQL podemos tambien detenerlo mediante una linea de comandos, para ello abrimos una sesión de consola (Inicio / Ejecutar / cmd) y escribimos: 

C:\MySQL5\Server\bin\>net stop MySQLxxx

   Esto es hacer lo mismo pero de otra forma. Una vez detenido el servicio podemos modificar el Puerto TCP de escucha. 

   Así si queremos que un servidor concreto escuche el puerto 3307, en lugar del habitual 3306, tendremos que modificar esta línea del fichero mysql.ini : 

[client]
port=3307

   Arrancamos de nuevo el servicio desde Herramientas Administrativas / Servicios pulsando sobre Iniciar y ya tenemos a nuestro MySQL escuchando el nuevo puerto. 

   O bien, de igual forma que antes y solo si conocemos el nombre del servicio MySQL, podemos tambien iniciarlo mediante una linea de comandos, para eso abrimos una sesión de consola (Inicio / Ejecutar / cmd) y escribimos: 

C:\MySQL5\Server\bin\>net start MySQLxxx

   Podemos ya instalar otro MySQL y utilizar para éste el puerto estándar 3306 o reasignarlo a otro distinto tal como hemos descrito. 

   Cambiar el nombre del Servicio es algo mas complejo ya que tenemos que des-registrar el Servicio del Windows y volver a registrarlo pero con el nuevo nombre que queremos. 

   Para poder des-registrar el Servicio del Windows primero tenemos que detenerlo como hemos visto mas arriba. 

   Una vez detenido abrimos una sesión de consola y nos situamos en el directorio CD C:/MySQL/bin (o el correspondiente /bin según vuestro directorio de instalación). 

   Y ahora escribimos la orden para des-registrar el Servicio: 

C:\MySQL5\Server\bin\mysqld --remove MySQLxxx

   Con esto le hemos dicho a Windows que se "olvide" del Servicio de MySQL, y ahora no tenemos mas que volver a registrarlo pero dándole un nuevo nombre (e indicándole donde se encuentra el fichero mysql.ini que debe utilizar): 

C:\MySQL5\Server\bin\mysqld --install MySQLyyy --defaults-file="C:\MySQL5\Server\my.ini"

   Y ya está, ahora solo tenemos que iniciar de nuevo el servicio y tendremos cambiados tanto el nombre como el puerto del mismo: 

C:\MySQL5\Server\bin\>net start MySQLyyy

   O hacerlo vía Herramientas Administrativas / Servicios que es lo mismo. 

   Haciendo esto con cada instalación sucesiva de MySQL tenemos todos los servidores que necesitemos. 

   A partir de ahí ya sabéis: El Host puede ser 192.168.1.150:3306 ó 192.168.1.150:3307 para conectar con un MySQL o con el otro. (192.168.1.150 es por ejemplo la IP de mi Servidor) 

   Volver 


Visitas
Totales : 8531 Hoy: 1 Activas: 1 Vistas: 8531

Esta página fue modificada el 07-08-2010 15:44:04

           
 DmSoft PicManía Escribir Unreal