0% encontró este documento útil (0 votos)
37 vistas26 páginas

Capítulo 2 - Consultas Básicas y Filtrado de Filas

El documento describe las tablas de una base de datos de música que almacena información sobre canciones, artistas, álbumes y géneros musicales. Explica las modificaciones realizadas a las tablas Artistas y Canciones, como agregar columnas para el año de retiro de artistas y el idioma de canciones. También presenta las nuevas tablas Géneros y Álbumes creadas para almacenar datos de géneros musicales y álbumes.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
37 vistas26 páginas

Capítulo 2 - Consultas Básicas y Filtrado de Filas

El documento describe las tablas de una base de datos de música que almacena información sobre canciones, artistas, álbumes y géneros musicales. Explica las modificaciones realizadas a las tablas Artistas y Canciones, como agregar columnas para el año de retiro de artistas y el idioma de canciones. También presenta las nuevas tablas Géneros y Álbumes creadas para almacenar datos de géneros musicales y álbumes.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 26

Consultas básicas y filtrado de filas

Resultados de aprendizaje

Identifica los elementos básicos de una consulta escrita en el leguaje SQL.

Construye consultas desde una única tabla, en las que se filtran filas de la
tabla de origen, se excluyen filas duplicadas y se ordenan las filas resultantes.

Las bases de datos relacionales se construyen para que los usuarios, personas o
aplicaciones software, puedan consultar lo que está almacenado en ellas de forma
sencilla, rápida y precisa. Para esto existe el Lenguaje Estructurado de Consulta o SQL
(acrónimo de la expresión en inglés Structured Query Language) el cual es un lenguaje
de dominio específico que fue creado con base en lo planteado en el modelo relacional
de bases de datos propuesto en 1970 por Edgar Frank Codd, específicamente con la
aplicación del álgebra y el cálculo relacional. Luego se convirtió en un estándar
internacional y en la actualidad está presente en la mayoría de los DBMS comerciales.

En este segundo capítulo se abordan los elementos para dar los primeros pasos en el
uso del lenguaje y resolver necesidades de datos con consultas básicas realizadas
únicamente sobre una tabla. En tal sentido, los resultados de aprendizaje están
centrados en trabajar con la sentencia SELECT, la cual permite, de forma muy sencilla,
solicitarle al DBMS la selección de un conjunto de datos requeridos, obteniendo como
respuesta una tabla.
Bases de datos relacionales para estudiantes de pregrado

A diferencia de los lenguajes de programación de propósito general, como C, C++,


Java, C# o Python, los cuales tienen elementos que permiten generar aplicaciones para
resolver problemas de diferente naturaleza, el SQL tiene un pequeño conjunto de
poderosas operaciones que son muy sencillas de entender y utilizar. Todas las
operaciones se enfocan exclusivamente al ámbito de las bases de datos relacionales y
su carácter declarativo a alto nivel, contrario a un lenguaje procedimental, hace que
la programación sea muy cercana a una especificación de lo que debe hacerse sin que
sea necesario entrar en detalles sobre cómo debe hacerse. Esto es posible porque el
DBMS es el encargado de ejecutar las instrucciones escritas en SQL, lo cual incluye la
responsabilidad de definir la mejor forma de ejecutarlas.

Por ejemplo, una instrucción en SQL para realizar una consulta podría solamente
especificar los datos, es decir, las columnas requeridas, la tabla en dónde están dichas
columnas y, si es el caso, la condición que deben cumplir las filas para ser incluidas en
la tabla resultante. El DBMS tomará esa instrucción y determinará, por ejemplo, si es
necesario recorrer una a una las filas de la tabla para identificar aquellas en las que se
almacenan ciertos datos o si puede utilizar alguna estructura de datos que permita la
ejecución de procedimientos para hacer más eficiente el proceso. Esta forma de
operación se representa de forma general en la Figura 2-1.

Figura 2-1 Esquema general de operación de un sistema de bases de datos

24 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

Las operaciones del lenguaje SQL se agrupan en tres categorías o en tres sub-lenguajes
de acuerdo con la función general que cumplen. El primero reúne a las operaciones
de creación de los objetos de la base de datos y se conoce como el Lenguaje de
Definición de Datos o DDL (acrónimo de la expresión en inglés Data Definition
Language). El segundo, denominado Lenguaje de Manipulación de Datos o DML
(acrónimo de la expresión en inglés Data Manipulation Language), está conformado por
las operaciones con las que se procesan los datos de las tablas para, por ejemplo,
insertar nuevas filas, consultarlos, modificarlos y eliminarlos. El tercero, conocido
como Lenguaje de Control de Datos o DCL (acrónimo de la expresión en inglés Data
Control Language), contiene las operaciones para establecer y controlar quién puede
acceder a la base de datos, a los objetos que la componen y a los datos almacenados.

2.1 Consultas básicas sobre una única tabla


Para iniciar el aprendizaje del SQL se continuará trabajando con la base de datos de
la colección de canciones de una plataforma que le ofrece al público la posibilidad de
escucharlas gratuitamente o pagando una tarifa de suscripción mensual. Sin embargo,
no se utilizarán las mismas tablas porque, al igual que sucede en situaciones reales, el
diseño original fue evaluado y mejorado, con lo cual se generó una nueva versión de
la base de datos que contempla los elementos descritos en los siguientes párrafos.

Los datos esenciales para administrar la colección siguen siendo los correspondientes
a las canciones y a los artistas que las interpretan. Por consiguiente, las tablas Artistas
y Canciones se mantienen, pero adicionándole algunas columnas o modificando el
contenido de otras para reducir la redundancia. Además, se introdujeron dos nuevas
tablas para almacenar los datos de los Álbumes en los cuales estuvieron incluidas las
canciones al momento del lanzamiento y los Géneros musicales que permiten clasificar
tanto a las Canciones como a los Artistas.

En la tabla Artistas se agregó una columna para registrar el año de retiro, es decir,
cuando el solista deja la actividad musical profesional o cuando el grupo se desintegra.
Esta nueva columna permite valores nulos (NULL) para los artistas que no se han
retirado, es decir, que están activos actualmente. También se cambió el contenido de
la columna género principal por un número que corresponde al identificador del
género según lo registrado en la nueva tabla Géneros.

En la tabla Canciones se agregó una columna para registrar el idioma principal de la


