sql >> Base de Datos >  >> RDS >> Mysql

Consultas MySQL

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');