Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Este lenguaje fue creado con base en las ideas del modelo relacional de bases de datos
propuesto en 1970 por Edgar Frank Codd, específicamente en la aplicación del álgebra y el
cálculo relacional para el acceso a los datos. Luego se convirtió en un estándar internacional
y en la actualidad es un elemento presente en la mayoría de los DBMS comerciales.
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, como podría ser la búsqueda dentro de un árbol binario
generado a modo de índice a partir de los datos de una columna. Esta forma de operación
se representa de forma general en la Figura 2-1.
Bases de datos relacionales para estudiantes de pregrado
Figura 2-1
Aplicaciones
Personas
Instrucción Tabla de
para consultar datos
datos resultante
DBMS
Base de datos
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, como las tablas, 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 Definition 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 y último, conocido como Lenguaje de Control de
Datos o DCL (acrónimo de la expresión en inglés Data Control Language), contiene las
operaciones enfocadas en establecer y controlar quién puede acceder a la base de datos, a
los objetos que la componen y a los datos que se tienen almacenados.
En este segundo capítulo encontrará los elementos que le permitirán dar sus 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 una de las operaciones del DML, la operación SELECT. Esta poderosa
operación permitirá que, de forma muy sencilla, le solicitemos al DBMS la “selección” de un
conjunto de datos que necesitamos, ante lo cual obtendremos una tabla como respuesta.
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 lo “Á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 disuelve. 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”.
Tabla 2-1
Artistas
año de año de género
identificador nombre tipo
lanzamiento retiro 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
Canciones
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
Géneros
identificador nombre
1 Vallenato
2 Salsa
3 Pop
4 Urbano Latino
Tabla 2-4
Álbumes
fecha de
identificador título sello discográfico
lanzamiento
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
Teniendo la claridad sobre los elementos que componen la nueva versión de la base de
datos con la que estamos trabajando vamos a 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 vamos a abordar la siguiente pregunta que especifica una necesidad de datos que
debe ser satisfecha.
Este análisis nos presenta el escenario más sencillo de consulta de los datos de una tabla
con SQL. Aquí se deben mostrar 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 SQL que
deberá ejecutar el DBMS para retornar los datos requeridos.
Vale recordar algo que se mencionó en los primeros apartes de este capítulo, y es que en
SQL tenemos que expresar lo que queremos que se haga sin preocuparnos por definir y
programar la forma en que debe realizarse. Por consiguiente, para este caso en concreto
debemos indicarle al DBMS que nos entregue una tabla conformada con los datos
almacenados en todas las columnas y todas las filas de la tabla “Artistas”. Para esto
utilizaremos el siguiente código SQL.
SELECT
identificador,
nombre,
[año de lanzamiento],
[año de retiro],
tipo,
[género principal]
FROM
Artistas
El resultado de esta consulta será una tabla como la que se presenta en la Tabla 2-5.
Tabla 2-5
Del código anterior puede verse que la forma de escribir una consulta SQL es casi como si
estuviéramos escribiendo en inglés. 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, vemos 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.
El lenguaje SQL no es sensible a las mayúsculas y tampoco interpreta los saltos de línea
como si fueran el fin de una línea de código o de una instrucción. En tal sentido, para el
DBMS el siguiente código es exactamente el mismo que el código anterior. 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 del código.
En SQL podemos usar el carácter * como un comodín para hacer referencia a todas las
columnas de una tabla. En este sentido, el siguiente código es equivalente y genera el mismo
resultado que las dos consultas anteriores.
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 en que quedan las columnas en la tabla resultante.
Por su parte, en las consultas en las que se declaran de forma explícita todas las columnas
de la tabla consultada, se tiene la opción de cambiar el orden en que aparecerán dichas
columnas en la tabla resultante. Para esto, simplemente deberán ubicarse en el orden
deseado dentro de la lista separada por comas que se pone justo después de la palabra
SELECT. El siguiente código ejemplifica esto.
SELECT
identificador, nombre, tipo,
[género principal],
[año de lanzamiento],
[año de retiro]
FROM
Artistas
El resultado de ejecutar la consulta contendrá los mismos datos, pero con una estructura
distinta a lo obtenido con las consultas anteriores, tal y como se muestra en la Tabla 2-6.
Tabla 2-6
SELECT
título,
[fecha de lanzamiento],
[sello discográfico]
FROM
Álbumes
En la consulta anterior se incluyen solamente los nombres de las tres columnas requeridas
luego de la palabra SELECT. Las columnas requeridas se presentan separadas por coma y
aquellas cuyo nombre tiene espacios en blanco se presentan entre corchetes para evitar
errores de sintaxis. En la Tabla 2-7 se presenta el resultado de la consulta.
Tabla 2-7
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 mostrado en la Tabla 2-7. En lugar de
obtener una columna llamada “título” se espera una columna llamada “álbum”, en lugar de
“fecha de lanzamiento” se requiere simplemente el encabezado “lanzamiento” y en lugar de
“sello discográfico” se necesita utilizar la palabra “disquera”. Para cumplir con este requisito
de presentación, la consulta SQL debe modificarse para que quede de la siguiente forma.
SELECT
título AS álbum,
[fecha de lanzamiento] AS lanzamiento,
[sello discográfico] disquera
FROM
Álbumes
De la consulta anterior puede observarse que hay dos formas de asignar el “alias”, La
primera, de forma explícita, en la que se utiliza la palabra reservada AS seguida del nuevo
nombre que va a tener la columna de 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 de la tabla consultada, como es el caso de la columna “sello
discográfico” y el alias “disquera”. 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
SELECT
tipo
FROM
Artistas
Al ejecutar esta consulta, el DBMS nos retorna el resultado mostrado en la Tabla 2-9. Esta
tabla resultante tiene la columna requerida y tiene los datos registrados para esa columna
en todas las filas de la tabla.
Tabla 2-9
tipo
Solista
Grupo
Solista
Grupo
Solista
Ahora bien, este resultado tiene un detalle que impide que lo podamos aceptar como
respuesta a la pregunta: la tabla tiene filas duplicadas. Del análisis directo sobre los datos de
la tabla podemos definir 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”. En otras
palabras, se requieren solamente los valores distintos.
El SQL proporciona una forma de eliminar las filas duplicadas y obtener el resultado
deseado. Para esto se utiliza la palabra reservada DISTINCT. En este caso la consulta SQL
para dar respuesta mostrando los valores distintos para el tipo de artista sería la siguiente.
SELECT DISTINCT
tipo
FROM
Artistas
Al ejecutar esta consulta, el DBMS nos retorna el resultado mostrado en la Tabla 2-10.
Tabla 2-10
tipo
Grupo
Solista
La palabra DISTINCT también puede ser utilizada en consultas que muestren más de una
columna. En este caso, el DBMS mostrará únicamente las filas con combinaciones distintas.
Para ilustrar esto proponemos abordar la siguiente pregunta.
SELECT DISTINCT
género,
idioma
FROM
Canciones
Tabla 2-11
género idioma
1 español
2 español
3 español
4 español
Figura 2-2
Para abordar esta opción de ordenamiento revisemos la consulta elaborada para responder
la pregunta sobre el título, le fecha de lanzamiento y el sello discográfico de los álbumes
registrados en la colección, cuya respuesta se presentó en la Tabla 2-8. En esa consulta se
utilizaron alias para las columnas con el fin de mejorar la presentación y facilitar la
comprensión de los datos contenidos en la tabla resultante. Sin embargo, estas medidas no
son suficientes porque 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 es la siguiente.
SELECT
título AS álbum,
[fecha de lanzamiento] AS lanzamiento,
[sello discográfico] disquera
FROM
Álbumes
ORDER BY álbum ASC
La palabra reservada ORDER BY sirve para indicarle al DBMS que el resultado de la consulta
debe presentarse según un criterio de ordenamiento. La sintaxis del lenguaje define que
luego de ORDER BY deben definirse las columnas que se utilizar como criterios de
ordenamiento. Por cada columna debe especificarse si el orden es ascendente (ASC) o
descendente (DESC), pero si esto no se define, el DBMS ordenará de forma ascendente.
El resultado obtenido con esta nueva versión de la consulta se presenta en la Tabla 2-12.
Tabla 2-12
SELECT
título álbum,
[fecha de lanzamiento] lanzamiento,
[sello discográfico] disquera
FROM
Álbumes
ORDER BY título
En el criterio de ordenamiento del conjunto de datos pueden aparecer más de una columna
y no es necesario que las columnas aquí incluidas estén en la tabla, puesto que se pueden
incluir nuevas columnas que estén en el conjunto de datos resultante. Detallemos la
siguiente necesidad de datos.
Una forma de resolver la pregunta planteada sería con la siguiente consulta, donde tenemos
elementos nuevos tales como la expresión 2021 - [año de lanzamiento], que es la encargada
de especificar la operación que deseamos realizar por cada una de las filas de la tabla, a
saber, tomar el valor 2021 y restarle el valor presente en la columna “año de lanzamiento”
para cada fila. En el caso de Carlos Vives se tendría que el valor es igual a “35”.
SELECT
nombre,
tipo,
[año de lanzamiento],
2021 - [año de lanzamiento] AS [años de actividad al 2021]
FROM
Artistas
La consulta nos 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 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
Por ejemplo, del análisis para abordar la primera de las preguntas anteriores puede
identificarse que se están requiriendo datos de la tabla Canciones (FROM Canciones),
específicamente título y el género (SELECT título, género), pero únicamente de aquellas
canciones (filas) que satisfacen la condición de tener más de cuatro minutos de duración y
menos de cinco. Los criterios de selección o condiciones se expresan con la palabra
reservada WHERE. Por consiguiente, la consulta SQL para obtener la respuesta a la pregunta
es la siguiente y el resultado será el conjunto de datos presentado en la Tabla 2-14.
SELECT
título, género, duración
FROM
Canciones
WHERE duración >= '00:04:00' AND duración <= '00:05:00'
Tabla 2-14
1. 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].
2. La forma para construir condiciones compuestas es a través del uso de operadores
lógicos como el AND, el OR y el NOT. 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.
3. Los operadores relacionales ––igual (=), mayor (>), menor (<), etc.–– pueden ser
utilizados para formar las expresiones condicionales que se requieran. Por ejemplo,
como en este caso en el que una de las expresiones condicionales se define para
evaluar si la duración de la canción es menor o igual (<=) a cuatro minutos.
4. 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 sucede es que el DBMS hace primero una conversión de tipo para transformar
estas cadenas en datos del tipo Time y luego si evalúa las expresiones.
En este sentido, con el operador BETWEEN podemos construir una expresión condicional
para 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ía 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.
Con esta explicación es claro que puede construirse una consulta SQL alternativa para dar
respuesta a la pregunta sobre las canciones en el rango entre cuatro y cinco minutos. Para
esto se utilizará el operador BETWEEN con el fin de simplificar la forma de la expresión
condicional para filtrar las filas. La nueva consulta se presenta a continuación.
SELECT
título, género, duración
FROM
Canciones
WHERE duración BETWEEN '00:04:00' AND '00:04:51'
SELECT nombre,
tipo
FROM Artistas
WHERE (2021 - [año de lanzamiento]) > 40
AND ([género principal] = 1 OR ([género principal] = 3))
Tabla 2-15
nombre tipo
Binomio de Oro de América Grupo
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)
SELECT nombre,
[año de lanzamiento]
FROM Artistas
WHERE tipo ='Solista'
AND 2021 - [año de lanzamiento] BETWEEN 10 AND 20
Tabla 2-16
Otro operador diseñado para simplificar las tareas de comparación es el operador IN. Este
se utiliza para comprobar que un valor coincide con al menos uno de los valores que
conforman una lista del mismo tipo de dato. En tal sentido, con este operador se podría
comprobar si el género de una canción es igual a “1”, igual a “2” o igual a “3”. El operador
IN compara el valor con todos los de la lista y si al menos uno es igual genera como
resultado TRUE, en caso contrario será FALSE. Para poner en práctica esto proponemos
resolver la siguiente pregunta.
SELECT título,
duración
FROM Canciones
WHERE género = 1
OR género = 2
OR género = 3
SELECT título,
duración
FROM Canciones
WHERE género IN (1,2,3)
De las dos consultar anteriores puede verse que al utilizar el operador IN se tiene una forma
abreviada de establecer una condición compuesta. La misma condición puede ser construida
haciendo uso del operador relacional igual = y el operador lógico OR. Al igual que con el
operador BETWEEN, este se puede utilizar con cualquiera de los tipos de datos del SQL,
pero debe haber coincidencia entre los tipos de los diferentes operandos.
Todos estos operadores pueden ser combinados para construir expresiones condicionales
tan complejas como sea necesario, siempre y cuando, como se ha mencionado, se puedan
evaluar para llegar a un valor TRUE o FALSE. En este sentido, proponemos la siguiente
pregunta
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
Tabla 2-17
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
Es frecuente las consultas requieran revisar los caracteres contenidos dentro de una cadena.
Por ejemplo, la una consulta para mostrar los artistas cuyos nombres empiezan con alguna
vocal. Para esto, el SQL proporciona el operador LIKE. Este operador es utilizado
principalmente para realizar comparaciones de cadenas de texto utilizando dos caracteres
comodines: el porcentaje (%) y el guion bajo (_). El primero, permite preguntar por
cualquier cantidad (0 o más) de caracteres dentro de la expresión, y, dependiendo de su
ubicación dentro de esta, permitirá consultar por tres casos específicos:
1. Que el valor o texto del campo a consultar empiece por una expresión dada.
2. Que el valor o texto del campo a consultar termine en una expresión dada.
3. Que el valor o texto del campo a consultar contenga una expresión dada.
Para el primer caso, el comodín (%) será ubicado al final de la expresión que se quiere
comparar, por ejemplo, si se quiere saber:
SELECT título,
[sello discográfico]
FROM Álbumes
WHERE título LIKE '%A'
OR título LIKE '%E'
OR título LIKE '%I'
OR título LIKE '%O'
OR título LIKE '%U'
Tabla 2-18
En forma opuesta se puede pretender conocer datos de las filas que no satisfacen el
comenzar, terminar o simplemente, contener una cadena de texto. Por ejemplo, para
responder la siguiente pregunta:
SELECT
título,
[sello discográfico]
FROM
Álbumes
WHERE
título NOT LIKE ‘A%’ AND
título NOT LIKE ‘E%’ AND
título NOT LIKE ‘I%’ AND
título NOT LIKE ‘O%’ AND
título NOT LIKE ‘U%’
De similar forma, también puede ser deseable que se predefina un número específico de
caracteres sobre los cuales se espera la variabilidad. Por ejemplo, supongamos que
queremos resolver la siguiente pregunta:
SELECT título,
duración,
género
FROM Canciones
WHERE género NOT IN (3,1)
AND título LIKE '_a%'
Para concluir con el filtrado de las filas es de vital relevancia conocer que es frecuente que
desconozcamos valores para una columna en un momento determinado. NULL es un
marcador especial utilizado para indicar que no existe un valor para una columna. Si el tipo
de dato es numérico, se podría pensar que NULL es igual a 0, o para una cadena de texto,
que NULL sería igual a un espacio en blanco, pero ninguna de estas dos afirmaciones es
verdadera. Puesto que tanto el cero como el carácter vacío son valores concretos con
significado dentro del conjunto de valores que son aceptables en el dominio de valores de
una columna. Por ejemplo, en el caso de una columna que representa el número de hijos
de una persona, un valor cero representaría que la persona no tiene hijos mientras que
NULL representa que se desconoce el valor del número de hijos en un instante particular.
Es necesario recordar que, al evaluar una condición, se pregunta si el valor indicado cumple
o no dicha condición, en caso de que la cumpla, se evaluará como verdadero, en caso
contrario, se evaluará falso; esto aplica incluso para un campo con valor 0 o una cadena
vacía. Con el marcador NULL, las comparaciones nunca resultan ni verdaderas ni falsas, sino
como desconocidas.
Por lo tanto, para evaluar que un valor es NULL o nulo, no se utilizará el operador igual (=),
sino que usará la palabra reserva IS acompañada de la palabra NULL, y para indicar que no
es NULL, se agregaría la palabra NOT. Por ejemplo, miremos la siguiente situación.
SELECT
nombre,
[fecha de lanzamiento],
[sello discográfico]
FROM
Álbumes
WHERE
[fecha de lanzamiento] < ‘31/12/2000’
Luego del DBMS ejecutar la consulta obtendríamos los siguientes resultados. Donde vemos
que cumplen la condición las siguientes cinco filas.
En sentido contrario se puede pensar que entonces hay tres filas donde el año de
lanzamiento el mayor a ‘’31/12/2000”. Pero, esto no es cierto debido a que al evaluar si la
fecha de lanzamiento del álbum “No hay quinto malo” es mayor o menor que ‘’31/12/2000”
siempre se obtendrá desconocido.
SELECT título,
[fecha de lanzamiento],
[sello discográfico]
FROM Álbumes
WHERE [fecha de lanzamiento] IS NULL
• 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 subdividido en 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 se puede utilizar cualquier
combinación de operadores y operandos siempre que la expresión formado por
estos se pueda reducir a Verdadero o Falso.
• 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. Elaborar las consultas SQL y mostrar el conjunto de datos resultante para dar
respuesta a las cinco preguntas propuestas en la actividad 1.
3. Por cada una de las siguientes consultas escribir cuál es la pregunta o necesidad de
datos que se está supliendo y mostrar el conjunto de datos resultante.
c. 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
4. Seleccione la opción que mejor expresa lo que se busca 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'
6. Proponga una consulta SQL que permita obtener el siguiente conjunto de datos.