13 sept 2012

Consultas en MySQL



Seleccionar todos los datos de una tabla
Después de insertar datos en la tabla, probablemente queramos revisar si los datos están guardados correctamente. Para hacer, usamos la sentencia SELECT.

La Sintaxis de Select es

SELECT what_to_select from tbl_name;

Para ver todos los datos de la tabla, usamos el ejemplo siguiente.
mysql> select * from student;
+--------+---------+-------+------------------+---------+
| studid | name    | marks | address          | phone   |
+--------+---------+-------+------------------+---------+
|      1 | steve   |   100 | 5th cross street | 2456987 |
|      2 | david   |    98 | welling street   |  547896 |
+--------+---------+-------+------------------+---------+

El ejemplo de arriba listará los detalles completos de la tabla student. Aqui * seleccionará todas las columnas de la tabla.

Cómo seleccionar una columna en particular
Podemos seleccionar una columna en particular para ver, obtener las filas enteras. Supón que quieres ver el nombre del student solo; para ello usamos el ejemplo siguiente.

mysql> select name from student;
+---------+
| name    |
+---------+
| steve   |
| david   |
+---------+

Cómo seleccionar múltiples columnas
Podemos también seleccionar múltiples columnas, separando con comas como en el ejemplo siguiente.
mysql> select name, marks from student;
+---------+-------+
| name    | marks |
+---------+-------+
| steve   |   100 |
| david   |    98 |
+---------+-------+ 
En el ejemplo de arriba, hemos seleccionado name y marks de la tabla student.

Cómo seleccionar las filas en una forma ordenada
En las muestras precedentes, el ejemplo para las filas seleccionadas son mostradas en orden no particular. Tambien podemos seleccionar las filas mostrandose en un formato ordenado usando la cláusula ORDER BY.

El siguiente ejemplo de muestra ordenará las filas en orden ascendente según las marks.

mysql> select name, marks from student order by marks;
+---------+-------+
| name    | marks |
+---------+-------+
| michael |    75 |
| steve   |    75 |
+---------+-------+ 
También podemos ordenar las filas en orden descendente. En el ejemplo siguiente de muestra las marks son ordenadas en orden descendente.

mysql> select name, marks from student order by marks desc;
+---------+-------+
| name    | marks |
+---------+-------+
| steve   |   100 |
| anne    |   100 |
+---------+-------+ 

Cómo seleccionar múltiples filas y columnas en una manera ordenada
También podemos ordenar múltiples columnas en diferentes direcciones como se muestra en el ejemplo siguiente.

mysql> select name, marks, address from student order by name,
marks desc;
+---------+-------+------------------+
| name    | marks | address          |
+---------+-------+------------------+
| anne    |   100 | downing street   |
| anne    |    80 | edinburgh        |
+---------+-------+------------------+

Cómo usar 'where' en la sentencia select
Podemos seleccionar una fila en particular usando la cláusula sentencia WHERE. También podemos revisar cualquier condición usando la cláusula o palabra clave WHERE. Donde la condición viene de la mano cuando estamos usando una tabla grande con muchos y grandes volúmenes de datos pero puede que queramos ver solo un número pequeño de filas que satisfagan una condición.

La sintaxis de select where eis

SELECT what_to_select FROM tbl_name WHERE conditions_to_satisfy;

    Aquí conditions_to_satisfy especifica una o más condiciones que las filas deben satisfacer para clasificarse y aparecer.

    Veamos un ejemplo de muestra para obtener un dato simple de student usando WHERE.
mysql> select * from student where name = 'jack';
+--------+------+-------+-----------------+---------+
| studid | name | marks | address         | phone   |
+--------+------+-------+-----------------+---------+
|      4 | jack |    82 | victoria street | 2436821 |
+--------+------+-------+-----------------+---------+
1 row in set (0.00 sec)
    Aquí en el ejemplo de muestra de arriba hemos obtenido detalles simples para student. Supon que si queremos recivier los detalles de 'studen' que hayan aprobados más de 90 notas, podemos usar el ejemplo siguiente.

mysql> select * from student where marks > 90;
+--------+-------+-------+------------------+---------+
| studid | name  | marks | address          | phone   |
+--------+-------+-------+------------------+---------+
|      1 | steve |   100 | 5th cross street | 2456987 |
|      2 | david |    98 | welling street   |  547896 |
|      5 | anne  |   100 | downing street   | 2634821 |
|      8 | mille |    98 | victoria street  | 1236547 |
+--------+-------+-------+------------------+---------+
4 rows in set (0.05 sec)