canción. También se cambiaron los nombres de las columnas artista y álbum por
artista principal y álbum original respectivamente. En la renombrada columna
álbum original se modificó el contenido para registrar el identificador del álbum en
el que fue incluida la canción al momento de su lanzamiento, de acuerdo con lo
registrado en la nueva tabla Álbumes. Esta columna permite valores nulos (NULL) para
que puedan registrarse las canciones que fueron lanzadas sin hacer parte de algún
álbum. En la Tabla 2-1 se presenta la nueva versión de la tabla Artistas y en la Tabla
2-2 la nueva versión de la tabla Canciones. Por su parte, en la Tabla 2-3 se presenta la
nueva tabla Géneros y en la Tabla 2-4 la nueva tabla Álbumes.

E.A. Galvis-Lista - A.A. Bustamante-Martínez 25


Bases de datos relacionales para estudiantes de pregrado

Tabla 2-1 Nueva versión de la tabla Artistas

Artistas
identificador nombre año de lanzamiento año de retiro tipo género principal
50001 Carlos Vives 1986 NULL Solista 1
50002 Niche 1979 NULL Grupo 2
50003 Shakira 1990 NULL Solista 3
50004 Binomio de Oro de América 1976 NULL Grupo 1
50005 J Balvin 2006 NULL Solista 4

Tabla 2-2 Nueva versión de la tabla Canciones

v
identificador título duración género idioma artista principal álbum original
10001 La tierra del olvido 00:04:25 1 español 50001 900001
10002 Ojos así 00:03:57 3 español 50003 900002
10003 Mi gente 00:03:05 4 español 50005 NULL
10004 Ambiente 00:04:08 4 español 50005 900004
10005 Cali pachanguero 00:04:51 2 español 50002 900005
10006 La creciente 00:03:04 1 español 50004 900006
10007 Sueños de conquista 00:04:02 1 español 50004 900008
10009 Carito 00:03:39 3 español 50001 900009
10011 Una aventura 00:05:16 2 español 50002 900011
10012 Ginza 00:04:39 4 español 50005 NULL
10013 Octavo día 00:04:32 3 español 50003 900002
10014 Quiero verte sonreír 00:03:18 3 español 50001 900009

Tabla 2-3 Nueva tabla Géneros

Géneros
identificador nombre
1 Vallenato
2 Salsa
3 Pop
4 Urbano Latino

Tabla 2-4 Nueva tabla Álbumes

Álbumes
identificador título fecha de lanzamiento sello discográfico
900001 La tierra del olvido 25/07/1995 EMI Latin
900002 ¿Dónde están los ladrones? 29/09/1998 Sony Music
900004 Vibras 25/05/2018 Universal
900005 No hay quinto malo NULL Internacional Records
900006 El binomio de oro 03/11/1976 Codiscos
900008 Por lo alto 02/11/1976 Codiscos
900009 Déjame entrar 06/11/2001 EMI Latin
900011 Cielo de tambores 20/12/1990 Codiscos

26 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

Teniendo la claridad sobre los elementos que componen la nueva versión de la base
de datos, se iniciará el aprendizaje del SQL utilizando los cuatro elementos de análisis
planteados en el Capítulo I y su equivalencia en el lenguaje. Para esto se propone la
siguiente pregunta que especifica una necesidad de datos que debe ser satisfecha.

Cuál es el identificador, el nombre, el año de


¿
lanzamiento, el año de retiro, el tipo y el género
principal de todos los artistas?
1. Ubicación de los datos Todos los datos requeridos están en la tabla
Artistas.

2. Filas necesarias Todas las filas. No hay condiciones o filtros.

3. Columnas para mostrar Las columnas identificador, nombre, año de


lanzamiento, año de retiro, tipo y género
principal de la tabla Artistas. Son todas las
columnas de la tabla.

4. Operaciones sobre los datos No se requieren operaciones sobre los datos.


Deben mostrarse tal y como están almacenados.

Este análisis presenta el escenario más sencillo de consulta de los datos de una tabla
con SQL. Aquí deben obtenerse todas las columnas y todas las filas. No se establecen
filtros ni operaciones sobre los datos. En tal sentido, lo siguiente será escribir la
consulta que deberá ejecutar el DBMS para retornar los datos requeridos. Es preciso
mencionar que este esquema de análisis de cuatro elementos se va interiorizando con
la práctica y su elaboración escrita se vuelve opcional.

Vale recordar que en SQL debe expresarse lo que debe realizar el DBMS sin necesidad
de definir y programar la forma en que debe realizarse. Por consiguiente, para este
caso en concreto debe indicársele al DBMS que entregue una tabla conformada con
los datos almacenados en todas las columnas y todas las filas de la tabla Artistas. El
código SQL para lograr este resultado se presenta en el Script 2-1. El resultado de
esta consulta se presenta en la Tabla 2-5.

Script 2-1

SELECT identificador,
nombre,
"año de lanzamiento",
"año de retiro",
tipo,
"género principal"
FROM Artistas

E.A. Galvis-Lista - A.A. Bustamante-Martínez 27


Bases de datos relacionales para estudiantes de pregrado

Tabla 2-5 Resultado de la consulta del Script 2-1

identificador nombre año de lanzamiento año de retiro tipo género principal


50001 Carlos Vives 1986 NULL Solista 1
50002 Niche 1979 NULL Grupo 2
50003 Shakira 1990 NULL Solista 3
50004 Binomio de Oro de América 1976 NULL Grupo 1
50005 J Balvin 2006 NULL Solista 4

En el Script 2-1 puede verse que una consulta SQL tiene una estructura y una sintaxis
sencilla. En este caso se utilizan las palabras SELECT y FROM para comunicarle al DBMS
dos puntos necesarios para obtener la respuesta deseada. El primero especifica las
columnas que deben incluirse en la tabla resultante y el segundo define la tabla que
contienen esas columnas. Al hacer una equivalencia con los cuatro elementos de
análisis que se han venido utilizando desde el Capítulo 1, puede verse que el elemento
3, Columnas para mostrar, equivale en SQL a la palabra SELECT, y el elemento 1,
Ubicación de los datos, equivale a la palabra FROM del SQL.

Los nombres de las columnas que tienen espacios en blanco están entre comillas
cumpliendo las reglas de sintaxis del SQL implementado en el DBMS Postgres. En
otros DBMS se utilizan otros símbolos para indicar que el nombre de una columna
incluye espacios en blanco, como es el caso de SQL Server que utiliza corchetes [ ].

El lenguaje SQL no es sensible a las mayúsculas y tampoco interpreta los saltos de


línea como el fin de una línea de código o de una instrucción. En tal sentido, para el
DBMS el código del Script 2-2 es exactamente el mismo que el código del Script 2-1.
Para el observador humano la diferencia de estas dos versiones está dada por aspectos
estéticos y de presentación que redundan en la facilidad de lectura y comprensión.

