Saltar al contenido principal
InicioTutorialesSQL

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
may 2024  · 21 min leer

¿Qué es una consulta SQL?

SQL son las siglas de Structured Query Language (lenguaje de consulta estructurado). La gente suele pronunciarlo como "S-Q-L" o "sequel". SQL se utiliza en programación y está diseñado para gestionar datos almacenados en una base de datos mediante consultas SQL

El tipo más común de sistema de gestión de bases de datos (SGBD) es un sistema de gestión de bases de datos relacionales(SGBDR), donde almacenamos datos estructurados, es decir, datos que incorporan relaciones entre entidades y variables. Estas entidades y variables se organizan como un conjunto de tablas con columnas y filas. Algunos de los RDBMS más populares son MYSQL, Oracle, IBM DB2 y la base de datos Microsoft SQL Server.

Los datos en RDBMS se almacenan en un objeto de base de datos llamado tabla. Una base de datos suele contener varias tablas. Cada tabla se identifica con un nombre único y contiene una colección de entradas de datos relacionados, estructurados en filas y columnas. 

Una columna es una entidad vertical; se denominan campos y contienen toda la información asociada a un campo específico de una tabla. Cada fila de una tabla se conoce como registro; es la entidad horizontal de la tabla.

La estructura de una base de datos puede parecerse mucho a la de Excel. Sin embargo, las bases de datos, en general, son más potentes que las hojas de cálculo Excel. He aquí tres razones por las que podría decirse que sí: 

  1. Las bases de datos pueden interactuar con muchos otros lenguajes de programación, lo que da al programador más capacidad para gestionar y recuperar información de los datos.
  2. Las bases de datos pueden procesar más datos que las hojas de cálculo de Excel. Excel puede manejar hasta 1 millón de filas de datos, mientras que una base de datos puede manejar más de mil millones de filas.
  3. Las bases de datos pueden conectarse más fácilmente a Internet, lo que permite a cientos de usuarios y aplicaciones acceder a ellas simultáneamente.

¿Le gustaría empezar a trabajar con SQL? DataCamp cuenta con un material asombroso para que empieces; ¡aprender SQL destaca las pistas que puedes seguir para perfeccionar tus conocimientos de SQL!

Profundicemos ahora en las consultas SQL... 

Una consulta SQL es una sentencia que se construye juntando varios comandos SQL. Estos comandos SQL realizan conjuntamente una tarea específica para acceder, gestionar, modificar, actualizar, controlar y organizar los datos almacenados en una base de datos y gestionados a través de un SGBD. 

¿Por qué utilizar SQL?

SQL es increíblemente versátil y lo utiliza todo el mundo, desde científicos de datos e ingenieros hasta profesionales del marketing y equipos de recursos humanos; básicamente, cualquiera que simplemente quiera tener más conocimientos sobre datos.

No sólo se utiliza en las industrias tecnológicas o se limita a las grandes empresas. Múltiples industrias de todos los tamaños la utilizan directa o indirectamente. Por ejemplo, los profesionales de los sectores financiero y sanitario suelen utilizar SQL, dada la gran cantidad de datos que generan. 

Los datos son la nueva mercancía, y SQL es una herramienta muy potente a la hora de manejar y trabajar con big data. ¿Se pregunta cómo puede aprovechar SQL al máximo? Echa un vistazo al tutorial de DataCamp Qué se puede hacer con SQL para ayudarte a responder a esta pregunta.

Cómo escribir consultas SQL

Antes de entrar en la formulación de la consulta, consideremos la pregunta: "¿Dónde escribo y ejecuto mi consulta SQL?". 

El hub Learn SQL de DataCamp puede ser un buen punto de partida para poder trabajar con SQL en un equipo Mac o Windows y empezar a trabajar.

Pero si simplemente quieres iniciarte en el aprendizaje de los lenguajes nativos de las bases de datos - SQL, puedes empezar con el curso Introducción a SQL de DataCamp. Este curso enseña la sintaxis en SQL que comparten muchos tipos de bases de datos, como PostgreSQL, MySQL, SQL Server y Oracle. Trabajará con la interfaz SQL incorporada de DataCamp y no tendrá que lidiar con las molestias de la configuración inicial de un RDBMS. 

