Chuleta de SQL
SQL, o Structured Query Language (lenguaje de consulta FULL JOIN
estructurada), es un lenguaje para comunicarse con bases de FILTRAR RESULTADOS CONSULTAR A VARIAS TABLAS
FULL JOIN (o explícitamente FULL OUTER JOIN) devuelve
datos. Se utiliza para seleccionar datos específicos y crear OPERADORES DE COMPARACIÓN INNER JOIN todas las filas de ambas tablas. Si no coincide ninguna fila de la
informes complejos. Hoy en día, SQL es un lenguaje de datos Recuperar los nombres de las ciudades cuya clasificación sea JOIN (o explícitamente INNER JOIN) devuelve las filas en las otra tabla, devuelve valores NULL.
universal y se utiliza en prácticamente todas las tecnologías que superior a 3: que coinciden los valores en ambas tablas. SELECT [Link], [Link]
procesan datos. SELECT nombre SELECT [Link], [Link] FROM ciudad
FROM ciudad FROM ciudad FULL [OUTER] JOIN pais
EJEMPLO DE DATOS WHERE clasificacion > 3; [INNER] JOIN pais ON ciudad.id_pais = [Link];
PAIS ON ciudad.id_pais = [Link]; CIUDAD PAIS
CIUDAD PAIS id nombre id_pais id nombre
id nombre poblacion superficie Recuperar los nombres de las ciudades que no sean ni Berlín ni
id nombre id_pais id nombre 1 París 1 1 Francia
1 Francia 66600000 640680 Madrid:
1 París 1 1 Francia
SELECT nombre 2 Berlín 2 2 Alemania
2 Alemania 80700000 357000 FROM ciudad 2 Berlín 2 2 Alemania 3 Varsovia 4 NULL NULL
... ... ... ... WHERE nombre != 'Berlín' 3 Varsovia 4 3 Islandia NULL NULL NULL 3 Islandia
AND nombre != 'Madrid';
CIUDAD
id nombre id_pais poblacion clasificacion
OPERADORES DE TEXTO CROSS JOIN
1 París 1 2243000 5
CROSS JOIN devuelve todas las combinaciones posibles de las
2 Berlín 2 3460000 3
Recuperar los nombres de las ciudades que empiecen por "P" o LEFT JOIN filas de las dos tablas. Se puede usar con dos sintaxis diferentes.
terminen por "s": LEFT JOIN devuelve todas las filas de la tabla izquierda con las
... ... ... ... ... SELECT [Link], [Link]
SELECT nombre filas correspondientes de la tabla derecha. Si no coincide ninguna FROM ciudad
FROM ciudad fila de la tabla derecha, devuelve NULL como valores de la tabla
CONSULTAR A UNA SOLA TABLA WHERE nombre LIKE 'P%' derecha.
CROSS JOIN pais;
Recuperar todas las columnas de la tabla pais: OR nombre LIKE '%s'; SELECT [Link], [Link] SELECT [Link], [Link]
SELECT * FROM ciudad FROM ciudad, pais;
FROM pais; LEFT JOIN pais
Recuperar los nombres de las ciudades que empiecen por CIUDAD PAIS
Recuperar las columnas id y nombre de la tabla ciudad: cualquier letra seguida de "adrid" (como Madrid, de España): ON ciudad.id_pais = [Link]; id nombre id_pais id nombre
SELECT id, nombre SELECT nombre CIUDAD PAIS
1 París 1 1 Francia
FROM ciudad; FROM ciudad id nombre id_pais id nombre
1 París 1 2 Alemania
WHERE nombre LIKE '_adrid'; 1 París 1 1 Francia
Recuperar los nombres de las ciudades ordenados por la 2 Berlín 2 1 Francia
2 Berlín 2 2 Alemania
columna clasificacion en orden ascendente (ASC): 2 Berlín 2 2 Alemania
SELECT nombre 3 Varsovia 4 NULL NULL
FROM ciudad
OTROS OPERADORES
Recuperar los nombres de las ciudades con poblaciones
ORDER BY clasificacion [ASC]; NATURAL JOIN
comprendidas entre 500.000 y 5 millones de habitantes:
Recuperar los nombres de las ciudades ordenados por la SELECT nombre NATURAL JOIN une las tablas por todas las columnas que
columna clasificacion en orden descendente (DESC): FROM ciudad tienen el mismo nombre.
SELECT nombre WHERE poblacion BETWEEN 500000 AND 5000000;
RIGHT JOIN SELECT [Link], [Link]
FROM ciudad RIGHT JOIN devuelve todas las filas de la tabla derecha con las FROM ciudad
ORDER BY clasificacion DESC; filas correspondientes de la tabla izquierda. Si no coincide NATURAL JOIN pais;
Recuperar los nombres de las ciudades que tienen un valor en la ninguna fila de la tabla izquierda, devuelve NULL como valores CIUDAD PAIS
ALIAS clasificación: de la tabla izquierda. id_pais id nombre nombre id
SELECT nombre SELECT [Link], [Link]
COLUMNAS FROM ciudad FROM ciudad
6 6 San Marino San Marino 6
SELECT nombre AS nombre_ciudad 7 7 Ciudad del Ciudad del 7
WHERE clasificacion IS NOT NULL; RIGHT JOIN pais Vaticano Vaticano
FROM ciudad; ON ciudad.id_pais = [Link]; 5 9 Grecia Grecia 9
TABLAS Recuperar los nombres de las ciudades situadas en países cuyo ID
CIUDAD PAIS
10 11 Mónaco Mónaco 10
id nombre id_pais id nombre
SELECT [Link], [Link] es 1, 4, 7 u 8: NATURAL JOIN utilizó las siguientes columnas para emparejar
1 París 1 1 Francia
FROM ciudad AS ci SELECT nombre las filas:
JOIN pais AS pa FROM ciudad 2 Berlín 2 2 Alemania [Link], [Link], [Link], [Link].
ON ci.id_pais = [Link]; WHERE id_pais IN (1, 4, 7, 8); NULL NULL NULL 3 Islandia En la práctica, NATURAL JOIN rara vez se utiliza.
[Link] pertenece a Vertabelo SA
Prueba el curso interactivo SQL para principiantes en [Link] y conozca nuestros otros cursos de SQL. [Link] | CC BY-NC-ND Vertabelo SA
Chuleta de SQL
AGREGAR Y AGRUPAR SUBCONSULTAS OPERACIONES DE CONJUNTOS
GROUP BY agrupa las filas que tienen los mismos valores en columnas especificadas. Una subconsulta es una consulta anidada en otra consulta o en otra subconsulta. Existen Las operaciones de conjuntos se utilizan para combinar los resultados de dos o más
Genera resúmenes (agregados) para cada combinación única de valores. diferentes tipos de subconsultas. consultas en un único resultado. Las consultas combinadas deben devolver el mismo
CIUDAD número de columnas y tipos de datos compatibles. Los nombres de las columnas
correspondientes pueden ser diferentes.
id nombre id_pais VALOR ÚNICO
1 París 1 Es la subconsulta más sencilla, que devuelve exactamente una columna y una fila. Puede CICLISMO PATINAJE
CIUDAD utilizarse con los operadores de comparación =, <, <=, > o >=.
101 Marsella 1 id nombre pais id nombre pais
id_pais cantidad La siguiente consulta se utiliza para buscar ciudades con la misma clasificación que París:
102 Lyon 1 SELECT nombre 1 YK DE 1 YK DE
1 3 FROM ciudad
2 Berlín 2 2 ZG DE 2 DF DE
2 3 WHERE clasificacion = (
103 Hamburgo 2 3 WT PL 3 AK PL
4 2 SELECT clasificacion
104 Múnich 2 FROM ciudad ... ... ... ... ... ...
3 Varsovia 4 WHERE nombre = 'París'
); UNION
105 Cracovia 4 UNION combina los resultados de dos conjuntos de resultados y excluye los duplicados.
UNION ALL no excluye las filas duplicadas.
FUNCIONES DE AGREGADO VARIOS VALORES
Las subconsultas también pueden devolver varias columnas o varias filas. En estas Esta consulta muestra los ciclistas alemanes y los patinadores alemanes:
avg(expr) - valor medio de las filas del grupo
subconsultas pueden utilizarse los operadores IN, EXISTS, ALL o ANY. SELECT nombre
count(expr) - número de valores de las filas del grupo
Esta consulta busca ciudades en países con más de 20 millones de habitantes: FROM ciclismo
max(expr) - valor máximo del grupo
SELECT nombre WHERE pais = 'DE'
min(expr) - valor mínimo del grupo
FROM ciudad UNION / UNION ALL
sum(expr) - suma de los valores del grupo
WHERE id_pais IN ( SELECT nombre
SELECT id_pais FROM patinaje
EJEMPLOS DE CONSULTAS FROM pais WHERE pais = 'DE';
Conocer el número de ciudades: WHERE poblacion > 20000000
SELECT COUNT(*) );
FROM ciudad;
INTERSECT
INTERSECT devuelve sólo las filas que aparecen en ambos conjuntos de resultados.
Conocer el número de ciudades con una valoración que no sea nula: SUBCONSULTA CORRELACIONADA
Esta consulta muestra los ciclistas alemanes que también son patinadores alemanes:
SELECT COUNT(clasificacion) Las subconsultas correlacionadas consultan a las tablas insertadas en la consulta externa.
SELECT nombre
FROM ciudad; Las subconsultas correlacionadas dependen de la consulta externa. No pueden
FROM ciclismo
ejecutarse de forma independiente, sin la consulta externa.
Conocer el número de valores distintos de los países: WHERE pais = 'DE'
Esta consulta busca las ciudades cuya población sea superior a la población media del
SELECT COUNT(DISTINCT id_pais) INTERSECT
país:
FROM ciudad; SELECT nombre
SELECT *
FROM patinaje
FROM ciudad ciudad_principal
Conocer los países con menor y mayor población: WHERE pais = 'DE';
WHERE poblacion > (
SELECT MIN(poblacion), MAX(poblacion)
SELECT AVG(poblacion)
FROM pais;
FROM ciudad ciudad_media EXCEPT
WHERE ciudad_media.id_pais = ciudad_principal.id_pais EXCEPT devuelve sólo las filas que aparecen en el primer conjunto de resultados, pero
Conocer la población total de las ciudades en sus respectivos países:
); no aparecen en el segundo conjunto de resultados.
SELECT id_pais, SUM(poblacion)
FROM ciudad Esta consulta muestra los ciclistas alemanes, siempre que no sean patinadores alemanes:
GROUP BY id_pais; Esta consulta busca países con, al menos, una ciudad:
SELECT nombre
SELECT nombre
FROM ciclismo
Conocer la clasificación media de las ciudades en sus respectivos países, si la media es FROM pais
WHERE pais = 'DE'
superior a 3,0: WHERE EXISTS (
EXCEPT / MINUS
SELECT id_pais, AVG(clasificacion) SELECT *
SELECT nombre
FROM ciudad FROM ciudad
FROM patinaje
GROUP BY id_pais WHERE id_pais = [Link]
WHERE pais = 'DE';
HAVING AVG(clasificacion) > 3.0; );
[Link] pertenece a Vertabelo SA
Prueba el curso interactivo SQL para principiantes en [Link] y conozca nuestros otros cursos de SQL. [Link] | CC BY-NC-ND Vertabelo SA