Script 2-2

select identiFICADOR, nombre,


"año de lanzamiento", "año de retiro",
tipo, "género principal"
from ARTISTAS

En el SQL puede usarse el carácter * para hacer referencia a todas las columnas de
una tabla. Por lo tanto, el Script 2-3 genera el mismo resultado que el Script 2-1. Usar
el carácter * tiene varias ventajas. Una es que permite reducir significativamente el
tamaño código. También hace que la misma consulta funcione independientemente de
que se agreguen o eliminen columnas de la tabla. Sin embargo, también tiene limitantes
como que no puede alterarse el orden de las columnas en la tabla resultante.

Script 2-3

SELECT * FROM Artistas

28 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

En las consultas en las que se declara de forma explícita todas las columnas de la tabla
consultada, se tiene la opción de cambiar el orden en que aparecerán las columnas en
la tabla resultante. Para esto, deben ubicarse en el orden deseado dentro de la lista
separada por comas después de la palabra SELECT. El Script 2-4 ejemplifica esto.
Script 2-4

SELECT identificador,
nombre,
tipo,
"género principal",
"año de lanzamiento",
"año de retiro"
FROM Artistas

El resultado de ejecutar el Script 2-4 contendrá los mismos datos obtenidos con el
Script 2-1 , pero con una estructura distinta, tal y como se muestra en la Tabla 2-6.
Tabla 2-6 Resultado de la consulta del Script 2-4

identificador nombre tipo género principal año de lanzamiento año de retiro


50001 Carlos Vives Solista 1 1986 NULL
50002 Niche Grupo 2 1979 NULL
50003 Shakira Solista 3 1990 NULL
50004 Binomio de Oro de América Grupo 1 1976 NULL
50005 J Balvin Solista 4 2006 NULL

Para resolver las necesidades de datos es muy común que las consultas se limiten a
un subconjunto de columnas. La declaración explícita, después de la palabra SELECT,
de las columnas a incluir también permite que se especifiquen solamente aquellas
columnas requeridas evitando generar resultados con datos innecesarios. Para ilustrar
esto se propone la necesidad expresada en la siguiente pregunta.

¿Cuál es el título, la fecha de lanzamiento y el sello


discográfico de todos los álbumes?
Al analizar la pregunta elaborando mentalmente el esquema de cuatro elementos se
identifica que los datos requeridos están almacenados en la tabla Álbumes y son tres
las columnas a mostrar, tal y como se presenta en la Figura 2-2.
Figura 2-2 Columnas requeridas para responder la pregunta

E.A. Galvis-Lista - A.A. Bustamante-Martínez 29


Bases de datos relacionales para estudiantes de pregrado

Específicamente se requieren las columnas título, fecha de lanzamiento y sello


discográfico de la tabla Álbumes. No se requieren filtros ni operaciones sobre los
datos para conformar la tabla resultante.

Con esto puede proponerse la consulta SQL del Script 2-5 en la que se incluyen
solamente los nombres de las tres columnas requeridas luego de la palabra SELECT.
Estos nombres se presentan separados por coma. En la Tabla 2-7 se presenta el
resultado de ejecutar la consulta.
Script 2-5

SELECT título,
"fecha de lanzamiento",
"sello discográfico"
FROM Álbumes

Tabla 2-7 Resultado de la consulta del Script 2-5

título fecha de lanzamiento sello discográfico


La tierra del olvido 25/07/1995 EMI Latin
¿Dónde están los ladrones? 29/09/1998 Sony Music
Vibras 25/05/2018 Universal
No hay quinto malo NULL Internacional Records
El binomio de oro 03/11/1976 Codiscos
Por lo alto 02/11/1976 Codiscos
Déjame entrar 06/11/2001 EMI Latin
Cielo de tambores 20/12/1990 Codiscos

Una posibilidad que ofrece el SQL para mejorar la presentación de los resultados,
precisar el contenido que se muestra, o eliminar ambigüedades, es la de asignarle un
nombre alternativo o un alias a las columnas que se van a mostrar. Podría ser, por
ejemplo, que quiera mejorarse la presentación del resultado expuesto en la Tabla 2-7.

En lugar de obtener una columna llamada título se podría utilizar la palabra álbum, en
lugar de fecha de lanzamiento el encabezado lanzamiento y en lugar de sello
discográfico la palabra disquera. Para cumplir con este requisito de presentación, la
consulta SQL debe modificarse tal como se muestra en el Script 2-6.
Script 2-6

SELECT título AS álbum,


"fecha de lanzamiento" AS lanzamiento,
"sello discográfico" disquera
FROM Álbumes

Puede observarse que hay dos formas de asignar el alias, La primera, de forma
explícita, en la que se utiliza la palabra AS seguida del nombre que va a tener la columna
en la tabla resultante, como es el caso de los alias álbum y lanzamiento. La segunda,
de forma implícita, en la que, simplemente, se escribe el alias luego del nombre de la
columna, como es el caso de la columna sello discográfico y el alias disquera.

30 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

Al asignar un alias no se modifica la tabla de la base de datos, lo que se modifica es la


tabla resultante que genera el DBMS al ejecutar la consulta. En la Tabla 2-8 se presenta
el resultado de la consulta con los alias asignados.

Tabla 2-8 Resultado de la consulta del Script 2-6

álbum lanzamiento disquera


La tierra del olvido 25/07/1995 EMI Latin
¿Dónde están los ladrones? 29/09/1998 Sony Music
Vibras 25/05/2018 Universal
No hay quinto malo NULL Internacional Records
El binomio de oro 03/11/1976 Codiscos
Por lo alto 02/11/1976 Codiscos
Déjame entrar 06/11/2001 EMI Latin
Cielo de tambores 20/12/1990 Codiscos

2.2 Exclusión de filas duplicadas y ordenamiento de resultados


En algunas ocasiones las consultas parecen realmente sencillas, pero tienen algunos
detalles que deben cuidarse para evitar errores. Uno de estos casos puede darse al
resolver la siguiente pregunta.

¿Cuáles son los tipos de artistas que están


registrados en la base de datos?
Para responder la pregunta se identifica que los datos requeridos están almacenados
en la tabla Artistas y solamente se requieren datos almacenados en una de las
columnas de esta tabla, tal y como se presenta en la Figura 2-3.

Figura 2-3 Columna requerida para responder la pregunta

En este sentido, lo primero que puede pensarse es escribir una consulta para obtener
la columna tipo de la tabla Artistas, como se muestra en el Script 2-7. Al ejecutarla,
el DBMS genera el resultado mostrado en la Tabla 2-9. La tabla resultante tiene la
columna requerida con los datos almacenados en todas las filas de la tabla.
Script 2-7

SELECT tipo
FROM Artistas

E.A. Galvis-Lista - A.A. Bustamante-Martínez 31


Bases de datos relacionales para estudiantes de pregrado

Tabla 2-9 Resultado de la consulta del Script 2-7

tipo
Solista
Grupo
Solista
Grupo
Solista

Este resultado no puede aceptarse como respuesta a la pregunta porque hay filas
duplicadas. Del análisis directo sobre los datos puede identificarse que la respuesta
correcta a la pregunta debería tener únicamente dos filas, una para el tipo de artista
denominado “Grupo” y otra para el tipo “Solista”. Para estos casos, el SQL proporciona
una forma de eliminar las filas duplicadas y obtener el resultado requerido.
Específicamente, debe utilizarse la palabra DISTINCT, tal y como se presenta en el Script
2-8, generándose el resultado mostrado en la Tabla 2-10.

Script 2-8

SELECT DISTINCT
tipo
FROM Artistas

Tabla 2-10 Resultado de la consulta del Script 2-8

tipo
Grupo
Solista

La palabra DISTINCT también puede utilizarse en consultas que muestren más de una
columna. En este caso, el DBMS mostrará únicamente las filas con combinaciones
distintas. Para ilustrar esto se abordará la solución a la siguiente pregunta.

¿Cuáles son los idiomas de las canciones de la


colección en cada género?
La respuesta esperada es una tabla con las columnas género e idioma de la tabla
Canciones, tal y como se presenta en la Figura 2-4. Las filas esperadas son
combinaciones distintas de géneros e idiomas. Por ejemplo, si del género 3 hay cinco
canciones, tres en español y dos en inglés, la tabla resultante debería incluir dos filas
con las combinaciones (3, español) y (3, inglés).

Figura 2-4 Columnas requeridas para responder la pregunta

32 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

La consulta SQL para responder la pregunta se presenta en el Script 2-9, con la cual
se obtiene el resultado presentado en la Tabla 2-11.

Script 2-9

SELECT DISTINCT
género,
idioma
FROM Canciones

Tabla 2-11 Resultado de la consulta del Script 2-9

género idioma
1 español
2 español
3 español
4 español

Frecuentemente deben mostrarse los resultados de una consulta en un orden


particular definido por algún criterio basado en los datos almacenados en una o en
varias columnas. Esto es algo para tener en cuenta en toda consulta y así facilitar el
uso de los resultados que se obtenga de la ejecución.

El SQL incluye una instrucción que permite indicarle al DBMS el criterio de


ordenamiento a utilizar, es decir, la columna o las columnas que debe tomar como
base para esta operación, y el tipo de ordenamiento, es decir, si es ascendente o
descendente. Esta operación tiene un comportamiento que depende del tipo de dato
de las columnas utilizadas como criterio de ordenamiento. Los números se ordenan
por su magnitud, los textos alfabéticamente y las fechas cronológicamente. En la Figura
2-5 se describe el ordenamiento en estos casos.

Figura 2-5 Comportamiento del ordenamiento en algunas familias de tipos de datos

E.A. Galvis-Lista - A.A. Bustamante-Martínez 33


Bases de datos relacionales para estudiantes de pregrado

Para mostrar esta opción de ordenamiento se tomará como base la consulta del Script
2-6 con la cual se responde la pregunta sobre el título, le fecha de lanzamiento y el
sello discográfico de los álbumes registrados en la colección. En esa consulta se
utilizaron alias de los nombres de las columnas para mejorar la presentación y facilitar
la comprensión de los datos contenidos en la tabla resultante. Sin embargo, los datos
se presentan si un orden definido. Resultaría mucho mejor si los datos aparecen
ordenados, por ejemplo, por el título del álbum de forma alfabética. La consulta SQL
que cumpliría este requisito se presenta en el Script 2-10.

Script 2-10

SELECT título AS álbum,


"fecha de lanzamiento" AS lanzamiento,
"sello discográfico" disquera
FROM Álbumes
ORDER BY álbum ASC

La expresión ORDER BY le indica al DBMS que el resultado de la consulta debe


presentarse siguiendo un criterio de ordenamiento. La sintaxis del lenguaje especifica
que luego de la expresión ORDER BY deben definirse las columnas que se utilizan como
criterios de ordenamiento. Por cada columna debe especificarse si el orden es
ascendente (ASC) o descendente (DESC). Si esto no se define, el DBMS ordenará de
forma ascendente. El resultado de la nueva consulta se presenta en la Tabla 2-12.

Tabla 2-12 Resultado de la ejecución del Script 2-10

álbum lanzamiento disquera


¿Dónde están los ladrones? 29/09/1998 Sony Music
Cielo de tambores 20/12/1990 Codiscos
Déjame entrar 06/11/2001 EMI Latin
El binomio de oro 03/11/1976 Codiscos
La tierra del olvido 25/07/1995 EMI Latin
No hay quinto malo NULL Internacional Records
Por lo alto 02/11/1976 Codiscos
Vibras 25/05/2018 Universal

Teniendo en cuenta que el comportamiento predeterminado es ordenar de manera


ascendente por aquellas columnas que aparecen luego de la expresión ORDER BY, la
consulta del Script 2-11 es equivalente a la del Script 2-10. En esta se utiliza el nombre
de la columna título tal y como está en la tabla Álbumes en lugar del alias álbum.

Script 2-11

SELECT título álbum,


"fecha de lanzamiento" lanzamiento,
"sello discográfico" disquera
FROM Álbumes
ORDER BY título

34 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

En el criterio de ordenamiento pueden aparecer varias columnas. También es posible


ordenar por los valores de columnas derivadas o calculadas a partir de los datos
almacenados en la tabla. Para mostrar esto se propone la siguiente pregunta.

¿Cuál es el nombre, el tipo, el año de lanzamiento


y los años de actividad al 2021?
El resultado debe ordenarse por tipo y luego, descendentemente, por los años de actividad

En esta pregunta se observan tres hechos diferentes con respecto a las necesidades
de datos abordadas hasta ahora. En primer lugar, se plantea que debe obtenerse una
columna que no está en la tabla original, es decir, una columna derivada. También se
especifica que debe ordenarse el resultado tomando como criterio los datos de dos
columnas y que cada columna tiene un tipo de ordenamiento distinto.

Figura 2-6 Columnas requeridas para responder la pregunta

Una forma de resolver la pregunta planteada sería con la consulta presentada en el


Script 2-12. En este código se observa una expresión que permite obtener la cantidad
de años de actividad de cada artista utilizando como base la columna año de
lanzamiento. Con la operación aritmética 2021 - "año de lanzamiento" se genera
una nueva columna en la tabla resultante cuyo nombre es años de actividad al 2021.

Script 2-12

SELECT nombre,
tipo,
"año de lanzamiento",
2021 - "año de lanzamiento" AS "años de actividad al 2021"
FROM Artistas
ORDER BY tipo,
"años de actividad al 2021" DESC

La consulta permite obtener el conjunto de datos resultante que se presenta en la


Tabla 2-13. Además de estar ordenados alfabéticamente de manera ascendente según
la columna tipo, es decir, primero los de tipo Grupo y luego los de tipo Solista.
Posteriormente, ordenados de manera descendente en función de los años de

E.A. Galvis-Lista - A.A. Bustamante-Martínez 35


Bases de datos relacionales para estudiantes de pregrado

actividad al 2021. Es así como aparece primero el grupo “Binomio de Oro de América”
pues tiene “45” años y luego el grupo “Niche” puesto que tiene “42” años.

Tabla 2-13 Resultado de la ejecución del Script 2-12

nombre tipo año de lanzamiento años de actividad al 2021


Binomio de Oro de América Grupo 1976 45
Niche Grupo 1979 42
Carlos Vives Solista 1986 35
Shakira Solista 1990 31
J Balvin Solista 2006 15

2.3 Consultas con filtrado de filas


Usando únicamente las palabras SELECT y FROM la tabla resultante creada por el DBMS
incluirá todas las filas de la tabla especificada en la cláusula FROM. Sin embargo, es muy
común que el comportamiento deseado requiera la obtención de un subconjunto de
las filas, incluyendo en el resultado las que cumplan uno o varios criterios de filtrado.
Para abordar este escenario se propone la siguiente pregunta.

¿Cuál es el título, el género y la duración de las


canciones que duran de cuatro a cinco minutos?
Para resolver esta pregunta se requieren datos de la tabla Canciones (FROM Canciones),
específicamente el título, el género y la duración (SELECT título, género, duración),
pero únicamente de las canciones (filas) con duración de entre cuatro y cinco minutos,
tal y como se presenta en la Figura 2-7. La consulta SQL para responder la pregunta
se presenta en el Script 2-13.

Figura 2-7 Columnas requeridas para responder la pregunta

Script 2-13

SELECT título,
género,
duración
FROM Canciones
WHERE duración >= '00:04:00' AND
duración <= '00:05:00'

36 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

Los criterios o condiciones de filtrado de filas en la tabla resultante se expresan con


la cláusula WHERE. Para esto puede utilizarse cualquier expresión que al evaluarse
genere un valor booleano, es decir, “Verdadero” (TRUE) o “Falso” (FALSE). Esta
expresión puede construirse a partir de valores, columnas y operadores.

La expresión se evalúa por cada fila de la tabla de modo que la tabla resultante
contenga únicamente las filas que cumplen la condición porque el resultado de la
evaluación es “Verdadero”. En otras palabras, el proceso que ejecuta el DBMS inicia
tomando cada fila de la tabla y evaluando si cumple la condición. Si la cumple, se incluye
en el conjunto de filas resultante.

En la consulta presentada en el Script 2-13 se observa que se utiliza una expresión


condicional compuesta por dos partes. La primera, si el valor de la columna duración
es mayor o igual a '00:04:00' y la segunda, si la duración es menor o igual a '00:05:00'.
La columna duración es de tipo Time, el cual permite almacenar valores de tiempo en
el formato hh:mm:ss[.nnnnnnn]. También se observa el uso de operadores lógicos,
como AND, OR y NOT, para construir condiciones compuestas. En el ejemplo planteado
se utiliza el operador AND puesto que el valor de la columna duración debe cumplir
ambas condiciones para que una fila sea incluida en la tabla resultante. En la Tabla 2-14
se resaltan las filas, es decir, las canciones que cumplen la expresión condicional.

Tabla 2-14 Filas de la tabla Canciones que cumplen la expresión condicional

identificador título duración género idioma artista principal álbum original


10001 La tierra del olvido 00:04:25 1 español 50001 900001
10002 Ojos así 00:03:57 3 español 50003 900002
10003 Mi gente 00:03:05 4 español 50005 NULL
10004 Ambiente 00:04:08 4 español 50005 900004
10005 Cali pachanguero 00:04:51 2 español 50002 900005
10006 La creciente 00:03:04 1 español 50004 900006
10007 Sueños de conquista 00:04:02 1 español 50004 900008
10009 Carito 00:03:39 3 español 50001 900009
10011 Una aventura 00:05:16 2 español 50002 900011
10012 Ginza 00:04:39 4 español 50005 NULL
10013 Octavo día 00:04:32 3 español 50003 900002
10014 Quiero verte sonreír 00:03:18 3 español 50001 900009

Los operadores relacionales, como el operador igual que (=), mayor que (>), menor
que (<), pueden utilizarse para formar todas las expresiones condicionales que se
requieran. En este caso, una de las expresiones condicionales se define para evaluar si
la duración de la canción es menor o igual (<=) a cuatro minutos.

En esta consulta también se observa que las dos expresiones condicionales comparan
el valor de la columna duración con, aparentemente, las cadenas de caracteres
'00:04:00' y '00:05:00'. Sin embargo, lo que realmente sucede es que el DBMS hace
primero una conversión de tipos para transformar estos valores almacenados como
texto en datos del tipo Time y luego es cuando evalúa las expresiones. El resultado de
la ejecución del Script 2-13 es el conjunto de datos presentado en la Tabla 2-15.

E.A. Galvis-Lista - A.A. Bustamante-Martínez 37


Bases de datos relacionales para estudiantes de pregrado

Tabla 2-15 Resultado de la ejecución del Script 2-13

título duración género


La tierra del olvido 00:04:25 1
Ambiente 00:4:08 4
Cali pachanguero 00:4:51 2
Sueños de conquista 00:4:02 1
Ginza 00:4:39 4
Octavo día 00:4:32 3

El SQL proporciona operadores que permiten simplificar las condiciones combinando


más de un criterio. Uno de estos operadores es el definido con la palabra BETWEEN, el
cual permite especificar expresiones condicionales para evaluar que un valor se
encuentre en el rango definido por otros dos valores, un límite inferior y un límite
superior. El resultado será verdadero o TRUE cuando el valor comparado se
encuentre en el rango, de lo contrario se obtendrá FALSE.