DataCamp también cuenta con una herramienta de cuadernos impresionante en la que puedes crear tus propios cuadernos: DataLab. DataLab es un bloc de notas colaborativo basado en la nube que le permite analizar datos, colaborar con su equipo y compartir ideas. DataLab está diseñado para que pase de aprender ciencia de datos a hacer ciencia de datos. Con los conjuntos de datos incorporados, puede empezar a analizar datos en cuestión de minutos.

Veamos ahora el conjunto de datos con el que trabajaremos en este tutorial. 

Empezaremos con "películas", una tabla SQL que contiene los datos de 10 películas.
Estos datos son sólo un pequeño subconjunto de los datos del conjunto de datos de películas de IMDb utilizados en el curso de Introducción a SQL de DataCamp que hemos mencionado anteriormente.

 

title

release_year

budget

bruto

imdb_score

1

El Padrino

1972

6000000

134821952

9.2

2

El Caballero Oscuro

2008

185000000

533316061

9

3

El Padrino: Parte II

1974

13000000

57300000

9

4

La lista de Schindler

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

El Señor de los Anillos: El retorno del Rey

2003

94000000

377019252

8.9

7

El club de la lucha

1999

63000000

37023395

8.8

8

Inicio

2010

160000000

292568851

8.8

9

La Guerra de las Galaxias: Episodio V - El Imperio Contraataca

1980

18000000

290158751

8.8

10

La redención de Shawshank

1994

25000000

28341469

9.3

La tabla "películas" tiene diez registros: los nombres de las películas almacenados en 10 filas. Los campos son las cinco columnas de la tabla que contienen la información relativa a la película. 

  • título" es el nombre de la película
  • año_estreno" es el año en que se estrenó la película
  • presupuesto" es el coste de producción de la película en dólares estadounidenses
  • bruto" es lo que ha ganado la película en dólares estadounidenses. 
  • 'imdb_score' muestra las puntuaciones producidas a partir de los votos enviados por los usuarios de IMDb, no por los críticos de cine. 

Comencemos el ejercicio con algunos comandos SQL básicos, utilizándolos para explorar la tabla "películas" anterior. No esperamos que ejecute las consultas de la solución de inmediato... sino que las utilice como base para aprender algunos conceptos clave. Así que no te preocupes si aún no has decidido desde qué plataforma quieres realizar las consultas.

Consultas SQL básicas

Tenga en cuenta que las palabras clave o comandos SQL no distinguen entre mayúsculas y minúsculas; escribir 'select' es lo mismo que escribir 'SELECT'. 

Utilizaremos un punto y coma al final de cada sentencia SQL que escribamos. Esto es lo habitual en algunos sistemas de bases de datos, y se hace para separar cada sentencia SQL de modo que puedan ejecutarse en la misma llamada al servidor. 

Empecemos con una pregunta. Q1: ¿Cuáles son las películas almacenadas en la tabla?

SELECT - DE

La sentencia SELECT se utiliza para elegir los campos que desea ver de la tabla de la base de datos. Para Q1, quieres el campo "título".

El comando/palabra clave FROM especifica la tabla concreta de la base de datos de la que desea extraer los datos. Recuerde que una base de datos puede constar de varias tablas.

Syntax: SELECT columna1, columna2, ... FROM nombre_tabla;

Consulta SQL: SELECT título FROM películas;

Resultado: 

 

title

1

El Padrino

2

El Caballero Oscuro

3

El Padrino: Parte II

4

La lista de Schindler

5

Pulp Fiction

6

El Señor de los Anillos: El retorno del Rey

7

El club de la lucha

8

Inicio

9

La Guerra de las Galaxias: Episodio V - El Imperio Contraataca

10

La redención de Shawshank

Puede que se pregunte qué ocurre si nunca ha visto la tabla anterior y no conoce los nombres de las columnas que debe especificar en la sentencia SELECT. ¡Buena observación! Aprenderemos sobre el mágico '*' (asterisco) más adelante en el tutorial. 

DONDE

Q2: ¿Cuáles son las películas que se estrenarán en 2010?

