Tutorial básico de MySQL - II

Tutorial básico de MySQL - II
El objetivo de este tutorial es mostrar el uso del programa cliente mysql para crear y usar una base de datos

www.mysql-hispano.org

Fecha de creación: 21 May del 2003 - 05:36 pm

mysql> SELECT nombre. que representan el mes y el día (MM-DD).YEAR(nacimiento)) -> . año.(RIGHT(CURRENT_DATE. y entonces substraer uno si la fecha actual ocurre antes en el calendario que la fecha de nacimiento. por ejemplo. y permite ajustar el valor de la edad en el caso de que el valor MM-DD de la fecha actual ocurra antes del valor MM-DD de la fecha de nacimiento. tenemos que calcular la diferencia de años de la fecha actual y la fecha de nacimiento. +--------+------------+--------------+------+ | nombre | nacimiento | CURRENT_DATE | edad | +--------+------------+--------------+------+ | Fluffy | 1999-02-04 | 2002-12-23 | 3 | | Mau | 1998-03-17 | 2002-12-23 | 4 | | Buffy | 1999-05-13 | 2002-12-23 | 3 | | FanFan | 2000-08-27 | 2002-12-23 | 2 | | Kaiser | 1989-08-31 | 2002-12-23 | 13 | | Chispa | 1998-09-11 | 2002-12-23 | 4 | | Wicho | 2000-02-09 | 2002-12-23 | 2 | | Skim | 2001-04-29 | 2002-12-23 | 1 | | Pelusa | 2000-03-30 | 2002-12-23 | 2 | +--------+------------+--------------+------+ 9 rows in set (0. Cálculos con fechas MySQL proporciona diversas funciones que se pueden usar para efectuar cálculos sobre fechas. -> (YEAR(CURRENT_DATE) .Tutorial básico de MySQL .5)) AS edad FROM mascotas.01 sec) Aquí. para calcular edades o extraer partes de una fecha (día. CURRENT_DATE. pero el resultado puede ser de alguna manera más útil si las filas son presentadas en algún orden. nacimiento. YEAR( ) obtiene únicamente el año y RIGHT( ) obtiene los cinco caracteres más a la derecha de cada una de las fechas. se ha usado un alias (edad) que es el que aparece como etiqueta en la columna que muestra el resultado de la consulta. La parte de la expresión que compara los valores MM-DD se evalúa a 1 o 0. usaremos la siguiente consulta: www. Seguramente se tendrá que leer primero dicho artículo para entender lo que se explica en este documento. Para determinar la edad de cada una de nuestras mascotas. Dado que la expresión en sí es bastante fea. Esta consulta debe trabajar bien. mes.5) < RIGHT(nacimiento.org 1 of 13 . Por ejemplo. Para ello haremos uso de la cláusula ORDER BY. para ordenar por nombre.mysql-hispano. la fecha de nacimiento y la edad para cada mascota. etc). Las siguientes consultas muestran la fecha actual.II Acerca de este documento Esta es la parte complementaria del artículo publicado con anterioridad titulado Tutorial básico de MySQL.

+--------+------------+---------------+------+ | nombre | nacimiento | fallecimiento | edad | +--------+------------+---------------+------+ | Kaiser | 1989-08-31 | 1997-07-29 | 7 | +--------+------------+---------------+------+ 1 row in set (0. +--------+------------+--------------+------+ | nombre | nacimiento | CURRENT_DATE | edad | +--------+------------+--------------+------+ | Skim | 2001-04-29 | 2002-12-23 | 1 | | FanFan | 2000-08-27 | 2002-12-23 | 2 | | Wicho | 2000-02-09 | 2002-12-23 | 2 | | Pelusa | 2000-03-30 | 2002-12-23 | 2 | | Fluffy | 1999-02-04 | 2002-12-23 | 3 | | Buffy | 1999-05-13 | 2002-12-23 | 3 | | Mau | 1998-03-17 | 2002-12-23 | 4 | | Chispa | 1998-09-11 | 2002-12-23 | 4 | | Kaiser | 1989-08-31 | 2002-12-23 | 13 | +--------+------------+--------------+------+ 9 rows in set (0. fallecimiento. nacimiento.5)) -> AS edad FROM mascotas WHERE fallecimiento IS NOT NULL.5) < RIGHT(nacimiento. nacimiento. la condición es que el valor en el campo fallecimiento no sea nulo (NULL).II mysql> SELECT nombre.(RIGHT(CURRENT_DATE. +--------+------------+--------------+------+ | nombre | nacimiento | CURRENT_DATE | edad | +--------+------------+--------------+------+ | Buffy | 1999-05-13 | 2002-12-23 | 3 | | Chispa | 1998-09-11 | 2002-12-23 | 4 | | FanFan | 2000-08-27 | 2002-12-23 | 2 | | Fluffy | 1999-02-04 | 2002-12-23 | 3 | | Kaiser | 1989-08-31 | 2002-12-23 | 13 | | Mau | 1998-03-17 | 2002-12-23 | 4 | | Pelusa | 2000-03-30 | 2002-12-23 | 2 | | Skim | 2001-04-29 | 2002-12-23 | 1 | | Wicho | 2000-02-09 | 2002-12-23 | 2 | +--------+------------+--------------+------+ 9 rows in set (0. -> (YEAR(fallecimiento) .YEAR(nacimiento)) -> .YEAR(nacimiento)) -> .5) < RIGHT(nacimiento. -> (YEAR(CURRENT_DATE) . únicamente tenemos que usar una cláusula ORDER BY diferente: mysql> SELECT nombre. nacimiento.mysql-hispano.01 sec) www. Entonces.5)) -> AS edad FROM mascotas ORDER BY nombre.00 sec) Para ordenar por edad en lugar de nombre.5)) -> AS edad FROM mascotas ORDER BY edad.org 2 of 13 .(RIGHT(CURRENT_DATE.01 sec) Una consulta similar puede ser usada para determinar la edad que tenía una mascota cuando falleció. Para determinar que animalitos ya fallecieron.5) < RIGHT(nacimiento. mysql> SELECT nombre. para los registros con valor no-nulo. CURRENT_DATE. CURRENT_DATE. calculamos la diferencia entre los valores fallecimiento y nacimiento.YEAR(nacimiento)) -> .(RIGHT(fallecimiento.Tutorial básico de MySQL . -> (YEAR(CURRENT_DATE) .

org 3 of 13 . mysql> SELECT nombre. tenemos que buscar los animalitos que nacieron en Enero (mes 1). en vez de fallecimiento < > NULL porque NULL es una valor especial. nacimiento.00 sec) Aquí habrá por supuesto una complicación si el mes actual es Diciembre. nacimiento FROM mascotas WHERE MONTH(nacimiento) = 5.mysql-hispano. el resultado es que siempre obtendremos el mes siguiente. vamos a ejecutar una consulta muy simple que muestra tanto el valor de una fecha como el valor que regresa la función MONTH( ). No podemos simplemente agregar uno al número del mes (12) y buscar los registros cuyo mes de nacimiento sea 13 porque dicho mes no existe. ¿Qué sucede si deseamos conocer cuáles de nuestras mascotas cumplen años el próximo mes? Para este tipo de cálculos. nacimiento FROM mascotas -> WHERE MONTH(nacimiento) = MONTH(DATE_ADD(NOW(). lo mejor es que podemos escribir una consulta que funcione no importando cuál sea el mes actual. +--------+------------+-------------------+ | nombre | nacimiento | MONTH(nacimiento) | +--------+------------+-------------------+ | Fluffy | 1999-02-04 | 2 | | Mau | 1998-03-17 | 3 | | Buffy | 1999-05-13 | 5 | | FanFan | 2000-08-27 | 8 | | Kaiser | 1989-08-31 | 8 | | Chispa | 1998-09-11 | 9 | | Wicho | 2000-02-09 | 2 | | Skim | 2001-04-29 | 4 | | Pelusa | 2000-03-30 | 3 | +--------+------------+-------------------+ 9 rows in set (0. entonces tenemos que buscar los registros cuyo valor de mes sea 5 (Mayo). +--------+------------+ | nombre | nacimiento | +--------+------------+ | Buffy | 1999-05-13 | +--------+------------+ 1 row in set (0. INTERVAL 1 MONTH)). Sin embargo. En vez de esto. simplemente tenemos que extraer el valor del mes en la columna nacimiento. www. MONTH(nacimiento) FROM mascotas. MySQL proporciona diversas funciones para trabajar y manipular fechas. Suponiendo que el mes actual es Abril (valor 4). Esto será explicando más a detalle posteriormente. mysql> SELECT nombre. Como se mencionó anteriormente. Para ver como trabaja.00 sec) Encontrar los animalitos cuyo cumpleaños es el próximo mes es muy sencillo. en este caso haremos uso de la función MONTH( ). Si agregamos un mes al valor regresado por la función NOW( ). La función DATE_ADD( ) nos permite agregar un intervalo de tiempo a una fecha dada.II La consulta usa fallecimiento IS NOT NULL. La consulta que resuelve nuestro problema queda así: mysql> SELECT nombre. el año y el día son irrelevantes. y entonces extraemos el valor del mes con la función MONTH( ).Tutorial básico de MySQL .

1 IS NOT NULL. +-----------+---------------+ | 1 IS NULL | 1 IS NOT NULL | +-----------+---------------+ | 0 | 1 | +-----------+---------------+ 1 row in set (0. de manera similar a las utilerías de Unix tales como vi. El valor que se considera verdadero por default es 1.mysql-hispano. los valores NULL son siempre ordenados primero.org 4 of 13 . grep y sed. +----------+-----------+----------+----------+ | 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL | +----------+-----------+----------+----------+ | NULL | NULL | NULL | NULL | +----------+-----------+----------+----------+ 1 row in set (0. Para verificar si un valor es NULL no podemos usar los operadores de comparación tales como =.Tutorial básico de MySQL . 1 > NULL. Para probar esto ejecutemos la siguiente consulta: mysql> SELECT 1 = NULL. 1 <> NULL. los patrones SQL no son sensibles al uso de mayúsculas y minúsculas. > . Cuando se usa un ORDER BY. La coincidencia de patrones basada en SQL nos permite usar _ (guión bajo) para un solo caracter y % para un arbitrario número de caracteres. aún cuando se use la cláusula DESC. así como también basados en expresiones regulares. o < . 0 o NULL significan falso y cualquier otro valor significa verdadero. Coincidencia de patrones MySQL proporciona métodos de coincidencia de patrones basados en SQL estándar. A continuación se presentan algunos ejemplos. o un valor desconocido. En MySQL. en su lugar se usan los operadores LIKE y NOT LIKE.II Trabajando con valores nulos El valor NULL puede sorprendermos mientras no hayamos trabajado con él. Es importante notar que no se usan los operadores = o < > cuando se usan los patrones SQL. NULL significa un valor que hace falta. Es por ello que tenemos que usar los operadores IS NULL e IS NOT NULL: mysql> SELECT 1 IS NULL. Conceptualmente. 1 < NULL.00 sec) En MySQL. www. y es tratado de una manera diferente a otros valores.00 sec) Claramente observamos que no obtenemos resultados con algún significado con estos operadores.

] coincide con cualquier caracter dentro de los paréntesis cuadrados. los cuáles son sinónimos).II Para encontrar los nombres que comienzan con b: mysql> SELECT * FROM mascotas WHERE nombre LIKE "b%". Algunas características de las expresiones regulares son: » El caracter punto ( .. » Una clase de caracteres [. [0-9]* coincide con cualquier número de digitos. +--------+-------------+---------+------+------------+---------------+ | nombre | propietario | especie | sexo | nacimiento | fallecimiento | +--------+-------------+---------+------+------------+---------------+ | Fluffy | Arnoldo | Gato | f | 1999-02-04 | NULL | | Buffy | Arnoldo | Perro | f | 1999-05-13 | NULL | +--------+-------------+---------+------+------------+---------------+ 2 rows in set (0. b o c.mysql-hispano. y . se usa el guión.* (punto asterisco) coincide concualquier cosa.00 sec) Para encontrar nombres que contienen una s: mysql> SELECT * FROM mascotas WHERE nombre LIKE "%s%". ) coincide con cualquier caracter.. www. Para hacer uso de estos tipos de patrones se tienen que usar los operadores REGEXP y NOT REGEXP ( o RLIKE y NOT RLIKE.01 sec) El otro tipo de coincidencia de patrones proporcionado por MySQL hace uso de expresiones regulares. Para nombrar un rango de caracteres. [abc] coincide con a.Tutorial básico de MySQL . x* coincide con cualquier número de caracteres x. +--------+-------------+---------+------+------------+---------------+ | nombre | propietario | especie | sexo | nacimiento | fallecimiento | +--------+-------------+---------+------+------------+---------------+ | Buffy | Arnoldo | Perro | f | 1999-05-13 | NULL | +--------+-------------+---------+------+------------+---------------+ 1 row in set (0.org 5 of 13 .00 sec) Para encontrar los nombres que finalizan con fy: mysql> SELECT * FROM mascotas WHERE nombre LIKE "%fy". » El caracter asterisco ( * ) coincide con cero o más instancias de lo que le preceda. +--------+-------------+-----------+------+------------+---------------+ | nombre | propietario | especie | sexo | nacimiento | fallecimiento | +--------+-------------+-----------+------+------------+---------------+ | Kaiser | Diana | Perro | m | 1989-08-31 | 1997-07-29 | | Chispa | Omar | Ave | f | 1998-09-11 | NULL | | Skim | Benito | Serpiente | m | 2001-04-29 | NULL | | Pelusa | Diana | Hamster | f | 2000-03-30 | NULL | +--------+-------------+-----------+------+------------+---------------+ 4 rows in set (0. mientras que [0-9] coincide con cualquier digito. Por ejemplo. [a-z] coincide con cualquier letra minúscula. Por ejemplo.

00 sec) Desde la versión 3.) » Para indicar el inicio o el final de un valor que está siendo evaluado se usan los caracteres ^ y $ respectivamente. +--------+-------------+---------+------+------------+---------------+ | nombre | propietario | especie | sexo | nacimiento | fallecimiento | +--------+-------------+---------+------+------------+---------------+ | Buffy | Arnoldo | Perro | f | 1999-05-13 | NULL | +--------+-------------+---------+------+------------+---------------+ 1 row in set (0. mysql> SELECT * FROM mascotas WHERE nombre REGEXP "^[bB]".org 6 of 13 . para forzar que el operador REGEXP sea sensible al uso de mayúsculas y minúsculas. no importando si es mayúscula o minúscula.01 sec) www.4 de MySQL. (Los patrones SQL coinciden únicamente en los valores completos.00 sec) mysql> SELECT * FROM mascotas WHERE nombre REGEXP BINARY "^B".4. Para demostrar como se usan las expresiones regulares.II » El patrón coincide si éste ocurre en cualquier parte del valor que está siendo evaluado.23. +--------+-------------+---------+------+------------+---------------+ | nombre | propietario | especie | sexo | nacimiento | fallecimiento | +--------+-------------+---------+------+------------+---------------+ | Buffy | Arnoldo | Perro | f | 1999-05-13 | NULL | +--------+-------------+---------+------+------------+---------------+ 1 row in set (0.01 sec) Antes de la versión 3. se van a mostrar los ejemplos presentados anteriormente con el operador LIKE. se tiene que usar la palabra clave BINARY para hacer de una de las cadenas.23. mysql> SELECT * FROM mascotas WHERE nombre REGEXP BINARY "^b". Observar los resultados de la siguientes consultas. Para encontrar los nombre que inician con b: mysql> SELECT * FROM mascotas WHERE nombre REGEXP "^b". Empty set (0. una cadena binaria. +--------+-------------+---------+------+------------+---------------+ | nombre | propietario | especie | sexo | nacimiento | fallecimiento | +--------+-------------+---------+------+------------+---------------+ | Buffy | Arnoldo | Perro | f | 1999-05-13 | NULL | +--------+-------------+---------+------+------------+---------------+ 1 row in set (0. así que dependiendo de la versión de MySQL con la que se está trabajando puede que obtengamos o no algún resultado en la consulta anterior. Se puede usar también la siguiente consulta para buscar los nombres que inician con la letra b. ahora con el operador REGEXP. el operador REGEXP era sensible al uso de mayúsculas y minúsculas.Tutorial básico de MySQL .mysql-hispano.

00 sec) Conteo de filas Las bases de datos son usadas frecuentemente para responder una pregunta.II Para encontrar los nombres que finalizan con la palabra fy.Tutorial básico de MySQL . +----------+ | COUNT(*) | +----------+ | 9 | +----------+ 1 row in set (0. La función COUNT( ) es la que nos ayuda en esta situación. mysql> SELECT COUNT(*) FROM mascotas. +--------+-------------+---------+------+------------+---------------+ | nombre | propietario | especie | sexo | nacimiento | fallecimiento | +--------+-------------+---------+------+------------+---------------+ | Fluffy | Arnoldo | Gato | f | 1999-02-04 | NULL | | Buffy | Arnoldo | Perro | f | 1999-05-13 | NULL | +--------+-------------+---------+------+------------+---------------+ 2 rows in set (0.00 sec) Para encontrar los nombres que contienen una letra s.mysql-hispano. COUNT(*) FROM mascotas GROUP BY propietario . Por ejemplo. o cuántas mascotas tiene cada uno de los propietarios. +-------------+----------+ | propietario | COUNT(*) | +-------------+----------+ | Arnoldo | 2 | | Benito | 2 | | Diana | 2 | | Juan | 1 | | Omar | 1 | | Tomás | 1 | +-------------+----------+ 6 rows in set (0. tal vez queremos conocer cuántas mascotas tenemos.00 sec) www. +--------+-------------+-----------+------+------------+---------------+ | nombre | propietario | especie | sexo | nacimiento | fallecimiento | +--------+-------------+-----------+------+------------+---------------+ | Kaiser | Diana | Perro | m | 1989-08-31 | 1997-07-29 | | Chispa | Omar | Ave | f | 1998-09-11 | NULL | | Skim | Benito | Serpiente | m | 2001-04-29 | NULL | | Pelusa | Diana | Hamster | f | 2000-03-30 | NULL | +--------+-------------+-----------+------+------------+---------------+ 4 rows in set (0.org 7 of 13 . mysql> SELECT * FROM mascotas WHERE nombre REGEXP "fy$".00 sec) Si deseamos conocer cuántas mascotas tiene cada uno de los propietarios. "¿Con qué frecuencia ocurre un cierto tipo de dato en una tabla?". Contar el número total de animalitos que tenemos es lo mismo que hacer la siguiente pregunta "¿Cuántas filas hay en la tabla mascotas?" ya que hay un registro por mascota. haremos uso del caracter $. la consulta es la siguiente: mysql> SELECT propietario. la consulta sería: mysql> SELECT * FROM mascotas WHERE nombre REGEXP "s".

sexo. +-----------+------+----------+ | especie | sexo | COUNT(*) | +-----------+------+----------+ | Ave | NULL | 1 | | Ave | f | 1 | | Gato | f | 1 | | Gato | m | 1 | | Hamster | f | 1 | | Perro | f | 1 | | Perro | m | 2 | | Serpiente | m | 1 | +-----------+------+----------+ 8 rows in set (0..01 sec) El número de animalitos por combinación de especie y sexo: mysql> SELECT especie. +-----------+----------+ | especie | COUNT(*) | +-----------+----------+ | Ave | 2 | | Gato | 2 | | Hamster | 1 | | Perro | 3 | | Serpiente | 1 | +-----------+----------+ 5 rows in set (0.org 8 of 13 .mysql-hispano.Tutorial básico de MySQL .) with no GROUP columns is illegal if there is no GROUP BY clause En efecto. sexo . obtendremos un mensaje de error: mysql> SELECT propietario. A continuación se muestran algunos ejemplos.II Se debe notar que se ha usado una cláusula GROUP BY para agrupar todos los registros de cada propietario. ERROR 1140: Mixing of GROUP columns (MIN().MAX(). COUNT(*) FROM mascotas GROUP BY sexo: +------+----------+ | sexo | COUNT(*) | +------+----------+ | NULL | 1 | | f | 4 | | m | 4 | +------+----------+ 3 rows in set (0. Si no hacemos esto.00 sec) El número de animalitos por sexo: mysql> SELECT sexo.00 sec) www.COUNT(). El número de animalitos por especie: mysql> SELECT especie.. COUNT(*) FROM mascotas GROUP BY especie. COUNT(*) FROM mascotas. COUNT(*) FROM mascotas GROUP BY especie . el uso de la función COUNT( ) en conjunto con la cláusula GROUP BY es muy útil en diversas situaciones.

» Una fecha para saber cuando ocurrió el evento.00 sec) Usando más de una tabla La tabla mascotas nos ha servido hasta este momento para tener guardados los datos acerca de los animalitos que tenemos.Tutorial básico de MySQL .necesitaremos de otra tabla. y cuyo sexo es conocido: mysql> SELECT especie. sexo. sexo. +---------+------+----------+ | especie | sexo | COUNT(*) | +---------+------+----------+ | Gato | f | 1 | | Gato | m | 1 | | Perro | f | 1 | | Perro | m | 2 | +---------+------+----------+ 4 rows in set (0. » Un campo que indique el tipo de evento. www. Por ejemplo. +-----------+------+----------+ | especie | sexo | COUNT(*) | +-----------+------+----------+ | Ave | f | 1 | | Gato | f | 1 | | Gato | m | 1 | | Hamster | f | 1 | | Perro | f | 1 | | Perro | m | 2 | | Serpiente | m | 1 | +-----------+------+----------+ 7 rows in set (0.mysql-hispano. COUNT(*) FROM mascotas -> WHERE sexo IS NOT NULL -> GROUP BY especie. sexo . sexo. tal como los eventos en sus vidas -visitas al veterinario. la consulta queda de la siguiente manera: mysql> SELECT especie. COUNT(*) FROM mascotas -> WHERE especie="Perro" OR especie="Gato" -> GROUP BY especie.II No es necesario que se obtengan todos los datos de una tabla cuando se usa la función COUNT( ).org 9 of 13 . Lo que necesitamos es: » El nombre de la mascota para saber a cuál de ellas se refiere el evento. Si deseamos guardar algún otro tipo de información acerca de ellos. » Una descripción del evento.00 sec) O bien. nacimientos de una camada. en la consulta anterior. si deseamos categorizarlos. ¿Cómo deberá estar conformada esta tabla?. para ver únicamente los datos de perritos y gatitos. etc. si deseamos el número de animalitos por sexo.

Dado que este dato está almacenado en la tabla mascotas. mysql> SELECT mascotas. 1 macho 5 perritos. eventos -> WHERE mascotas.12 | 5 perritos.II Dadas estas condiciones.Tutorial básico de MySQL . 3 hembras.org 10 of 13 .05 sec) www. Sin embargo puede suceder que la tabla eventos por sí misma sea insuficiente para darnos las respuestas que necesitamos.28 | 4 gatitos. 3 hembras. 1 hembra. 1 macho | | Buffy | 2. 3 machos | | Buffy | 3. debemos de ser capaces de recuperar algunos datos de la tabla eventos. 2 hembras. la sentencia para crear la tabla eventos queda de la siguiente manera: mysql> CREATE TABLE eventos(nombre varchar(20). fecha date. pero para calcular la edad de la madre. necesitamos sin duda su fecha de nacimiento. -> tipo varchar(15). 1 macho Una pata lastimada Primera vez que se enfermo de la panza Dolor de panza Remodelación de casa El archivo eventos.02 sec) Records: 7 Deleted: 0 Skipped: 0 Warnings: 0 Tomando en cuenta lo que hemos aprendido en la ejecución de consultas sobre la tabla mascotas.txt" INTO TABLE eventos. 7 rows affected (0.10 | 2 perritos. 1 hembra. descripcion varchar(255)). necesitamos de ambas tablas para realizar esta consulta. los principios son los mismos.mysql-hispano. 0 rows affected (0. 1 macho | +--------+------+---------------------------------+ 3 rows in set (0. Query OK. +--------+------+---------------------------------+ | nombre | edad | descripcion | +--------+------+---------------------------------+ | Fluffy | 2. Supongamos que desemos conocer la edad de cada mascota cuando tuvieron una camada. es más fácil cargar los datos de los registros iniciales al crear un archivo de texto delimitado por tabuladores en el que se tenga la siguiente información: nombre Fluffy Buffy Buffy Chispa FanFan FanFan Whicho fecha 2001-05-15 2001-06-23 2002-06-19 2000-03-21 2001-08-27 2002-08-03 2001-02-09 tipo camada camada camada veterinario cumpleaños veterinario cumpleaños descripción 4 gatitos.03 sec) De manera similar a la tabla mascotas. Query OK. -> descripcion FROM mascotas. -> (TO_DAYS(fecha) .nombre=eventos. 3 machos 2 perritos. La tabla eventos indica cuando ocurrió dicho evento.txt Cargamos los datos en este archivo con la siguiente sentencia: mysql> LOAD DATA LOCAL INFILE "eventos.TO_DAYS(nacimiento))/365 AS edad.nombre.nombre -> AND tipo='camada'. 2 hembras.

hemos usado mysql de manera interactiva para ejecutar algunas consultas y ver los resultados.especie -> FROM mascotas AS m1. m2. ambas columnas tienen una columna "nombre". No es necesario que se tengan dos tablas diferentes para que se puedan juntar. www. es necesario especificar los registros de una tabla que pueden coincidir con los registros en la otra tabla. m2. y posteriormente se está ejecutando dicho script.sexo. para encontrar las posibles parejas entre nuestras mascotas de acuerdo a la especie. mascotas AS m2 -> WHERE m1. Esto se hace al anteponer el nombre de la tabla al nombre de la columna. La consulta usa la cláusula WHERE para obtener los registros cuyo valor en dicha columna es el mismo en ambas tablas. Algunas veces es útil juntar una tabla consigo misma si se desean comparar registros de la misma tabla. debemos de especificar a cuál de las columnas nos referimos.sexo="f" AND m2. » Dado que la columna "nombre" ocurre en ambas tablas. es posible usar mysql en modo batch. Usando mysql en modo batch En todos los ejemplos mostrados anteriormente. y entonces decirle a mysql que lea los comandos de dicho archivo: shell> mysql < archivo-batch Si se usa mysql de esta manera. la consulta sería la siguiente: mysql> SELECT m1.mysql-hispano.nombre. Para hacer esto tenemos que poner los comandos que deseamos ejecutar dentro de un archivo.especie=m2. se está creando un pequeño script. y es éste el que se utiliza para referirse a las columnas.especie AND m1. Sin embargo. En nuestro caso.sexo. » Cuando se combina (junta) información de múltiples tablas. Nota: La función TO_DAYS( ) regresa el número de días transcurridos desde el año 0 hasta la fecha dada.II Hay diversas cosas que notar acerca de esta consulta: » La cláusula FROM lista dos tablas dado que la consulta necesita información que se encuentra en ambas tablas.nombre.sexo="m".Tutorial básico de MySQL . +--------+------+--------+------+---------+ | nombre | sexo | nombre | sexo | especie | +--------+------+--------+------+---------+ | Fluffy | f | Mau | m | Gato | | Buffy | f | FanFan | m | Perro | | Buffy | f | Kaiser | m | Perro | +--------+------+--------+------+---------+ 3 rows in set (0. m1.org 11 of 13 . Por ejemplo.00 sec) En esta consulta se ha especificado un alias para el nombre de la tabla. m1.

que cuando se usa de manera interactiva.Tutorial básico de MySQL .org 12 of 13 . Por ejemplo cuando se ejecuta un cron.Si se ejecutan un cierto número de consultas frecuentemente (cada día.Se pueden distribuir los scripts a otras personas para que puedan ejecutar también nuestros comandos y sentencias. En este caso. a pesar de que haya ocurrido un error. es posible que suceda algún error. es indispensable usar el modo batch. Por ejemplo: shell> mysql -h casita -u blueman -p < archivo-batch ¿Por qué usar un script? Aquí hay algunas cuantas razones: . Ver el siguiente ejemplo.mysql-hispano. . shell> mysql < archivo-batch > salida-del-script. . al hacer un script nos evitamos tener que volver a teclear cada una de las consultas. es posible especificar los parámetros de conexión desde la línea de comandos. o cada semana).Se pueden generar nuevas consultas que sean similares a las existentes al copiar y editar estos scripts.En algunas situaciones no se permite el uso interactivo de mysql.Si se están ejecutando consultas que producen una gran cantidad de datos. shell> mysql < archivo-batch | less . Cabe mencionar que el formato de la salida es diferente (más conciso) cuando se ejecuta mysql en modo batch. . www.Al escribir consultas de varias líneas. . es posible usar un paginador para examinar los resultados de una mejor manera.Se puede guardar la salida en un archivo para revisarla posteriormente. se tiene que usar la opción --force shell> mysql --force < archivo-batch Así mismo.II Al ejecutar las sentencias y comandos que se encuentran en el script. Si se desea que se continuen ejecutando las demás sentencias. los scripts ayudan bastante para que no se tengan que escribir todas las líneas nuevamente si se comete algún error.txt .

shell> mysql -t -h casita -u blueman -p < especies-distintas.mysql-hispano.sql Enter password: ****** especie Gato Perro Ave Serpiente Si se desea obtener la salida que proporciona el modo interactivo.sql www.sql Enter password: ****** +-----------+ | especie | +-----------+ | Gato | | Perro | | Ave | | Serpiente | +-----------+ El archivo especies-distintas.Tutorial básico de MySQL .00 sec) Si se ejecuta en modo batch: shell> mysql -h casita -u blueman -p < especies-distintas.org 13 of 13 . se tiene que usar la opción -t.II La consulta es: SELECT DISTINCT especie FROM mascotas. Si se ejecuta en modo interactivo: mysql> SELECT DISTINCT especie FROM mascotas. +-----------+ | especie | +-----------+ | Gato | | Perro | | Ave | | Serpiente | +-----------+ 4 rows in set (0.

Sign up to vote on this title
UsefulNot useful