Cómo usar el operador LIKE o NOT LIKE
Algunas veces podemos necesitar ver la tabla con un carácter comparable. En MySQL usamos LIKE o NOT LIKE para la comparación. EIn MySQL los patrones son sensibles a las mayúsculas por defecto.
    
Let us consider an example query to display the student names starting with the letter M.

mysql> select * from student where name like 'm%';
+--------+---------+-------+-----------------+---------+
| studid | name    | marks | address         | phone   |
+--------+---------+-------+-----------------+---------+
|      3 | michael |    75 | edinburgh       | 2598234 |
|      8 | mille   |    98 | victoria street | 1236547 |
+--------+---------+-------+-----------------+---------+
2 rows in set (0.01 sec)
    En el ejemplo de muestra de arriba listará todos los nombres que empiecen por M de la tabla student.

    El ejemplo de muestra siguiente listará los nombres que acaben por la letra e.

mysql> select * from student where name like '%e';
+--------+-------+-------+------------------+---------+
| studid | name  | marks | address          | phone   |
+--------+-------+-------+------------------+---------+
|      1 | steve |   100 | 5th cross street | 2456987 |
|      5 | anne  |   100 | downing street   | 2634821 |
|      6 | steve |    75 | downing street   | 2874698 |
|      7 | anne  |    80 | edinburgh        | 2569843 |
|      8 | mille |    98 | victoria street  | 1236547 |
+--------+-------+-------+------------------+---------+
5 rows in set (0.00 sec)
    También podemos listar los nombres que contienen una letra específica en cualquier lugar. El siguiente ejemplo de muestra listará los nombres que contienen la letra "a".

mysql> select * from student where name like '%a%';
+--------+---------+-------+-----------------+---------+
| studid | name    | marks | address         | phone   |
+--------+---------+-------+-----------------+---------+
|      2 | david   |    98 | welling street  |  547896 |
|      3 | michael |    75 | edinburgh       | 2598234 |
|      4 | jack    |    82 | victoria street | 2436821 |
|      5 | anne    |   100 | downing street  | 2634821 |
|      7 | anne    |    80 | edinburgh       | 2569843 |
+--------+---------+-------+-----------------+---------+
5 rows in set (0.00 sec)
    Supón que si queremos encontrar nombres que contienen exactamente cinco caracteres, usaremos una carater especial "_" (guión bajo). El siguiente ejemplo de muestra listará todos los nombres de cinco letras de la tabla student.

mysql> select * from student where name like '_____';
+--------+-------+-------+------------------+---------+
| studid | name  | marks | address          | phone   |
+--------+-------+-------+------------------+---------+
|      1 | steve |   100 | 5th cross street | 2456987 |
|      2 | david |    98 | welling street   |  547896 |
|      6 | steve |    75 | downing street   | 2874698 |
|      8 | mille |    98 | victoria street  | 1236547 |
+--------+-------+-------+------------------+---------+
4 rows in set (0.00 sec)
Cómo seleccionar las columnas usando la cláusula Group by
La cláusula Group by clause es usada para mostrar las filas y columnas agrupadas por columnas selectivas. Puede usarse para ver las funciones agregadas, como count().

    El siguiente ejemplo de muestra listará el nombre del student y también contará los nombres repetidos usando Group By en la sentencia select.
mysql> select name, count(name) from student group by name;
+-------+-------------+
| name  | count(name) |
+-------+-------------+
| anne  |           2 |
| david |           1 |
| jack  |           1 |
| mille |           1 |
| steve |           2 |
+-------+-------------+
5 rows in set (0.03 sec)
    El ejemplo siguiente mostrará el nombre y la suma d elas notas del student usando la cláusula groupby.
mysql> select name,sum(marks),count(*) from students group by name;
+----------+------------+----------+
| name     | sum(marks) | count(*) |
+----------+------------+----------+
| anne     |        175 |        2 |
| maichael |         82 |        1 |
| mike     |        182 |        2 |
| rock     |        100 |        1 |
| steve    |        175 |        2 |
+----------+------------+----------+
5 rows in set (0.00 sec)