Para esta pregunta, quieres "filtrar" las películas de modo que tengas nombres de películas que cumplan la condición: 'año_estreno' es 2010. 

Puede utilizar la cláusula 'WHERE' para extraer sólo aquellos registros que cumplan una condición especificada.

Syntax: SELECT columna1, columna2, ... FROM nombre_tabla WHERE condición; 

Consulta SQL: SELECT título, año_estreno FROM películas WHERE año_estreno = 2010;

Resultado

 

title

release_year

1

Inicio

2010

Operadores de la cláusula WHERE

Se pueden utilizar los siguientes operadores en la cláusula WHERE:

Operador

Descripción

=

Igual a

>

Mayor que

<

Menos de

>=

Mayor o igual que

<=

Menor o igual que

<> o !=

No es igual. 

ENTRE

Entre un rango determinado

COMO

Buscar un patrón que coincida con el patrón dado

IN

Especifica varios valores posibles 

Aritmética en SQL

Puede realizar operaciones aritméticas sencillas en SQL utilizando los símbolos matemáticos: +, -, *, /. Sin embargo, sólo puede realizar operaciones entre columnas utilizando estos símbolos aritméticos. También puede utilizar paréntesis para gestionar el orden de las operaciones.

Pero no tema, para operaciones más complicadas - SQL tiene funciones agregadas que le permiten realizar operaciones dentro de la misma fila. Trataremos este tema más adelante en el tutorial.

Q3: Calcula el beneficio obtenido por cada película en la tabla "películas". 

Pista: Ejecute Bruto - Presupuesto y guarde el resultado en una columna llamada 'movie_profit' utilizando AS

Consulta SQL: SELECT título, (bruto - presupuesto) COMO beneficio_película FROM películas

Resultado

 

title

movie_profit

1

El Padrino

128821952

2

El Caballero Oscuro

348316061

3

El Padrino: Parte II

44300000

4

La lista de Schindler

74067179

5

Pulp Fiction

99930000

6

El Señor de los Anillos: El retorno del Rey

283019252

7

El club de la lucha

-25976605

8

Inicio

132568851

9

La Guerra de las Galaxias: Episodio V - El Imperio Contraataca

272158751

10

La redención de Shawshank

3341469

Descargo de responsabilidad: Puede que a los cinéfilos les molesten los beneficios negativos de El club de la lucha. La fórmula utilizada ((bruto - presupuesto) AS movie_profit) es muy sencilla y, efectivamente, dada la fórmula y los datos, es el resultado correcto. 

Pero el ejemplo anterior sirve para recordarle que debe tener en cuenta el proceso de recopilación de datos. Incluso una simple exploración de los datos puede revelar errores en los datos que pueden deberse a un error en el proceso de recopilación o almacenamiento de datos (cambio de tipo de datos, etc.), como podría haber ocurrido al elaborar el conjunto de datos en uso. 

Presta siempre atención a los datos con los que trabajas.

Y, O, NO

La cláusula WHERE puede combinarse con otras cláusulas condicionales mediante los operadores AND, OR y NOT. Los operadores AND y OR se utilizan para filtrar registros basándose en más de una condición, y el operador NOT se utiliza para negar una condición. 

Veamos su uso con ejemplos:

Q4: ¿Cuáles son las películas que se estrenarán en 2010 y tienen una calificación superior a 9?

Syntax: SELECT columna1, columna2, ... FROM nombre_tabla WHERE condición1 Y condición2 Y condición3 Y condición4.....;

Consulta SQL: SELECT title, release_year, imdb_score FROM films WHERE release_year = 2010 AND imdb_score >= 9;

El operador AND muestra un registro si todas las condiciones separadas por AND son verdaderas.

En la tabla "películas" tenemos la película "Inception". Es el único valor que es verdadero para release_year = 2010, pero es falso para imdb_score >= 9 y, por tanto, no cumple la condición de conjunto Y. Por lo tanto, la consulta devuelve un conjunto de resultados vacío.

Q5: ¿Cuáles son las películas que se estrenarán en 2010 o tienen una calificación superior a 9?

Syntax: SELECT columna1, columna2, ... FROM nombre_tabla WHERE condición1 OR condición2 OR condición3 OR condición4.....;

Consulta SQL: SELECT title, release_year, imdb_score FROM films WHERE release_year = 2010 OR imdb_score >= 9;

Resultado

 

title

release_year

imdb_score

1

El Padrino

1972

9.2

2

El Caballero Oscuro

2008

9

3

El Padrino: Parte II

1974

9

4

Inicio

2010

8.8

5

La redención de Shawshank

1994

9.3

El operador OR muestra un registro si alguna de las condiciones separadas por OR es TRUE.

Las películas: El Padrino, El Caballero Oscuro, El Padrino: Part II, The Shawshank Redemption son verdaderas para imdb_score >= 9, mientras que Inception es verdadera para release_year = 2010, y por lo tanto pasan el corte para la condición OR.

Q6: ¿Cuáles son las películas que tienen un año de estreno distinto de 2010?

Syntax: SELECT columna1, columna2, ... FROM nombre_tabla WHERE NOT condición1;

Consulta SQL: SELECT título, año_estreno FROM películas WHERE NO año_estreno = 2010;

Resultado

 

title

release_year

1

El Padrino

1972

2

El Caballero Oscuro

2008

3

El Padrino: Parte II

1974

4

La lista de Schindler

1993

5

Pulp Fiction

1994

6

El Señor de los Anillos: El retorno del Rey

2003

7

El club de la lucha

1999

8

La Guerra de las Galaxias: Episodio V - El Imperio Contraataca

1980

9

La redención de Shawshank

1994

También podrías escribir: SELECT título, año_estreno FROM películas WHERE año_estreno != 2010;

Esto también daría el mismo resultado que el anterior.

Puede haber varias formas de conseguir el mismo resultado en SQL. Sin embargo, algunas consultas pueden ser más eficaces que otras. El rendimiento puede depender de múltiples factores: la cantidad de datos, los comandos utilizados en la consulta, cómo está estructurada la base de datos, el tipo de datos, etc. Este es un tema un poco más complicado y avanzado que no cubriremos en este tutorial de consultas SQL. 

Pero si le interesa, el curso de diseño de bases de datos de DataCamp profundiza en estos temas.

ORDENAR POR

La palabra clave ORDER BY se utiliza para ordenar el resultado en orden ascendente (utilizando la palabra clave ASC) o descendente (utilizando la palabra clave DESC). Por defecto, la clasificación se realiza en orden ascendente.

Q7: ¿Cuáles son las películas almacenadas en la tabla? Ordenar en orden descendente de release_year.

Syntax: SELECT columna1, columna2, ... FROM nombre_tabla ORDER BY columna1, columna2, ... ASC|DESC;

Consulta SQL: SELECT title, release_year FROM películas ORDER BY release_year DESC;

Resultado

 

title

release_year

1

Inicio

2010

2

El Caballero Oscuro

2008

3

El Señor de los Anillos: El retorno del Rey

2003

4

El club de la lucha

1999

5

Pulp Fiction

1994

6

La redención de Shawshank

1994

7

La lista de Schindler

1993

8

La Guerra de las Galaxias: Episodio V - El Imperio Contraataca

1980

9

El Padrino: Parte II

1974

10

El Padrino

1972

LÍMITE

A veces, la base de datos puede tardar mucho tiempo en ejecutar la consulta, sobre todo si la cantidad de datos almacenados es muy grande. 

Una forma fácil y rápida de probar una consulta o muestrear el tipo de resultado que se obtiene es utilizar la función LIMIT. LIMITAR le permite limitar el número de resultados que obtiene.

Q8: ¿Cuáles son las 5 películas más recientes almacenadas en la tabla? 

Pista: Ordene el conjunto de resultados en orden descendente en función del año de publicación y utilice LIMIT.

Syntax: SELECT columna1, columna2, ... FROM nombre_tabla LIMIT x;

Consulta SQL: SELECT title, release_year FROM películas ORDER BY release_year DESC LIMIT 5;

Resultado

 

title

release_year

1

Inicio

2010

2

El Caballero Oscuro

2008

3

El Señor de los Anillos: El retorno del Rey

2003

4

El club de la lucha

1999

5

Pulp Fiction

1994

INSERTAR EN

