Consultas complejas de SQL: funcionalidad y ejemplos
Consultas complejas de SQL
Considere la enorme cantidad de datos que estarían presentes en una base de datos de música como Spotify. A veces, desea buscar más que un solo artista o álbum, o tal vez desee reunir diferentes subconjuntos de datos. Primero echemos un vistazo a cómo podría funcionar esto si fuera un administrador de base de datos que trabaja con un método de unión interno.
Unir internamente
Digamos que tienes una base de datos de música. Los álbumes, artistas, géneros, reseñas, etc. se almacenan en tablas separadas. Si desea obtener todos los registros de dos tablas relacionadas, puede usar una combinación interna simple . Esto selecciona datos donde los valores coinciden en ambas tablas. Mira estas tablas. El primero son algunos datos de muestra y el segundo es la tabla de álbumes:
Data de muestra
artistID | nombre del artista |
---|---|
1 | Viaje |
2 | Pastel de carne |
3 | Enya |
4 | Kate Wolf |
5 | Aerosmith |
Tabla de álbumes
albumID | artistID | Título del álbum |
---|---|---|
1 | 1 | Criado en la radio |
2 | 1 | Grandes Exitos |
3 | 2 | Murcielago del infierno |
4 | 2 | Timbre muerto |
5 | 3 | Los celtas |
6 | 4 | Corazón de poeta |
Este código es cómo aparecería la unión interna:
SELECCIONAR *
DE tblAlbum
INNER JOIN tblArtist ON
tblAlbum.artistID = tblArtist.artistID;
Ahora, con esta nueva tabla podemos ver que el resultado son 6 filas porque solo nos importan aquellos registros donde coinciden los ID.
albumIID | tblAlbum.artistID | Título del álbum | tblArtist.artistID | nombre del artista |
---|---|---|---|---|
1 | 1 | Criado en la radio | 1 | Viaje |
2 | 2 | Grandes Exitos | 1 | Viaje |
3 | 2 | Murcielago del infierno | 2 | Pastel de carne |
4 | 2 | Timbre muerto | 2 | Pastel de carne |
5 | 3 | Los celtas | 3 | Enya |
6 | 4 | Corazón de poeta | 4 | Kate Wolf |
Ahora, aquí hay un gráfico que representa una combinación interna. Parece bastante simple, ¿verdad?
![]() |
Unión externa
Ahora, echemos un vistazo más de cerca al uso del método de unión externa. Una combinación externa izquierda devuelve TODOS los registros coincidentes en la tabla de la izquierda, más los registros que coinciden en el medio (la combinación interna).
La declaración SQL es la siguiente:
SELECCIONAR * DE tblArtist
LEFT OUTER JOIN tblAlbum ON
tblArtist.artistID = tblAlbum.artistID;
Esto genera las siete filas porque ahora obtenemos el registro de Aerosmith. Esta banda aún no tiene ningún álbum ingresado, ya que hay muchos para agregar. Sin embargo, al ejecutar la combinación externa izquierda, podemos ver su entrada.
tblArtist.artistID | nombre del artista | albumID | tblAlbum.artistID | Título del álbum |
---|---|---|---|---|
1 | Viaje | 1 | 1 | Criado en la radio |
1 | Viaje | 2 | 1 | Grandes Exitos |
2 | Pastel de carne | 3 | 2 | Murcielago del infierno |
2 | Pastel de carne | 4 | 2 | Timbre muerto |
3 | Enya | 5 | 3 | Los celtas |
4 | Kate Wolf | 6 | 4 | Corazón de poeta |
5 | Aerosmith |
Y ahora, aquí hay un gráfico que representa la combinación externa izquierda:
![]() |
Unión externa derecha
Ahora, echemos un vistazo al método de unión externa correcto. Digamos que tenías un álbum llamado Desconocido, y aún no estaba vinculado a un artista. Para recuperar este elemento de datos, puede utilizar la combinación externa derecha . Esto es como el exterior izquierdo, excepto que recupera los registros coincidentes más los de la tabla de la derecha.
Aquí está la declaración SQL:
SELECCIONAR *
DE tblArtist DERECHA EXTERIOR ÚNETE a tblAlbum ON tblArtist.artistID = tblAlbum.artistID;
Aquí hay un gráfico que muestra una combinación externa derecha:
![]() |
Unión externa completa (filas que no se unen)
Ahora echemos un vistazo a una combinación externa completa, en la que tenemos filas que no se unen. Considere que hemos insertado algunos álbumes nuevos y algunos artistas nuevos en la base de datos, pero no los hemos unido. Puedes ver esto en el código:
SELECCIONAR * DE tblArtist
COMPLETO EXTERIOR JOIN tblAlbum ON
tblArtist.artistID = tblAlbum.artistID
DONDE
tblArtist.artistID = NULL o tblAlbum.artistID = NULL;
Esto resultaría en algo como esta tabla:
albumID | artistID | Título del álbum | nombre del artista |
---|---|---|---|
8 | Desconocido | ||
9 | Lo menos peor de | ||
10 | Alto brillo fuerte y claro | ||
5 | Aerosmith | ||
6 | La banda de Star Wars | ||
7 | Latón canadiense |
Observe que usamos una combinación externa completa . Una combinación externa completa devuelve resultados de ambas tablas. Es una combinación de todo. Hemos mostrado cómo usarlo para encontrar solo filas que no coinciden.
En una base de datos relacional, esto puede ser útil para encontrar registros que no estén completamente establecidos (por ejemplo, no ingresamos los álbumes de Canadian Brass).
Unión
Ahora, echemos un vistazo más de cerca a un sindicato. Una unión es similar a una unión externa completa, excepto que una unión devuelve todos los registros en filas nuevas; mientras que el exterior completo muestra los datos en columnas. En este sentido, una unión crea una mesa mucho más larga / más grande; la combinación externa completa es un conjunto de datos más amplio.
Procedimientos almacenados
Ahora, echemos un vistazo a los procedimientos almacenados. Como administrador de la base de datos, es posible que desee permitir que los usuarios ejecuten sus propios miniprogramas para recuperar datos. No desea exponerles toda la base de datos, pero quizás les permita ingresar el nombre de una banda y buscar álbumes.
La mayoría de las bases de datos SQL permiten procedimientos almacenados , que son pequeños programas que ejecutan sentencias SQL. Permiten a los usuarios ingresar parámetros u otra información. Así es como puede controlar qué información se expone a los usuarios. Puedes ver esto en el código:
Crear procedimiento uspGetArtist
@artistTable varchar (100)
@artistID int
AS
DECLARE @SQL varchar (1000)
SELECT @SQL = 'SELECT artistID, artistName FROM'
SELECT @SQL = @SQL + @artistTable
SELECT @SQL = @SQL + 'WHERE'
SELECCIONAR @SQL = @SQL + 'artistID =' + @artistID
Exec (@SQL)
GO
Para ejecutar el procedimiento, este comando se usaría detrás de escena:
EXEC dbo.uspGetArtist @artistID = 155
Los procedimientos almacenados son muy útiles en los sistemas de bases de datos. Ahorran tiempo y recursos al realizar tareas repetitivas rápidamente. Como se indicó anteriormente, también reducen lo que expone a los usuarios finales y la cantidad de datos a los que les permite acceder.
Resumen de la lección
Dediquemos unos minutos a recapitular las cosas importantes que aprendimos en esta lección sobre consultas complejas de SQL. SQL proporciona algunas opciones avanzadas para recuperar datos. Una forma típica de recuperar datos de varias tablas es la combinación interna , donde los registros se seleccionan solo si una condición determinada es verdadera. Sin embargo, es posible que desee recuperar registros coincidentes y de otro tipo de las tablas. Una combinación externa izquierda recupera tanto los elementos de datos coincidentes como todos los demás elementos de la tabla de la izquierda. Si desea ir al otro lado y recuperar registros coincidentes más los de la tabla de la derecha, una combinación externa derecha es apropiada. Si desea encontrar datos donde los elementos no están unidos, puede usar una variación de la combinación externa completapara buscar datos que no están unidos, mientras que una unión devuelve todos los registros en filas nuevas. Un procedimiento almacenado es un pequeño programa o procedimiento que se ejecuta en la base de datos para ejecutar comandos SQL.
Articulos relacionados
- ¿Qué es el Salario Real? Fórmula y ejemplos
- Propiedades de una sustancia: Definición, tipos y ejemplos
- ¿Qué es la Distribución Geográfica? Ejemplos
- Cliché: Definición, frases y ejemplos
- Literatura Fantástica Moderna: Definición, historia y ejemplos
- Atrio en Arquitectura: Definición y ejemplos
- Fuerza Centrípeta: Definición, ecuación y ejemplos
- Apreciación y Depreciación de una Moneda: Efectos y ejemplos
- Consecuencialismo: Definición, críticas y ejemplos
- Poesía concreta: definición y ejemplos