Hasta ahora hemos creado una base de datos, agregado dos tablas e insertado datos en ambas tablas. Ahora vamos a ver cómo recuperar esos datos. Pero no solo recuperar los datos, sino para consultar la base de datos para ello.
SQL significa Lenguaje de consulta estructurado . Es la Consulta bit que hace que SQL sea tan poderoso. SQL es un lenguaje que le permite ejecutar consultas contra su base de datos. Le permite consultar la base de datos para los datos que desea.
El SQL SELECT
Declaración
Cuando se trata de consultar su base de datos MySQL, el SQL SELECT
declaración hace que todo sea posible. Es probable que esta sea la declaración SQL que usa con más frecuencia cuando trabaja con MySQL. El SELECT
le permite describir a MySQL exactamente qué datos desea que recupere.
Considere la siguiente instrucción SQL:
SELECT * FROM Fruit;
Aquí está el resultado:

Este es el SELECT
declaración en su forma más simple. La instrucción SQL anterior recupera todos los registros de
Fruit
mesa.
El asterisco (*
) le dice a MySQL que devuelva todas las columnas. Esto nos ahorra tiempo y esfuerzo. Sin esto, necesitaríamos escribir los nombres de todas las columnas que nos gustaría haber devuelto.
Habiendo dicho eso, también puede decirle a MySQL que devuelva solo aquellas columnas que desea devolver. Esto se hace nombrando solo aquellas columnas que le gustaría haber devuelto. Así:
SELECT FruitId, FruitName FROM Fruit;
Aquí está el resultado:

La instrucción SQL anterior selecciona el FruitId y Nombre de la fruta columnas de Fruit mesa.
Hacer esto puede reducir el desorden para que solo vea las columnas que le interesan. También puede mejorar el rendimiento, porque MySQL (y cualquier aplicación que use) no necesita usar recursos valiosos para devolver datos innecesarios.
Nuevamente, esta consulta recupera todos registros de la tabla:MySQL devolverá todos los registros a menos que se especifique lo contrario.
El WHERE
Cláusula
Puedes agregar el WHERE
cláusula para limitar el conjunto de resultados a solo aquellos registros que le interesen. Así:
SELECT * FROM Fruit WHERE UnitId = 1;
Resultado:

La consulta anterior devuelve todos los registros de
Fruit
tabla donde el
UnitId
la columna tiene un valor de 1
.
Subconsultas — SELECT
anidadas Declaraciones
¿Qué pasaría si no supiéramos el
UnitId
? ? ¿Qué pasaría si solo supiéramos buscar esos registros con un nombre de unidad de Piece
?
¡Fácil! Podríamos reescribir el ejemplo anterior para usar un SELECT
anidado declaración (también conocida como subconsulta ) que consulta otra tabla (las
Unidades
mesa). Hacer esto nos permitirá usar la unidad real nombre (en lugar de su ID) porque la segunda tabla contiene esto en el UnitName
campo:
SELECT * FROM Fruit WHERE UnitId = (SELECT UnitId FROM Units WHERE UnitName = 'Piece');
Resultado:

Aquí usamos un SELECT
anidado declaración (es decir, un SELECT
declaración dentro de un SELECT
instrucción) para consultar las
Unidades
tabla para el
UnitId
del registro que contiene Piece
como su
UnitName
valor. Podemos hacer esto porque
Fruit.UnitId
la columna es una clave externa a
Units.UnitId
columna.
Aquí hay más ejemplos de subconsultas si está interesado.
Usando un SQL JOIN
Yendo un paso más allá, podríamos reescribir nuestro SELECT
anidado declaración en un INNER JOIN
.
En SQL, un JOIN
le permite consultar varias tablas que comparten datos. En nuestro caso, ambas tablas comparten el UnitId
por lo que podría decir que están "unidos" por este campo.
Hay diferentes tipos de uniones en SQL, sin embargo, estamos principalmente interesados en INNER JOIN
por ahora.
La INNER JOIN
la sintaxis es así:
SELECT * FROM table_name_1 INNER JOIN table_name_2 ON table_name_1.column_name = table_name_2.column_name
Entonces podríamos reescribir nuestra subconsulta del ejemplo anterior a lo siguiente:
SELECT Fruit.* FROM Fruit INNER JOIN Units ON Fruit.UnitId = Units.UnitId WHERE Units.UnitName = 'Piece';
Resultado:

Especificamos Fruit.*
en lugar de solo *
porque solo queríamos devolver todas las columnas de
Fruit
mesa. Si hubiéramos usado *
, la consulta habría devuelto todas las columnas de ambas tablas.
Consulte también LEFT JOIN
y RIGHT JOIN
para ver cómo puede obtener diferentes datos según el tipo de unión.
Subconsulta vs JOIN
?
Ahora que ha visto dos métodos para lograr el mismo resultado, probablemente se esté preguntando cuál es mejor.
Las subconsultas tienden a ser más legibles (y quizás más fáciles de comprender), lo que puede hacer que sea más fácil de entender para los principiantes.
Sin embargo, muchos programadores de SQL encuentran JOIN
Es más eficiente y funciona mejor. Si encuentra problemas de rendimiento con sus consultas o una aplicación, intente convertir cualquier subconsulta en JOIN
s o viceversa (en algunos casos, una subconsulta podría funcionar mejor).
Además, puede haber casos en los que una subconsulta sea su única opción, así que esto también es una consideración.
Más Operadores
Nuestras consultas hasta ahora han contenido un signo igual (=
). Esto se llama un operador . Más específicamente, es un operador de comparación ya que compara una expresión con otra.
Hay muchos más operadores que puede utilizar en sus consultas. Estos pueden ser de gran ayuda para reducir el conjunto de resultados a solo los registros que necesita. No es raro que una base de datos contenga millones de registros. Incluso si solo tiene miles de registros, tratar de encontrar un registro (o incluso un puñado) entre miles sería una tarea abrumadora si no tuviera estos operadores a su disposición.
Estos son algunos de los operadores SQL más utilizados.
El >
Operador
Puedes usar el >
operador para seleccionar datos que son mayores que un valor dado.
SELECT * FROM Fruit WHERE Inventory > 10;
El <
Operador
Puedes usar el <
operador para seleccionar datos que son menos que un valor dado.
SELECT * FROM Fruit WHERE Inventory < 10;
El <>
Operador
Puedes usar el <>
operador para seleccionar datos que son menores que y mayor que un valor dado.
SELECT * FROM Fruit WHERE Inventory <> 10;
El >=
Operador
Puedes usar el >=
operador para seleccionar datos que son mayores o iguales a un valor dado.
SELECT * FROM Fruit WHERE Inventory >= 10;
El <=
Operador
Puede usar el <=
operador para seleccionar datos que son menores o iguales a un valor dado.
SELECT * FROM Fruit WHERE Inventory <= 10;
El AND
Operador
Puede agregar un AND
operador al WHERE
cláusula para limitar su selección a solo aquellos registros que cumplan dos condiciones (o más si incluye más AND
operadores).
He aquí un ejemplo:
SELECT * FROM Fruit WHERE Inventory > 10 AND DateEntered > '2015-01-15';
El OR
Operador
Puedes usar un OR
operador para ampliar su selección a más de un criterio. Como sugiere el nombre, OR
cláusula le permite seleccionar datos donde el criterio es este O ese. Entonces el AND
operador límites su selección y el OR
operador amplia eso.
He aquí un ejemplo:
SELECT * FROM Fruit WHERE UnitId = 1 OR UnitId = 2;
El BETWEEN
Operador
Usa el BETWEEN
operador para seleccionar datos que se encuentran entre dos valores dados.
SELECT * FROM Fruit WHERE DateEntered BETWEEN '2015-01-25' AND '2015-02-25';
El NOT
Operador
Usa el NOT
operador para seleccionar datos que no equivalente a una condición dada.
SELECT * FROM Fruit WHERE NOT (FruitName = 'Apple');