INSERT INTO se utiliza para añadir nuevos registros a una tabla de base de datos. Puede escribir una sentencia INSERT INTO de dos maneras: 

  • Especifique ambos nombres de columna junto con los valores correspondientes

Syntax: INSERT INTO nombre_tabla (columna1, columna2, columna3, ...) VALORES (valor1, valor2, valor3, ...);

  • Si está añadiendo valores para TODAS las columnas de la tabla, no necesita especificar los nombres de las columnas en la consulta. Tenga cuidado al utilizar este método y asegúrese de que el orden de los valores es el mismo que el de las columnas de la tabla. 

Syntax: INSERT INTO nombre_tabla VALUES (valor1, valor2, valor3, ...);

Q9: Añadir una entrada para 'El Padrino: Parte III' en la tabla con los detalles: ('El Padrino: Parte III", 1990, 54000000, 136900000, 7.6)

Syntax: SELECT columna1, columna2, ... FROM nombre_tabla ORDER BY columna1, columna2,... ASC|DESC;

Consulta SQL: INSERT INTO películas (título, año_estreno, presupuesto, recaudación, puntuación_imdb)

VALORES ('El Padrino: Part III’, 1970, 54000000, 136900000, 7.6);

Tabla resultante

 

title

release_year

budget

bruto

imdb_score

1

El Padrino

1972

6000000

134821952

9.2

2

El Caballero Oscuro

2008

185000000

533316061

9

3

El Padrino: Parte II

1974

13000000

57300000

9

4

La lista de Schindler

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

El Señor de los Anillos: El retorno del Rey

2003

94000000

377019252

8.9

7

El club de la lucha

1999

63000000

37023395

8.8

8

Inicio

2010

160000000

292568851

8.8

9

La Guerra de las Galaxias: Episodio V - El Imperio Contraataca

1980

18000000

290158751

8.8

10

La redención de Shawshank

1994

25000000

28341469

9.3

11

El Padrino: Parte III

1970

54000000

136900000

7.6

ACTUALIZACIÓN

Utilizamos la sentencia UPDATE para modificar los registros existentes en una tabla. 

Q10: Corrige el año de publicación de "El Padrino": Parte III" será 1990 en lugar de 1970

Syntax: UPDATE nombre_tabla SET columna1 = valor1, columna2 = valor2, ...WHERE condición;

Consulta SQL: UPDATE films SET año_estreno = 1990 WHERE title = 'El Padrino: Parte III";

Tabla resultante

 

title

release_year

budget

bruto

imdb_score

1

El Padrino

1972

6000000

134821952

9.2

2

El Caballero Oscuro

2008

185000000

533316061

9

3

El Padrino: Parte II

1974

13000000

57300000

9

4

La lista de Schindler

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

El Señor de los Anillos: El retorno del Rey

2003

94000000

377019252

8.9

7

El club de la lucha

1999

63000000

37023395

8.8

8

Inicio

2010

160000000

292568851

8.8

9

La Guerra de las Galaxias: Episodio V - El Imperio Contraataca

1980

18000000

290158751

8.8

10

La redención de Shawshank

1994

25000000

28341469

9.3

11

El Padrino: Parte III

1990

54000000

136900000

7.6

DELETE

La sentencia DELETE se utiliza para eliminar un registro existente en una tabla. 

Q11: Elimina la entrada de 'El Padrino: Parte III" de la tabla "películas".

Syntax: DELETE FROM nombre_tabla WHERE condición;

Consulta SQL: DELETE FROM películas WHERE título = 'El Padrino: Parte III";

Tabla resultante: Igual que la tabla original que empezamos con un total de 10 registros.

Consultas SQL avanzadas

¿Recuerdas que pusimos el '*' mágico para una discusión posterior al final del Q1? El * es un asterisco. Se trata de un personaje global que podríamos interpretar como "todos". 

Volviendo a la Q1: ¿Cuáles son las películas almacenadas en la tabla?

Utilizamos SELECT - FROM con la sintaxis : SELECT columna1, columna2, ... FROM nombre_tabla;

Utilizamos la consulta: SELECT título FROM películas;

¿Y si no supieras que "título" es un campo de la tabla "películas"? ¿O el nombre de cualquier campo de la tabla? ¿O simplemente quieres todos los campos de la tabla para hacerte una idea de los datos?
Aquí es donde * resulta útil.

Podríamos reescribir la consulta como: SELECT * FROM películas; 

Así obtendremos todos los campos disponibles en la tabla.

SQL Wildcard Characters

COMO

El operador LIKE se utiliza en una cláusula WHERE para buscar un patrón especificado en una columna. 

Q12: Recuperar todos los nombres de la película que empiezan por 'La'

Syntax: SELECT columna1, columna2, ... FROM nombre_tabla WHERE columna1 LIKE patrónCoincidir;

Consulta SQL: Select * FROM películas WHERE título LIKE 'El%';

Tabla resultante:

 

title

release_year

budget

bruto

imdb_score

1

El Padrino

1972

6000000

134821952

9.2

2

El Caballero Oscuro

2008

185000000

533316061

9

3

El Padrino: Parte II

1974

13000000

57300000

9

4

El Señor de los Anillos: El retorno del Rey

2003

94000000

377019252

8.9

5

La redención de Shawshank

1994

25000000

28341469

9.3



Wildcard Character

Descripción

Uso: Ejemplo

% (Porcentaje)

Representa cero o más caracteres

El%: El, El Padrino, Theodore

(Por debajo de la puntuación)

Representa un solo carácter

T_e: La, Corbata

[ ] (corchetes)

Representa cualquier carácter dentro de los corchetes

C[ao]t: Gato, Cuna pero no Abrigo

^ (Cuña)

Representa cualquier carácter que no esté entre corchetes

Ca[^r]: Gato, taxi, lata pero no coche

- (Dash)

Representa cualquier carácter dentro del intervalo especificado

C[a-o]: Can, Cab pero no Car, Cat

Lo mejor es que podemos utilizar comodines en combinaciones. Por lo tanto, puede crear declaraciones de coincidencia bastante complejas utilizando caracteres comodín junto con LIKE.

Funciones agregadas

SQL es excelente para agregar datos como lo haría en una tabla dinámica de Excel. Las funciones de agregación pueden realizar cálculos no entre dos columnas, sino dentro de una columna, por lo que se puede trabajar con todas o algunas filas de una misma columna. 

Estas son las funciones agregadas dentro de SQL: 

Función

Descripción

COUNT

Cuenta el número de registros de una columna determinada

SUM

Suma todos los valores de una columna determinada

MIN

Devuelve el valor más bajo de una columna determinada

MAX

Devuelve los valores más altos de una columna determinada

AVG

Devuelve el valor medio de un grupo seleccionado 

Q13: ¿Cuál es la última película almacenada en la tabla?

Consulta SQL: SELECT title AS latest_movie, MAX(release_year) AS released_in FROM films;

Resultado

 

latest_movie

released_in

1

Inicio

2010

GRUPO POR

Las funciones de agregación de SQL agregan una columna entera. Pero, ¿y si sólo quieres agregar parte de una columna? Por ejemplo, puedes querer contar el número de películas estrenadas en un año.

Aquí es donde necesitarías una cláusula GROUP BY. GROUP BY permite separar los datos en grupos, que luego pueden agregarse independientemente unos de otros.

Q13: Cuenta el número de películas estrenadas en un año.

Consulta SQL: SELECT año_estreno, COUNT(*) COMO número_de_películas FROM películas GROUP BY año_estreno;

Resultado

 

release_year

number_of_movies

1

1972

1

2

2008

1

3

1974

1

4

1993

1

5

1994

2

6

2003

1

7

1999

1

8

2010

1

9

1980

1

Ejemplos de consulta SQL a partir de varias tablas

Hasta ahora, sólo hemos trabajado con una tabla cada vez. Pero la verdadera potencia de las bases de datos y SQL reside en la posibilidad de trabajar con datos de varias tablas. 

El término "base de datos relacional" en RDBMS proviene del hecho de que las tablas dentro de la base de datos se relacionan entre sí. Tienen identificadores comunes que permiten combinar fácilmente los datos de varias tablas. Aquí es donde utilizamos JOINS de tablas SQL.

Veamos un ejemplo sencillo para familiarizarnos con la sintaxis JOIN y también para aprender un poco sobre los diferentes tipos de JOINS posibles.

Consideremos otra tabla llamada 'movieDirectors' que contiene el nombre del director de algunas de las películas que tenemos en la tabla 'films'. 

 

title

director

1

El Padrino

Francis Ford Coppola

2

El Padrino: Parte II

Francis Ford Coppola

3

El Padrino: Parte III

Francis Ford Coppola

4

La lista de Schindler

Steven Spielberg

5

El Caballero Oscuro Asciende

Christopher Nolan

Podríamos combinar los datos de estas dos tablas utilizando un identificador común: "título".

Q14: Añade una columna a la tabla "películas", rellenándola con el nombre del director de la tabla "directores de películas".

Syntax: SELECT tablaizquierda.columna1, tabladerecha.columna1, tablaizquierda.columna2.... FROM leftTable INNER JOIN rightTable ON leftTable.commonIdentifier = rightTable.commonIdentifier;

Consulta SQL: Seleccione film.title, film.release_year, movieDirectors.director FROM films INNER JOIN movieDirectors ON film.title = movieDirectors.title

Resultado

 

title

release_year

director

1

El Padrino

1972

Francis Ford Coppola

2

El Padrino: Parte II

1974

Francis Ford Coppola

3

La lista de Schindler

1993

Steven Spielberg

Diferentes tipos de uniones SQL

JOIN

Descripción

Diagrama

Unión interna

Devuelve sólo los registros que tienen valores coincidentes en ambas tablas

Inner Join

Unión izquierda (exterior)

Devuelve todos los registros de la tabla izquierda y los registros coincidentes de la tabla derecha

Unión izquierda (externa)

Unión derecha (externa)

Devuelve todos los registros de la tabla derecha y los registros coincidentes de la tabla izquierda

Unión derecha (externa)

Unión completa (externa)

Devuelve todos los registros cuando hay una coincidencia en la tabla izquierda o derecha

Unión completa (externa)

En el ejemplo de consulta anterior, "películas" es la tabla de la izquierda y "directores de películas" es la tabla de la derecha. Así que con el INNER JOIN que realizamos, sólo recuperamos las películas que existían en ambas tablas. El conjunto de resultados era una intersección de las dos tablas.

UNIÓN SQL

Los JOINS SQL permiten combinar dos conjuntos de datos uno al lado del otro. Pero con SQL UNION puedes apilar un conjunto de datos sobre otro. El operador UNION se utiliza para combinar el conjunto de resultados de dos o más sentencias SELECT cuando se cumplen las siguientes "reglas": 

  1. Todas las sentencias SELECT deben tener el mismo número de columnas.
  2. Las columnas también deben tener tipos de datos similares.
  3. Las columnas utilizadas en las sentencias SELECT deben estar en el mismo orden.

Syntax: SELECT nombre_columna(s) FROM tabla1 UNION ALL SELECT nombre_columna(s) FROM tabla2;

Consideremos la tabla "movies_2000s":

 

title

release_year

budget

bruto

imdb_score

1

Inicio

2010

160000000

292568851

8.8

2

El juicio de los 7 de Chicago 

2020

35000000

 

7.7

Ahora, si combináramos las dos tablas...

Consulta SQL: SELECT title FROM films UNION SELECT title FROM movies_2000s;

Resultado

 

title

1

El Padrino

2

El Caballero Oscuro

3

El Padrino: Parte II

4

La lista de Schindler

5

Pulp Fiction

6

El Señor de los Anillos: El retorno del Rey

7

El club de la lucha

8

Inicio

9

La Guerra de las Galaxias: Episodio V - El Imperio Contraataca

10

La redención de Shawshank

12

El juicio de los 7 de Chicago 

Habrá observado que "Inception" sólo aparece una vez en el conjunto de resultados. Esto se debe a que UNION sólo selecciona valores distintos; si desea todos los valores, puede utilizar UNION ALL.

Consultas SQL ANIDADAS

SQL es capaz de hacer maravillas con los datos. Las consultas anidadas son otra de las herramientas de SQL que lo convierten en un lenguaje que merece la pena conocer. Una consulta anidada no es más que una consulta dentro de otra consulta (algo así como los sueños en Inception).

Con las consultas anidadas, puede realizar operaciones muy complicadas pero en varios pasos, manteniendo intacta la legibilidad y comprensibilidad del código.

Q15: Determina la rentabilidad media de las películas de la tabla "películas".

Pista: Has calculado la rentabilidad antes, con Q3. Ahora tiene que tomar el resultado de esta consulta y aplicarle la función AVG.

Consulta anidada SQL

SELECT AVG(*) AS average_profit FROM 

(SELECT title, (gross - budget) AS movie_profit FROM films where gross > budget);

Eliminamos el valor negativo de "Fight Club" en el cálculo dentro de la consulta SQL interna añadiendo bruto > presupuesto. 

En la consulta anidada anterior, primero se ejecuta la consulta interna y luego este conjunto de resultados se utiliza como tabla temporal para que la consulta externa consulte y obtenga datos. 

No profundizaremos demasiado en el tema de las consultas SQL anidadas. Pero le recomendamos encarecidamente que siga el curso SQL Intermedio de DataCamp para dominar las consultas SQL. Jugarás con la base de datos de fútbol europeo mientras aprendes más sobre las consultas anidadas. También aprenderá sobre las sentencias CASE y las funciones de ventana, temas que no pudimos tratar en este tutorial de consultas SQL. 

Reflexiones finales

Has aprendido mucho sobre consultas SQL y estás en una gran posición para comenzar tu viaje con alguna resolución de problemas del mundo real usando SQL. En este tutorial de consultas SQL, aprendiste qué es una consulta SQL y cómo escribir consultas SQL. 

Has visto la sintaxis de la consulta y has respondido a algunas preguntas por el camino. Empezamos con ejemplos de consultas SQL sencillas utilizando sentencias SELECT - FROM - WHERE y continuamos con consultas SQL algo más complejas utilizando uniones, uniones y consultas anidadas. 

Hemos cubierto mucho en el tutorial, sin embargo esta NO es una lista exhaustiva de todas las posibles consultas SQL simples y avanzadas - hay más. Y recomendamos encarecidamente seguir el curso de Fundamentos de SQL de DataCamp para obtener un conocimiento más profundo y exhaustivo de SQL. 

Recuerda que la práctica es la clave para dominar cualquier habilidad, y SQL no es una excepción. Practica llevará tus conocimientos de SQL de principiante a avanzado.

Así que ponte manos a la obra y ¡buenas consultas!

Temas

Cursos para SQL

Course

Joining Data in SQL

4 hr
132.9K
Level up your SQL knowledge and learn to join tables together, apply relational set theory, and work with subqueries.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

blog

Las 80 mejores preguntas y respuestas de entrevistas SQL para principiantes y profesionales intermedios

Este artículo ofrece una visión completa de 80 preguntas y respuestas esenciales sobre SQL para los que buscan trabajo, los directores de RR. HH. y los reclutadores, y abarca tanto temas generales como preguntas técnicas.
Elena Kosourova's photo

Elena Kosourova

12 min

blog

10 proyectos SQL listos para el portafolio para todos los niveles

Selecciona tu primer -o siguiente- proyecto SQL para practicar tus habilidades SQL actuales, desarrollar otras nuevas y crear un portafolio profesional excepcional.
Elena Kosourova's photo

Elena Kosourova

11 min

blog

SQL Server, PostgreSQL, MySQL... ¿cuál es la diferencia? ¿Por dónde empiezo?

En este tutorial, aprenderás algunas de las diferencias básicas entre los dialectos SQL y por dónde deberías empezar.
Mona Khalil's photo

Mona Khalil

5 min

tutorial

Tutorial sobre cómo ejecutar consultas SQL en Python y R

Aprenda formas fáciles y eficaces de ejecutar consultas SQL en Python y R para el análisis de datos y la gestión de bases de datos.
Abid Ali Awan's photo

Abid Ali Awan

13 min

tutorial

Tutorial de SQLAlchemy con ejemplos

Aprende a acceder y ejecutar consultas SQL en todo tipo de bases de datos relacionales utilizando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

3 min

See MoreSee More