6th Dec 2023 Lectura de 7 minutos Chuleta de SQL LearnSQL.es Team chuleta SQL Índice Chuleta de SQL EJEMPLO DE DATOS CONSULTAR A UNA SOLA TABLA ALIAS COLUMNAS TABLAS FILTRAR RESULTADOS OPERADORES DE COMPARACIÓN OPERADORES DE TEXTO OTROS OPERADORES CONSULTAR A VARIAS TABLAS INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN CROSS JOIN NATURAL JOIN AGREGAR Y AGRUPAR FUNCIONES DE AGREGADO EJEMPLOS DE CONSULTAS SUBCONSULTAS VALOR ÚNICO VARIOS VALORES SUBCONSULTA CORRELACIONADA OPERACIONES DE CONJUNTOS UNION INTERSECT EXCEPT Descargue esta Chuleta de 2 páginas de SQL en formato PDF o PNG, imprímala y péguela en su mesa de trabajo. La Chuleta de SQL proporciona la sintaxis de todas las cláusulas básicas, enseña cómo se escriben las diferentes condiciones y muestra ejemplos. Opciones de descarga: Chuleta de SQL en formato PDF (A4) Chuleta de SQL en formato PDF (Letter) Chuleta de SQL en formato PDF para móviles También puede leer su contenido aquí: Chuleta de SQL SQL, o Structured Query Language (lenguaje de consulta estructurada), es un lenguaje para comunicarse con bases de datos. Se utiliza para seleccionar datos específicos y crear informes complejos. Hoy en día, SQL es un lenguaje de datos universal y se utiliza en prácticamente todas las tecnologías que procesan datos. EJEMPLO DE DATOS CONSULTAR A UNA SOLA TABLA Recuperar todas las columnas de la tabla pais: SELECT * FROM pais; Recuperar las columnas id y nombre de la tabla ciudad: SELECT id, nombre FROM ciudad; Recuperar los nombres de las ciudades ordenados por la columna clasificacion en orden ascendente (ASC): SELECT nombre FROM ciudad ORDER BY clasificacion [ASC]; Recuperar los nombres de las ciudades ordenados por la columna clasificacion en orden descendente (DESC): SELECT nombre FROM ciudad ORDER BY clasificacion DESC; ALIAS COLUMNAS SELECT nombre AS nombre_ciudad FROM ciudad; TABLAS SELECT pa.nombre, ci.nombre FROM ciudad AS ci JOIN pais AS pa ON ci.id_pais = pa.id; FILTRAR RESULTADOS OPERADORES DE COMPARACIÓN Recuperar los nombres de las ciudades cuya clasificación sea superior a 3: SELECT nombre FROM ciudad WHERE clasificacion > 3; Recuperar los nombres de las ciudades que no sean ni Berlín ni Madrid: SELECT nombre FROM ciudad WHERE nombre != 'Berlín' AND nombre != 'Madrid'; OPERADORES DE TEXTO Recuperar los nombres de las ciudades que empiecen por "P" o terminen por "s": SELECT nombre FROM ciudad WHERE nombre LIKE 'P%' OR nombre LIKE '%s'; Recuperar los nombres de las ciudades que empiecen por cualquier letra seguida de "adrid" (como Madrid, de España): SELECT nombre FROM ciudad WHERE nombre LIKE '_adrid'; OTROS OPERADORES Recuperar los nombres de las ciudades con poblaciones comprendidas entre 500.000 y 5 millones de habitantes: SELECT nombre FROM ciudad WHERE poblacion BETWEEN 500000 AND 5000000; Recuperar los nombres de las ciudades que tienen un valor en la clasificación: SELECT nombre FROM ciudad WHERE clasificacion IS NOT NULL; Recuperar los nombres de las ciudades situadas en países cuyo ID es 1, 4, 7 u 8: SELECT nombre FROM ciudad WHERE id_pais IN (1, 4, 7, 8); CONSULTAR A VARIAS TABLAS INNER JOIN JOIN (o explícitamente INNER JOIN) devuelve las filas en las que coinciden los valores en ambas tablas. SELECT ciudad.nombre, pais.nombre FROM ciudad [INNER] JOIN pais ON ciudad.id_pais = pais.id; LEFT JOIN LEFT JOIN devuelve todas las filas de la tabla izquierda con las filas correspondientes de la tabla derecha. Si no coincide ninguna fila de la tabla derecha, devuelve NULL como valores de la tabla derecha. SELECT ciudad.nombre, pais.nombre FROM ciudad LEFT JOIN pais ON ciudad.id_pais = pais.id; RIGHT JOIN RIGHT JOIN devuelve todas las filas de la tabla derecha con las filas correspondientes de la tabla izquierda. Si no coincide ninguna fila de la tabla izquierda, devuelve NULL como valores de la tabla izquierda. SELECT ciudad.nombre, pais.nombre FROM ciudad RIGHT JOIN pais ON ciudad.id_pais = pais.id; FULL JOIN FULL JOIN (o explícitamente FULL OUTER JOIN) devuelve todas las filas de ambas tablas. Si no coincide ninguna fila de la otra tabla, devuelve valores NULL. SELECT ciudad.nombre, pais.nombre FROM ciudad FULL [OUTER] JOIN pais ON ciudad.id_pais = pais.id; CROSS JOIN CROSS JOIN devuelve todas las combinaciones posibles de las filas de las dos tablas. Se puede usar con dos sintaxis diferentes. SELECT ciudad.nombre, pais.nombre FROM ciudad CROSS JOIN pais; SELECT ciudad.nombre, pais.nombre FROM ciudad, pais; NATURAL JOIN NATURAL JOIN une las tablas por todas las columnas que tienen el mismo nombre. SELECT ciudad.nombre, pais.nombre FROM ciudad NATURAL JOIN pais; NATURAL JOIN utilizó las siguientes columnas para emparejar las filas: ciudad.id, ciudad.nombre, pais.id, pais.nombre. En la práctica, NATURAL JOIN rara vez se utiliza. AGREGAR Y AGRUPAR GROUP BY agrupa las filas que tienen los mismos valores en columnas especificadas. Genera resúmenes (agregados) para cada combinación única de valores. FUNCIONES DE AGREGADO avg(expr) - valor medio de las filas del grupo count(expr) - número de valores de las filas del grupo max(expr) - valor máximo del grupo min(expr) - valor mínimo del grupo sum(expr) - suma de los valores del grupo EJEMPLOS DE CONSULTAS Conocer el número de ciudades: SELECT COUNT(*) FROM ciudad; Conocer el número de ciudades con una valoración que no sea nula: SELECT COUNT(clasificacion) FROM ciudad; Conocer el número de valores distintos de los países: SELECT COUNT(DISTINCT id_pais) FROM ciudad; Conocer los países con menor y mayor población: SELECT MIN(poblacion), MAX(poblacion) FROM pais; Conocer la población total de las ciudades en sus respectivos países: SELECT id_pais, SUM(poblacion) FROM ciudad GROUP BY id_pais; Conocer la clasificación media de las ciudades en sus respectivos países, si la media es superior a 3,0: SELECT id_pais, AVG(clasificacion) FROM ciudad GROUP BY id_pais HAVING AVG(clasificacion) > 3.0; SUBCONSULTAS Una subconsulta es una consulta anidada en otra consulta o en otra subconsulta. Existen diferentes tipos de subconsultas. VALOR ÚNICO Es la subconsulta más sencilla, que devuelve exactamente una columna y una fila. Puede utilizarse con los operadores de comparación =, <, <=, > o >=. La siguiente consulta se utiliza para buscar ciudades con la misma clasificación que París: SELECT nombre FROM ciudad WHERE clasificacion = ( SELECT clasificacion FROM ciudad WHERE nombre = 'París' ); VARIOS VALORES Las subconsultas también pueden devolver varias columnas o varias filas. En estas subconsultas pueden utilizarse los operadores IN, EXISTS, ALL o ANY. Esta consulta busca ciudades en países con más de 20 millones de habitantes: SELECT nombre FROM ciudad WHERE id_pais IN ( SELECT id_pais FROM pais WHERE poblacion > 20000000 ); SUBCONSULTA CORRELACIONADA Las subconsultas correlacionadas consultan a las tablas insertadas en la consulta externa. Las subconsultas correlacionadas dependen de la consulta externa. No pueden ejecutarse de forma independiente, sin la consulta externa. Esta consulta busca las ciudades cuya población sea superior a la población media del país: SELECT * FROM ciudad ciudad_principal WHERE poblacion > ( SELECT AVG(poblacion) FROM ciudad ciudad_media WHERE ciudad_media.id_pais = ciudad_principal.id_pais ); Esta consulta busca países con, al menos, una ciudad: SELECT nombre FROM pais WHERE EXISTS ( SELECT * FROM ciudad WHERE id_pais = pais.id ); OPERACIONES DE CONJUNTOS Las operaciones de conjuntos se utilizan para combinar los resultados de dos o más consultas en un único resultado. Las consultas combinadas deben devolver el mismo número de columnas y tipos de datos compatibles. Los nombres de las columnas correspondientes pueden ser diferentes. UNION UNION combina los resultados de dos conjuntos de resultados y excluye los duplicados. UNION ALL no excluye las filas duplicadas. Esta consulta muestra los ciclistas alemanes y los patinadores alemanes: SELECT nombre FROM ciclismo WHERE pais = 'AL' UNION / UNION ALL SELECT nombre FROM patinaje WHERE pais = 'AL'; INTERSECT INTERSECT devuelve sólo las filas que aparecen en ambos conjuntos de resultados. Esta consulta muestra los ciclistas alemanes que también son patinadores alemanes: SELECT nombre FROM ciclismo WHERE pais = 'AL' INTERSECT SELECT nombre FROM patinaje WHERE pais = 'AL'; EXCEPT EXCEPT devuelve sólo las filas que aparecen en el primer conjunto de resultados, pero no aparecen en el segundo conjunto de resultados. Esta consulta muestra los ciclistas alemanes, siempre que no sean patinadores alemanes: SELECT nombre FROM ciclismo WHERE pais = 'AL' EXCEPT / MINUS SELECT nombre FROM patinaje WHERE pais = 'AL'; Tags: chuleta SQL