Con el operador BETWEEN puede construirse una expresión condicional para, por
ejemplo, determinar si el número 80 está en el rango entre 50 y 200. En otras palabras,
si el valor 80 es mayor e igual que 50 y menor o igual que 200. Para este caso, como
el valor evaluado, es decir el número 80, está entre 50 y 200, la evaluación del
operador BETWEEN genera un resultado TRUE. Si el valor evaluado fuera 49 se obtendría
FALSE y con el valor 50 o el valor 200 se obtendrá TRUE.

El operador BETWEEN funciona con valores numéricos, fechas, tiempos y cadenas de


caracteres. En el caso de las fechas se comparan cronológicamente y en el de las
cadenas de caracteres alfabéticamente. En este sentido, la operación BETWEEN puede
utilizarse para construir una consulta SQL alternativa a la presentada en el Script 2-13
con el fin de simplificar la forma de la expresión condicional para filtrar las filas, tal y
como se presenta en el Script 2-14.

Script 2-14

SELECT título,
género,
duración
FROM Canciones
WHERE duración BETWEEN '00:04:00' AND '00:04:51'

El criterio de filtrado puede variar en complejidades dependiendo de lo que se desea


especificar. Para observar esto se propone abordar la siguiente pregunta.

¿Cuál es el nombre y el año de lanzamiento de los


artistas solistas con tiempo de vida artística entre
diez y veinte años?

38 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

Para resolver estar pregunta se requiere una expresión condicional compuesta en la


cual se evalúen datos almacenados en dos columnas. Tal y como se observa en la
Figura 2-8, la columna año de lanzamiento debe mostrarse en el resultado y también
sirve de base para calcular el valor de los años de vida artística, el cual es requerido
para filtrar las filas que van a incluirse en el resultado. La consulta que da respuesta a
la pregunta se presenta en el Script 2-15. El Script 2-16 presenta una solución
alternativa y la Tabla 2-16 presenta la tabla resultante, que es igual en ambas consultas.

Figura 2-8 Columnas requeridas para resolver la pregunta.

Script 2-15

SELECT nombre,
"año de lanzamiento"
FROM Artistas
WHERE tipo = 'Solista' AND
(2021 - "año de lanzamiento" >= 10) AND
(2021 - "año de lanzamiento" <= 20)

Script 2-16

SELECT nombre,
"año de lanzamiento"
FROM Artistas
WHERE tipo = 'Solista' AND
2021 - "año de lanzamiento" BETWEEN 10 AND 20

Tabla 2-16 Resultado de la ejecución del Script 2-16

nombre año de lanzamiento


J Balvin 2006

Para continuar con el filtrado de filas con expresiones condicionales compuestas se


propone abordar la siguiente pregunta.

¿Cuál es el nombre y el tipo de todos los artistas


del género vallenato o del género pop que tienen
más de cuarenta años de vida artística?
E.A. Galvis-Lista - A.A. Bustamante-Martínez 39
Bases de datos relacionales para estudiantes de pregrado

En esta pregunta se destaca la frase “los artistas del género vallenato o del género pop que
tienen más de cuarenta años de vida artística”. Allí se está indicando una expresión
condicional compuesta en la que el género debe ser igual a “vallenato” o igual a “pop”
y que la diferencia entre el año actual (2021) y el año de lanzamiento del artista debe
ser mayor a cuarenta años. En la Figura 2-9 se presentan las columnas requeridas para
responder la pregunta con los datos almacenados en la tabla Canciones.

Figura 2-9 Columnas requeridas para responder la pregunta

Al estar trabajando con una sola tabla, resolver la pregunta implica definir cómo
referirse a los géneros “vallenato” y “pop” pues estos no están almacenados en la tabla
Artistas. En dicha tabla, en lugar de estas cadenas de caracteres se tiene la columna
género principal en la cual se almacena un número entero.

Con esta restricción, la única forma de completar los datos requeridos para escribir
las expresiones condicionales relacionadas con los géneros principales de los artistas
es observar la tabla Géneros para determinar el valor de la columna identificador en
las filas correspondientes a los géneros requeridos. Como se muestra en la Tabla 2-17,
el género “Vallenato” corresponde al identificador “1” y el género “Pop” corresponde
al identificador “3”.

Tabla 2-17 Filas de la tabla Géneros que contienen los identificadores requeridos

Géneros
identificador nombre
1 Vallenato
2 Salsa
3 Pop
4 Urbano Latino

La consulta que permite responder la pregunta se presenta en el Script 2-17, con la


cual se obtiene como resultado el conjunto de datos presentado en la Tabla 2-18.

Script 2-17

SELECT nombre,
tipo
FROM Artistas
WHERE (2021 - "año de lanzamiento") > 40 AND
("género principal" = 1 OR
"género principal" = 3)

40 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

Tabla 2-18 Resultado de la ejecución del Script 2-17

nombre tipo
Binomio de Oro de América Grupo

Otro operador diseñado para simplificar las tareas de comparación es el operador IN.
Este se utiliza para comprobar que un valor hace parte de una lista de valores. Para
observar el uso de IN se propone la siguiente pregunta.

¿Cuál es el título y la duración de las canciones del


género de vallenato, pop o salsa?
Al analizar la pregunta se observa que debe evaluarse el valor de la columna género
en cada fila de la tabla Canciones con relación a tres opciones “Vallenato” (Identificador
1 en la tabla Géneros), “Salsa” (Identificador 2 en la tabla Géneros) y “Pop”
(Identificador 1 en la tabla Géneros). Si el valor de la columna género coindice con al
menos una, dicha canción debe incluirse en la tabla resultante. En la Figura 2-10 se
muestra el análisis requerido para responder la pregunta.

Figura 2-10 Columnas requeridas para responder la pregunta

Para responder la pregunta se propone el Script 2-18, en el cual se plantea una


expresión condicional compuesta de tres predicados o condiciones. Sin embargo, en
este caso se podría utilizar el operador IN para comprobar si el género de una canción
es “1”, “2” o “3”. El operador IN compara el valor con todos los de la lista y, si al
menos uno es igual, genera como resultado verdadero o TRUE, en caso contrario será
falso o FALSE. En el Script 2-19 se utiliza IN para responder la pregunta.

Script 2-18

SELECT título,
duración
FROM Canciones
WHERE género = 1 OR
género = 2 OR
género = 3

E.A. Galvis-Lista - A.A. Bustamante-Martínez 41


Bases de datos relacionales para estudiantes de pregrado

Script 2-19

SELECT título,
duración
FROM Canciones
WHERE género IN (1, 2, 3)

Todos estos operadores pueden ser combinados para construir expresiones


condicionales tan complejas como sea necesario, siempre y cuando, como se ha
mencionado, puedan evaluarse para llegar a un valor TRUE o FALSE. Para demostrar
la combinación de diferentes condiciones se propone abordar la siguiente pregunta.

¿Cuál es el título y la duración de las canciones en


español de los géneros vallenato, pop o salsa, que
duran entre tres y cuatro minutos?
Mostrar primero la canción de mayor duración y finalizar con la de menor duración

Para resolver la pregunta anterior debe consultarse la tabla Canciones y utilizar las
condiciones definidas en el enunciado para filtrar las filas: 1) Idioma español, 2) el valor
del género podrá ser “Vallenato” (Identificador 1 en la tabla Géneros), “Salsa”
(Identificador 2 en la tabla Géneros) o “Pop” (Identificador 1 en la tabla Géneros) y 3)
el valor de la duración de la canción debe ser mayor o igual a tres minutos y menor
o igual a cuatro minutos. Figura 2-11 se ilustra el análisis realizado y en el Script 2-20
se presenta la consulta que permite responder la pregunta, la cual genera como
resultado el conjunto de datos de la Tabla 2-19.

Figura 2-11 Columnas requeridas para responder la pregunta

Script 2-20

SELECT título,
duración
FROM Canciones
WHERE idioma = 'español' AND
género IN (1, 2, 3) AND
duración BETWEEN '00:03:00' AND '00:04:00'
ORDER BY duración DESC

42 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

Tabla 2-19 Resultado de la ejecución del Script 2-20

título duración
Ojos así 00:03:57
La creciente 00:03:04
Carito 00:03:39
Quiero verte sonreír 00:03:18
Ojos así 00:03:57

Hay consultas que requieren expresiones condicionales basadas en los caracteres


contenidos en una cadena, tal y como se pide en la siguiente pregunta.

¿Cuál es el título y el sello discográfico de los


álbumes cuyos títulos inician con la vocal e?
Para responder la pregunta debe utilizarse la tabla Álbumes, aplicando un filtro basado
en los valores almacenados en la columna título, tal y como se presenta en la

Figura 2-12 Columnas requeridas para responder la pregunta

Para caso como este, el SQL tiene el operador LIKE, el cual es utilizado principalmente
para realizar comparaciones de cadenas de texto con dos caracteres comodines, el
porcentaje % y el guion bajo _. El % representa una cadena cualquiera (0 o más
caracteres) y el _ representa un solo carácter. Los caracteres comodines deben
incluirse en la cadena de texto utilizada en la expresión condicional. Por ejemplo, si
se quiere filtrar las filas de los artistas que inician con la letra a, la expresión condicional
sería nombre LIKE 'a%', indicando que debe iniciar con la letra a y luego puede aparecer
cualquier cadena (%). Este operador no es sensible a las mayúsculas.

En esta pregunta se pide incluir aquellos álbumes cuyo título inicia con la letra e. Esto
puede lograrse combinando el operador LIKE con el comodín “%” tal y como se
observa en la consulta del Script 2-21, con la cual se obtiene la Tabla 2-20.
Script 2-21

SELECT título,
"sello discográfico"
FROM Álbumes
WHERE título LIKE 'E%'

E.A. Galvis-Lista - A.A. Bustamante-Martínez 43


Bases de datos relacionales para estudiantes de pregrado

Tabla 2-20 Resultado de la ejecución del Script 2-21

título sello discográfico


El binomio de oro Codiscos

En algunos casos deben responderse preguntas relacionadas con datos desconocidos


o inexistentes, es decir, datos representados con el valor NULL. Para abordar esta
situación se propone la siguiente pregunta.

¿Cuál es el título y el sello discográfico de los


álbumes con fecha de lanzamiento desconocida?
Hay que recordar que en una base de datos puede darse el caso en el que una tabla
contenga valores nulos porque no existen los datos o se desconocen al momento de
almacenar la fila correspondiente. Si en la columna en la que se encuentra un valor
NULL se almacenan datos numéricos podría pensarse que este significa lo mismo que
el valor cero (0), pero no es así. De igual forma, si la columna almacena cadenas de
caracteres podría pensarse que NULL es equivalente a un espacio en blanco, pero esto
también es un error.

Tanto el valor 0 como el espacio en blanco pueden tener significado en el contexto


de los datos que se están almacenando. Por ejemplo, una columna que representa el
número de hijos de una persona podría tomar el valor 0 para representar que no tiene
hijos mientras que NULL representaría que se desconoce el número de hijos.

Para resolver esta pregunta se requiere trabajar con la tabla Álbumes. Como se
muestra en la Figura 2-13, los datos resultantes están almacenados en las columnas
título y sello discográfico. Además, es necesario realizar un filtrado de filas con
base en los datos de la columna fecha de lanzamiento, específicamente las filas que
almacenan valores NULL.

Figura 2-13 Columnas requeridas para responder la pregunta

Cuando se evalúa una expresión condicional haciendo referencia a alguna columna


que tenga valores nulos debe tomarse la precaución de evitar usar los operadores de
comparación que se utilizan para el caso de valores específicos porque el resultado
será desconocido. En otras palabras, si se utiliza una expresión del tipo columna = NULL
el resultado de la evaluación lógica será siempre desconocido, nunca será TRUE ni
FALSE. ¡NULL no es igual a NULL, pero tampoco es diferente de NULL!

44 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

En este sentido, para evaluar que un valor es NULL se utilizará la palabra reserva IS
acompañada de la palabra NULL, y para indicar que no es NULL, se agregaría la palabra
NOT. En la resolución de la siguiente pregunta se muestra el filtro de valores NULL. En
este caso debe comprobarse de manera directa si el valor de la fecha de lanzamiento
es desconocido, lo cual se logra con la consulta del Script 2-22.

Script 2-22

SELECT título,
"fecha de lanzamiento",
"sello discográfico"
FROM Álbumes
WHERE "fecha de lanzamiento" IS NULL

El trabajo con valores NULL exige un análisis detallado pues pueden generarse errores
de interpretación. Para ilustrar esto se propone la siguiente pregunta.

¿Cuál es el título y el sello discográfico de los


álbumes lanzados antes del año 2001?
Al igual que la pregunta resuelta con la consulta del Script 2-22, en esta pregunta se
requieren datos de la tabla Álbumes, tal y como se muestra en la Figura 2-14. Sin
embargo, debe establecerse una condición donde la fecha de lanzamiento sea menor
o igual que '31/12/2000'.

Figura 2-14 Columnas requeridas para responder la pregunta

La respuesta a esta pregunta puede obtenerse con la consulta del Script 2-23. Con
esta consulta se obtendrá como resultado la Tabla 2-21, mostrando los cinco álbumes
que fueron lanzados antes de la fecha indicada en la condición.

Script 2-23

SELECT nombre,
"fecha de lanzamiento",
"sello discográfico"
FROM Álbumes
WHERE "fecha de lanzamiento" <= '31/12/2000'

E.A. Galvis-Lista - A.A. Bustamante-Martínez 45


Bases de datos relacionales para estudiantes de pregrado

Tabla 2-21 Resultado la ejecución del Script 2-23

título fecha de lanzamiento sello discográfico


La tierra del olvido 25/07/1995 EMI Latin
¿Dónde están los ladrones? 29/09/1998 Sony Music
El binomio de oro 03/11/1976 Codiscos
Por lo alto 02/11/1976 Codiscos
Cielo de tambores 20/12/1990 Codiscos

Sin embargo, este resultado no significa que las demás filas de la tabla correspondan a
álbumes lanzados a partir del año 2001. En otras palabras, es un error asumir que,
dado que la tabla Álbumes tiene ocho filas y el resultado de la consulta del Script 2-23
tiene cinco filas, entonces hay tres álbumes lanzados después del año 2000.

El error de interpretación recae en que la fecha de lanzamiento del álbum “No hay
quinto malo” es desconocida y por ende tiene registrado el valor NULL, por lo tanto,
no es mayor ni menor que '31/12/2000'. En tal sentido, el resultado de la consulta del
Script 2-22 será una tabla con una sola fila, la correspondiente al álbum “No hay quinto
malo” del sello discográfico “Internacional Records”.

2.4 Aprendizajes más importantes del Capítulo 2


Lo tratado en este capítulo debería haberle permitido aprender lo expresado en la
siguiente lista de ideas.

• SQL es el lenguaje que utilizan las bases de datos relacionales para permitir la
manipulación de los objetos y de los datos almacenados en ellas.

• SQL es un lenguaje declarativo, de alto nivel, robusto y poderoso, el cual está


compuesto por tres sub-lenguajes: DDL, DML y DCL.

• DML es el lenguaje utilizado para especificar las consultas de acceso a los datos
y como resultado de una consulta en este lenguaje siempre se obtiene una
estructura en forma de tabla como respuesta.

• La palabra reservada FROM indica desde cuál tabla provienen los datos a utilizar.

• La palabra reservada SELECT se utiliza para especificar las columnas que harán
parte del conjunto de datos resultante.

• La palabra reservada WHERE permite indicar qué condición deben cumplir las
filas que se incluirán en el conjunto resultante.

• Para establecer las condiciones que deben cumplir las filas puede utilizarse
cualquier combinación de operadores y operandos, siempre que la expresión
formado por estos pueda reducirse a Verdadero o Falso.

46 E.A. Galvis-Lista - A.A. Bustamante-Martínez


Capítulo 2 – Primeros pasos con SQL

• Los valores desconocidos o faltantes se representar con una palabra especial,


NULL. Las pruebas lógicas donde esta palabra interviene se reducen al valor
desconocido.

2.5 Actividades de aplicación para evidenciar lo aprendido


1. Utilizando la nueva versión de la base de datos de la colección de canciones
proponga cinco preguntas que expresen necesidades de datos que puedan
responderse consultando una sola tabla. Todas las preguntas deben tener un
nivel de complejidad que demande la utilización de filtros con condiciones
compuestas y las demás operaciones explicadas en este capítulo.

2. Construir las consultas SQL y mostrar el conjunto de datos resultante para


dar respuesta a las cinco preguntas propuestas en la actividad 1.

3. ¿Cuál es la pregunta que se está supliendo con la siguiente consulta?

SELECT título,
idioma
FROM Canciones
WHERE "álbum original" IS NULL AND
idioma = 'español'

4. Proponga una consulta SQL para responder ¿Cuál es el título y la duración de


las canciones que contienen la palabra La al inicio de su título?

5. ¿Cuál es la pregunta se suple con la siguiente consulta?

SELECT DISTINCT
"sello discográfico"
FROM Álbumes
WHERE
"fecha de lanzamiento" NOT BETWEEN '01/01/1990' AND '31-12-2020'
OR "fecha de lanzamiento" IS NULL

6. ¿Cuál es la pregunta o necesidad de datos que se suple con la siguiente


consulta? ¿Cuál es el conjunto de datos resultante?

SELECT nombre,
"año de lanzamiento",
tipo
FROM Artistas
WHERE((2021 - "año de lanzamiento") BETWEEN 20 AND 40) AND
"año de retiro" IS NULL
ORDER BY nombre DESC

E.A. Galvis-Lista - A.A. Bustamante-Martínez 47


Bases de datos relacionales para estudiantes de pregrado

7. Proponga una consulta SQL que permita responder ¿Cuáles son los sellos
discográficos que han lanzado álbumes el mismo año de la fundación de la
empresa Apple?

8. Seleccione la opción que expresa mejor lo que se obtiene con la siguiente


consulta SQL. Argumente las razones de su decisión.

SELECT identificador,
nombre,
"año de lanzamiento"
FROM Artistas
WHERE nombre NOT LIKE '%A' OR
nombre NOT LIKE '%E' OR
nombre NOT LIKE '%I' OR
nombre NOT LIKE '%O' OR
nombre NOT LIKE '%U'

a. El identificador, el nombre y el año de lanzamiento de los artistas cuyo


nombre contiene alguna vocal.
b. El identificador, el nombre y el año de lanzamiento de los artistas cuyo
nombre termina con alguna vocal.
c. El identificador, el nombre y el año de lanzamiento de los artistas cuyo
nombre no termina con alguna vocal.
d. El identificador, el nombre y el año de lanzamiento de todos los artistas

9. ¿Cuál será el resultado luego de ejecutar la siguiente consulta? Explique su


respuesta.

SELECT DISTINCT
título
FROM Álbumes
WHERE "fecha de lanzamiento" < '31-10-2000' OR
"fecha de lanzamiento" = NULL

10. Proponga una consulta SQL que permita responder ¿Cuál es el nombre y la
duración de las canciones de genero vallenato, salsa o pop que hayan sido
interpretadas por solistas?

48 E.A. Galvis-Lista - A.A. Bustamante-Martínez

También podría gustarte