¿Qué es SQL?
SQL, también conocido como Lenguaje de Consulta Estructurado, es una potente herramienta para buscar entre grandes cantidades de datos en bases de datos y devolver información específica para su análisis. Aprender SQL es una apuesta segura para cualquiera que quiera introducirse en el mundo de los datos, ya sea para funciones de analista empresarial, analista de datos, científico de datos o ingeniero de datos.
En este tutorial, aprenderás 25 de los comandos SQL más comunes que serán suficientes para la mayoría de tus tareas relacionadas con las bases de datos.
Comandos SQL con ejemplos
Ejemplo de tabla
A lo largo de este tutorial, utilizaremos las tablas films
y bandas sonoras.
películas |
|||||
movie_name |
director |
ingresos |
fecha |
género |
idioma |
Vengadores: La era de Ultrón |
J. Whedon |
1400000000 |
2015 |
Acción |
Inglés |
Amelie |
Jean-Pierre Jeunet |
174000000 |
2002 |
Drama |
Francés |
soundtracks |
||
banda sonora |
compositor |
fecha |
Inception: Música de la película |
Hans Zimmer |
2010 |
Le Fabuleux Destin D'Amelie Poulain |
Yann Tiersen |
2001 |
1. SELECT
La sentencia SELECT
se utiliza para especificar qué columnas de una tabla de base de datos deben incluirse en el resultado.
Este ejemplo sólo selecciona las columnas movie_name
y director
; las demás columnas no se devuelven.
SELECT movie_name, director
FROM films;
Para seleccionar todas las columnas de una tabla, puedes ejecutar SELECT *
(se pronuncia "estrella"). Este ejemplo selecciona todas las columnas de la films
tabla.
SELECT *
FROM films;
2. LIMIT
Limitar el número de filas devueltas de una tabla es un truco útil para acelerar el tiempo de consulta. Para limitar el número de filas, puedes utilizar el comando LIMIT
. Este ejemplo selecciona todas las columnas de la tabla films
tabla y luego limita los resultados a las diez primeras filas.
SELECT *
FROM films
LIMIT 10;
3. AS
Para renombrar una columna o una tabla al devolver los resultados, puedes utilizar el comando AS
para establecer un alias para tus salidas. Este ejemplo selecciona la columna movie_name
y le da el alias movie_title
.
SELECT movie_name AS movie_title
FROM films;
4. SELECT DISTINCT
Los conjuntos de datos suelen contener filas o valores duplicados en una columna. Combinando SELECT
con DISTINCT
se eliminan los duplicados. Este ejemplo devuelve los valores únicos de la columna director
.
SELECT DISTINCT director
FROM films;
5. COUNT
COUNT()
devuelve el número de filas de la tabla o grupo. Este ejemplo devuelve el número de filas de la tabla films
y, a continuación, cambia el nombre del resultado a number_of_films
.
SELECT COUNT(*) AS number_of_films
FROM films;
6. MIN
MIN()
devuelve el valor mínimo de una columna numérica. Para las columnas de texto, MIN()
devuelve el primer valor por orden alfabético. Este ejemplo devuelve la película con menos ingresos.
SELECT MIN(revenue) AS minimum_revenue,
FROM films;
7. MAX
MAX()
devuelve el valor máximo de una columna numérica. Para las columnas de texto, MAX()
devuelve el último valor alfabéticamente. Este ejemplo devuelve la película con la máxima cantidad de ingresos.
SELECT MAX(revenue) AS maximum_revenue,
FROM films;
8. SUM
SUM()
devuelve el total de valores numéricos. Este ejemplo devuelve los ingresos totales de todas las películas que figuran en la tabla films
.
SELECT SUM(revenue) AS total_revenue
FROM films;
9. AVERAGE
PROMEDIO calcula la media aritmética de una columna. Este ejemplo devuelve los ingresos medios de todas las películas que aparecen en la tabla films
.
SELECT AVERAGE(revenue) AS average_earned
FROM films;
10. WHERE
La cláusula WHERE
filtra las filas que cumplen una determinada condición. Por ejemplo, a continuación filtramos las películas que ganaron más de 500 millones de dólares
SELECT revenue
FROM films
WHERE revenue > 500000000;
Se pueden utilizar otros operadores condicionales como <
, >
, =>
, <=
, == (equals)
, != (not equals)
para filtrar.
11. HAVING
La cláusula HAVING es similar a la cláusula WHERE, pero sólo puede utilizarse con funciones agregadas, mientras que WHERE no. Por ejemplo, en la consulta siguiente, estamos eligiendo todos los géneros de películas que tienen al menos 50 películas en su categoría:
SELECT movie_name, director, date, COUNT(genre)
FROM films
GROUP BY genre
HAVING COUNT(genre) >= 50;
Aquí tienes otro ejemplo que agrupa las películas por clasificación por edades y sólo elige las clasificaciones con ingresos medios superiores a 100 millones:
SELECT movie_name, director, date, revenue
FROM films
GROUP BY age_rating
HAVING AVERAGE(genre) >= 100;
12. AND
AND
se utiliza para filtrar filas que cumplen más de una condición. En el siguiente ejemplo, filtraremos las películas inglesas que hayan recaudado más de 500 millones de dólares.
SELECT *
FROM films
WHERE revenue > 500000000 AND
language == "English";
13. OR
OR
es otro operador condicional que te permite subconjuntar filas si alguna de las condiciones separadas por OR
es cierta. Este ejemplo devuelve las películas inglesas que ganaron menos de 100 millones de dólares o las películas francesas que ganaron más de 500 millones de dólares.
SELECT *
FROM films
WHERE (revenue < 100000000 AND language == "English") OR
(revenue > 500000000 AND language == “French”);
14. BETWEEN
BETWEEN
te permite subconjuntar filas dentro de un rango determinado, lo que hace que las cláusulas WHERE
sean más sencillas y fáciles de leer. En el ejemplo anterior, elegimos todas las películas estrenadas entre 2020 y 2022.
SELECT *
FROM films
WHERE date BETWEEN 2020 AND 2022;
15. IN
El operador IN es una abreviatura de varias sentencias OR
. Este ejemplo devuelve todas las películas que se estrenaron en alguno de estos años: 1998, 1966, 2001 y 2012.
SELECT movie_name, date, revenue
FROM films
WHERE date IN (1998, 1966, 2001, 2012);
16. LIKE
El operador LIKE
te permite buscar patrones en una columna de texto utilizando cadenas especiales llamadas comodines. Los comodines te permiten encontrar cadenas de texto que se ajusten a un patrón específico. Por ejemplo, si utilizas el comodín “A% W%”
en la columna director, encontrarás todos los directores cuyo nombre empiece por A y cuyo apellido empiece por W.
SELECT *
FROM films
WHERE director LIKE "A% W%";
17. GROUP BY
GROUP BY
te permite agrupar filas en función de los valores de las columnas. GROUP BY
suele utilizarse con funciones de agregación como COUNT
, MIN
, MAX
, AVERAGE
, etc. En el ejemplo siguiente, hallamos los ingresos medios de cada género cinematográfico.
SELECT AVERAGE(revenue), movie_name, director, date
FROM films
GROUP BY genre;
Podríamos haber utilizado MIN
, MAX
, o COUNT(revenue)
para encontrar las películas que menos ganan, las que más ganan, o el número de películas de cada género. Ten en cuenta que la sentencia GROUP BY
prácticamente no afecta a la consulta si no se utiliza con una función de agregado.
18. ORDER BY
ORDER BY
te permite ordenar las filas en función del valor de una columna. Puedes ordenar por orden ascendente (por defecto) o descendente añadiendo el ASC
o DESC
. Este ejemplo ordena los ingresos por orden ascendente.
SELECT *
FROM films
ORDER BY revenue ASC;
19. UPDATE
UPDATE
se utiliza para cambiar los valores de celdas individuales de una tabla existente. Se utiliza con la palabra clave SET
. Este ejemplo actualiza el director “J. Whedon”
, a “Joss Whedon”
.
UPDATE films
SET director = "Joss Whedon"
WHERE director = "J. Whedon"
La cláusula WHERE
es crucial al escribir las declaraciones UPDATE
. Sin ella, la consulta anterior habría hecho todas las películas dirigidas por Joss Whedon.
20. ALTER TABLE
Puedes utilizar la sentencia ALTER TABLE
para modificar las propiedades de la tabla y sus columnas (no los valores reales de las celdas). Por ejemplo, cambiar los nombres de las columnas, añadir nuevas columnas, eliminarlas o cambiar su tipo de datos. Los ejemplos siguientes muestran la eliminación de la columna date
y la adición de la columna age_rating
.
ALTER TABLE films
DROP COLUMN date;
ALTER TABLE films
ADD COLUMN age_rating;
21. CREATE TABLE
CREATE TABLE
crea una nueva tabla en una base de datos. A continuación, vamos a crear una tabla "bibliotecas" con cuatro columnas: una columna de números enteros llamadaid
, una columna de caracteres llamada name
, una columna de caracteres llamada version
, y una columna de números enteros llamada num_downloads
.
CREATE TABLE libraries (
lib_id int,
name varchar(100),
version varchar(100),
num_downloads int
)
22. INSERT INTO
INSERT INTO
se puede utilizar para añadir nuevas filas a una tabla. En este ejemplo, añadimos la película “Doctor Strange”
a la tabla films
tabla.
INSERT INTO films (movie_name, director, revenue, date, genre, language)
VALUES ("Doctor Strange 2", “Sam Raimi”, 409000000, 2022, “Action”, “English”)
23. INNER JOIN
El comando INNER JOIN
selecciona las filas que tienen valores coincidentes en ambas tablas. Por ejemplo, en la consulta siguiente, estamos las tablas de películas y bandas sonoras en una columna común date
que devuelve las películas y bandas sonoras que se estrenaron en los mismos años.
SELECT *
FROM films
INNER JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
24. LEFT JOIN
Un LEFT JOIN
conserva todos los registros originales de la tabla izquierda y devuelve los valores perdidos de cualquier columna de la tabla derecha en la que el campo de unión no haya encontrado una coincidencia.
SELECT *
FROM films
LEFT JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
25. RIGHT JOIN
Un RIGHT JOIN
mantiene todos los registros originales en la tabla derecha y devuelve valores perdidos para cualquier columna de la tabla izquierda en la que el campo de unión no haya encontrado una coincidencia.
SELECT *
FROM films
LEFT JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
Hoja de trucos de comandos SQL
Para saber más sobre SQL, asegúrate de consultar los siguientes recursos: