Archivo de la Categoría “Tutorial Basico Mysql”


Mysql

Ordenando registros

Se debe notar en los ejemplos anteriores que las filas regresadas son mostradas sin ningún orden en particular. Sin embargo, frecuentemente es más fácil examinar la salida de una consulta cuando las filas son ordenadas en alguna forma útil. Para ordenar los resultados, tenemos que usar una cláusula ORDER BY.

Aquí aparecen algunos datos ordenados por fecha de nacimiento:

mysql> SELECT nombre, nacimiento FROM mascotas ORDER BY nacimiento;
+--------+------------+
| nombre | nacimiento |
+--------+------------+
| Kaiser | 1989-08-31 |
| Mau    | 1998-03-17 |
| Chispa | 1998-09-11 |
| Fluffy | 1999-02-04 |
| Buffy  | 1999-05-13 |
| Wicho  | 2000-02-09 |
| Pelusa | 2000-03-30 |
| FanFan | 2000-08-27 |
| Skim   | 2001-04-29 |
+--------+------------+
9 rows in set (0.00 sec)

En las columnas de tipo caracter, el ordenamiento es ejecutado normalmente de forma no sensitiva, es decir, no hay diferencia entre mayúsculas y minúsculas. Sin embargo, se puede forzar un ordenamiento sensitivo al usar el operador BINARY.

Para ordenar en orden inverso, debemos agregar la palabra clave DESC al nombre de la columna que estamos usando en el ordenamiento:

mysql> SELECT nombre, nacimiento FROM mascotas ORDER BY
    -> nacimiento DESC;
+--------+------------+
| nombre | nacimiento |
+--------+------------+
| Skim   | 2001-04-29 |
| FanFan | 2000-08-27 |
| Pelusa | 2000-03-30 |
| Wicho  | 2000-02-09 |
| Buffy  | 1999-05-13 |
| Fluffy | 1999-02-04 |
| Chispa | 1998-09-11 |
| Mau    | 1998-03-17 |
| Kaiser | 1989-08-31 |
+--------+------------+
9 rows in set (0.00 sec)

Podemos ordenar múltiples columnas. Por ejemplo, para ordenar por tipo de animal, y poner al inicio los animalitos más pequeños de edad, usaremos la siguiente consulta:

mysql> SELECT nombre, especie, nacimiento FROM mascotas
    -> ORDER BY especie, nacimiento DESC;
+--------+-----------+------------+
| nombre | especie   | nacimiento |
+--------+-----------+------------+
| Wicho  | Ave       | 2000-02-09 |
| Chispa | Ave       | 1998-09-11 |
| Fluffy | Gato      | 1999-02-04 |
| Mau    | Gato      | 1998-03-17 |
| Pelusa | Hamster   | 2000-03-30 |
| FanFan | Perro     | 2000-08-27 |
| Buffy  | Perro     | 1999-05-13 |
| Kaiser | Perro     | 1989-08-31 |
| Skim   | Serpiente | 2001-04-29 |
+--------+-----------+------------+
9 rows in set (0.00 sec)

Notar que la palabra clave DESC aplica sólo a la columna nombrada que le precede.
 

Via: Mysql Hispano

Tags:

Comments No Hay Comentarios »

Mysql

- Seleccionando columnas particulares

Si no deseamos ver los registros completos de una tabla, entonces tenemos que usar los nombres de las columnas en las que estamos interesados separándolas por coma. Por ejemplo, si deseamos conocer la fecha de nacimiento de nuestras mascotas, debemos seleccionar la columna “nombre” y “nacimiento”:

mysql> SELECT nombre, nacimiento FROM mascotas;
+--------+------------+
| nombre | nacimiento |
+--------+------------+
| Fluffy | 1999-02-04 |
| Mau    | 1998-03-17 |
| Buffy  | 1999-05-13 |
| FanFan | 2000-08-27 |
| Kaiser | 1989-08-31 |
| Chispa | 1998-09-11 |
| Wicho  | 2000-02-09 |
| Skim   | 2001-04-29 |
| Pelusa | 2000-03-30 |
+--------+------------+
9 rows in set (0.00 sec)

Para conocer quién tiene alguna mascota, usaremos la siguiente consulta:

mysql> SELECT propietario FROM mascotas;
+-------------+
| propietario |
+-------------+
| Arnoldo     |
| Juan        |
| Arnoldo     |
| Benito      |
| Diana       |
| Omar        |
| Tomás       |
| Benito      |
| Diana       |
+-------------+
9 rows in set (0.00 sec)

Sin embargo, debemos notar que la consulta recupera el nombre del propietario de cada mascota, y algunos de ellos aparecen más de una vez. Para minimizar la salida, agregaremos la palabra clave DISTINCT:

mysql> SELECT DISTINCT propietario FROM mascotas;
+-------------+
| propietario |
+-------------+
| Arnoldo     |
| Juan        |
| Benito      |
| Diana       |
| Omar        |
| Tomás       |
+-------------+
6 rows in set (0.03 sec)

Se puede usar también una claúsula WHERE para combinar selección de filas con selección de columnas. Por ejemplo, para obtener la fecha de nacimiento de los perritos y los gatitos, usaremos la siguiente consulta:

mysql> SELECT nombre, especie, nacimiento FROM mascotas
    -> WHERE especie = "perro" OR especie = "gato";
+--------+---------+------------+
| nombre | especie | nacimiento |
+--------+---------+------------+
| Fluffy | Gato    | 1999-02-04 |
| Mau    | Gato    | 1998-03-17 |
| Buffy  | Perro   | 1999-05-13 |
| FanFan | Perro   | 2000-08-27 |
| Kaiser | Perro   | 1989-08-31 |
+--------+---------+------------+
5 rows in set (0.00 sec)

 

Via: Mysql Hispano

Tags:

Comments No Hay Comentarios »

Mysql

- Seleccionando registros particulares

Podemos seleccionar sólo registros particulares de una tabla. Por ejemplo, si deseamos verificar el cambio que hicimos a la fecha de nacimiento de Kaiser, seleccionamos sólo el registro de Kaiser de la siguiente manera:

mysql> SELECT * FROM mascotas WHERE nombre="Kaiser";
+--------+-------------+---------+------+------------+--------------+
| nombre | propietario | especie | sexo | nacimiento | fallecimento |
+--------+-------------+---------+------+------------+--------------+
| Kaiser | Diana       | Perro   | m    | 1989-08-31 | 1997-07-29   |
+--------+-------------+---------+------+------------+--------------+
1 row in set (0.00 sec)

La salida mostrada confirma que el año ha sido corregido de 1998 a 1989.

La comparación de cadenas es normalmente no sensitiva, así que podemos especificar el nombre como “kaiser”, “KAISER”, etc. El resultado de la consulta será el mismo.

Podemos además especificar condiciones sobre cualquier columna, no sólo el “nombre”. Por ejemplo, si deseamos conocer qué mascotas nacieron después del 2000, tendríamos que usar la columna “nacimiento”:

mysql> SELECT * FROM mascotas WHERE nacimiento >= "2000-1-1";
+--------+-------------+-----------+------+------------+---------------+
| nombre | propietario | especie   | sexo | nacimiento | fallecimiento |
+--------+-------------+-----------+------+------------+---------------+
| FanFan | Benito      | Perro     | m    | 2000-08-27 | NULL          |
| Wicho  | Tomás       | Ave       | NULL | 2000-02-09 | NULL          |
| Skim   | Benito      | Serpiente | m    | 2001-04-29 | NULL          |
| Pelusa | Diana       | Hamster   | f    | 2000-03-30 | NULL          |
+--------+-------------+-----------+------+------------+---------------+
4 rows in set (0.00 sec)

Podemos también combinar condiciones, por ejemplo, para localizar a los perros hembras:

mysql> SELECT * FROM mascotas WHERE especie="Perro" AND sexo="f";
+--------+-------------+---------+------+------------+---------------+
| nombre | propietario | especie | sexo | nacimiento | fallecimiento |
+--------+-------------+---------+------+------------+---------------+
| Buffy  | Arnoldo     | Perro   | f    | 1999-05-13 | NULL          |
+--------+-------------+---------+------+------------+---------------+
1 row in set (0.00 sec)

La consulta anterior usa el operador lógico AND. Hay también un operador lógico OR:

mysql> SELECT * FROM mascotas WHERE especie = "Ave" OR especie = "Gato";
+--------+-------------+---------+------+------------+---------------+
| nombre | propietario | especie | sexo | nacimiento | fallecimiento |
+--------+-------------+---------+------+------------+---------------+
| Fluffy | Arnoldo     | Gato    | f    | 1999-02-04 | NULL          |
| Mau    | Juan        | Gato    | m    | 1998-03-17 | NULL          |
| Chispa | Omar        | Ave     | f    | 1998-09-11 | NULL          |
| Wicho  | Tomás       | Ave     | NULL | 2000-02-09 | NULL   |
+--------+-------------+---------+------+------------+---------------+
4 rows in set (0.00 sec)

El operador AND y el operador OR pueden ser intercambiados. Si hacemos esto, es buena idea usar paréntesis para indicar como deben ser agrupadas las condiciones:

mysql> SELECT * FROM mascotas WHERE (especie = "Gato" AND sexo = "m")
    -> OR (especie = "Perro" AND sexo = "f");
+--------+-------------+---------+------+------------+---------------+
| nombre | propietario | especie | sexo | nacimiento | fallecimiento |
+--------+-------------+---------+------+------------+---------------+
| Mau    | Juan        | Gato    | m    | 1998-03-17 | NULL          |
| Buffy  | Arnoldo     | Perro   | f    | 1999-05-13 | NULL          |
+--------+-------------+---------+------+------------+---------------+
2 rows in set (0.00 sec)

 

Via: Mysql Hispano

Tags:

Comments No Hay Comentarios »

Mysql

Recuperando información de una tabla

La sentencia SELECT es usada para obtener la información guardada en una tabla. La forma general de esta sentencia es:

SELECT LaInformaciónQueDeseamos FROM DeQueTabla WHERE CondiciónASatisfacer

Aquó, LaInformaciónQueDeseamos es la información que queremos ver. Esta puede ser una lista de columnas, o un * para indicar “todas las columnas”. DeQueTabla indica el nombre de la tabla de la cual vamos a obtener los datos. La claúsula WHERE es opcional. Si está presente, la CondiciónASatisfacer especifica las condiciones que los registros deben satisfacer para que puedan ser mostrados.

- Seleccionando todos los datos

La manera más simple de la sentencia SELECT es cuando se recuperan todos los datos de una tabla:

mysql> SELECT * FROM mascotas;
+--------+-------------+-----------+------+------------+---------------+
| nombre | propietario | especie   | sexo | nacimiento | fallecimiento |
+--------+-------------+-----------+------+------------+---------------+
| Fluffy | Arnoldo     | Gato      | f    | 1999-02-04 | NULL          |
| Mau    | Juan        | Gato      | m    | 1998-03-17 | NULL          |
| Buffy  | Arnoldo     | Perro     | f    | 1999-05-13 | NULL          |
| FanFan | Benito      | Perro     | m    | 2000-08-27 | NULL          |
| Kaiser | Diana       | Perro     | m    | 1998-08-31 | 1997-07-29    |
| Chispa | Omar        | Ave       | f    | 1998-09-11 | NULL          |
| Wicho  | Tomás       | Ave       | NULL | 2000-02-09 | NULL          |
| Skim   | Benito      | Serpiente | m    | 2001-04-29 | NULL          |
| Pelusa | Diana       | Hamster   | f    | 2000-03-30 | NULL          |
+--------+-------------+-----------+------+------------+---------------+
9 rows in set (0.00 sec)

Esta forma del SELECT es útil si deseamos ver los datos completos de la tabla, por ejemplo, para asegurarnos de que están todos los registros después de la carga de un archivo.

Por ejemplo, en este caso que estamos tratando, al consultar los registros de la tabla, nos damos cuenta de que hay un error en el archivo de datos (mascotas.txt): parece que Kaiser ha nacido después de que ha fallecido!. Al revisar un poco el pedigree de Kaiser encontramos que la fecha correcta de nacimiento es el año 1989, no 1998.

Hay por lo menos un par de maneras de solucionar este problema:

Editar el archivo “mascotas.txt” para corregir el error, eliminar los datos de la tabla mascotas con la sentencia DELETE, y cargar los datos nuevamente con el comando LOAD DATA:

mysql> DELETE FROM mascotas;
mysql> LOAD DATA LOCAL INFILE “mascotas.txt” INTO TABLE mascotas;

Sin embargo, si hacemos esto, debemos ingresar los datos de Pelusa, la mascota de nuestra hermana Diana.

La segunda opción consiste en corregir sólo el registro erróneo con una sentencia UPDATE:

mysql> UPDATE mascotas SET nacimiento=”1989-08-31″ WHERE nombre=”Kaiser”;

Como se mostró anteriormente, es muy fácil recuperar los datos de una tabla completa. Pero tópicamente no deseamos hacer esto, particularmente cuando las tablas son demasiado grandes. En vez de ello, estaremos más interesados en responder preguntas particulares, en cuyo caso debemos especificar algunas restricciones para la información que deseamos ver.

 

Via: Mysql Hispano

Tags:

Comments No Hay Comentarios »

Mysql

Cargando datos en una tabla

Después de haber creado la tabla, ahora podemos incorporar algunos datos en ella, para lo cual haremos uso de las sentencias INSERT y LOAD DATA.

Supongamos que los registros de nuestras mascotas pueden ser descritos por los datos mostrados en la siguiente tabla.

Nombre Propietario Especie Sexo Nacimiento Fallecimento
Fluffy Arnoldo Gato f 1999-02-04
Mau Juan Gato m 1998-03-17
Buffy Arnoldo Perro f 1999-05-13
FanFan Benito Perro m 2000-08-27
Kaiser Diana Perro m 1998-08-31 1997-07-29
Chispa Omar Ave f 1998-09-11
Wicho Tomás Ave 2000-02-09
Skim Benito Serpiente m 2001-04-29

Debemos observar que MySQL espera recibir fechas en el formato YYYY-MM-DD, que puede ser diferente a lo que nosotros estamos acostumbrados.

Ya que estamos iniciando con una tabla vacía, la manera más fácil de poblarla es crear un archivo de texto que contenga un registro por línea para cada uno de nuestros animalitos para que posteriormente carguemos el contenido del archivo en la tabla únicamente con una sentencia.

Por tanto, debemos de crear un archivo de texto “mascotas.txt” que contenga un registro por línea con valores separados por tabuladores, cuidando que el orden de las columnas sea el mismo que utilizamos en la sentencia CREATE TABLE. Para valores que no conozcamos podemos usar valores nulos (NULL). Para representar estos valores en nuestro archivo debemos usar \N.

El archivo mascotas.txt

Para cargar el contenido del archivo en la tabla mascotas, usaremos el siguiente comando:

mysql> LOAD DATA LOCAL INFILE “mascotas.txt” INTO TABLE mascotas;

La sentencia LOAD DATA nos permite especificar cuál es el separador de columnas, y el separador de registros, por default el tabulador es el separador de columnas (campos), y el salto de línea es el separador de registros, que en este caso son suficientes para que la sentencia LOAD DATA lea correctamente el archivo “mascotas.txt”.

Si lo que deseamos es añadir un registro a la vez, entonces debemos hacer uso de la sentencia INSERT. En la manera más simple, debemos proporcionar un valor para cada columna en el orden en el cual fueron listados en la sentencia CREATE TABLE. Supongamos que nuestra hermana Diana compra un nuevo hamster nombrado Pelusa. Podemos usar la sentencia INSERT para agregar su registro en nuestra base de datos.

mysql> INSERT INTO mascotas
-> VALUES(’Pelusa’,'Diana’,'Hamster’,'f’,'2000-03-30′,NULL);

Notar que los valores de cadenas y fechas deben estar encerrados entre comillas. También, con la sentencia INSERT podemos insertar el valor NULL directamente para representar un valor nulo, un valor que no conocemos. En este caso no se usa \N como en el caso de la sentencia LOAD DATA.

De este ejemplo, debemos ser capaces de ver que es un poco más la tarea que se tiene que realizar si inicialmente cargamos los registros con varias sentencias INSERT en lugar de una única sentencia LOAD DATA.

 

Via: Mysql Hispano

Tags:

Comments No Hay Comentarios »