Ejercicios de teoría sobre SQL
Apuntes de BD para DAW, DAM y ASIR
Curso 2023/2024
1 Ejercicios de teoría sobre SQL
1.1 Unidad Didáctica 4
Defina brevemente el significado de las siglas SQL.
El lenguaje SQL se divide en tres partes DDL, DML y DCL. Defina brevemente en qué consiste cada una de las partes.
Defina brevemente qué es MySQL Server.
Defina brevemente qué es MySQL WorkBench.
Defina brevemente qué es phpMyAdmin.
Defina brevemente el significado de LAMP Stack.
Define para qué sirven las siguientes palabras reservadas de la creación de tablas en MySQL:
AUTO_INCREMENT
CHARACTER SET
COLLATION
ENGINE
¿Qué diferencias existen entre los motores de almacenamiento InnoDB y MyISAM de MySQL? ¿Cuál de los dos es el que se usa por defecto?
¿Qué diferencia existe entre los set de caracteres
utf8
yutf8mb4
en MySQL?¿Qué diferencia hay entre los tipos de datos
VARCHAR
yCHAR
?¿Qué diferencia hay entre los tipos de datos
TEXT
yBLOB
?¿Qué diferencia hay entre los tipos de datos
DATETIME
yTIMESTAMP
?¿Qué diferencia hay entre
ENUM
ySET
?¿Qué tipo de dato usarías si necesitas almacenar un número real exacto sin redondeo?
Explica brevemente para qué sirven las cláusulas
ON DELETE
yON UPDATE
.Explica brevemente para qué sirven las siguientes opciones que podemos usar junto a las cláusulas
ON DELETE
yON UPDATE
:
* `RESTRICT`
* `CASCADE`
* `SET NULL`
* `NO ACTION`
¿Qué diferencia existe entre
TRUNCATE
yDELETE
?¿Para qué se utiliza el atributo
UNIQUE
?¿Qué diferencia hay entre
INDEX
yKEY
? ¿Para qué se utilizan?¿Para qué se utiliza el atributo
ZEROFILL
?¿Qué diferencia existe entre declarar una columna como
INT(11)
yINT(11) ZEROFILL
?¿Qué significan las llaves y los corchetes en la siguiente descripción de notación?
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] nombre_base_datos;
¿Qué sentencia SQL utilizarías para conocer cuál es la estructura de una tabla ya creada?
¿Qué sentencia SQL utilizarías para borrar una tabla con el nombre de examen?
¿Qué sentencia SQL utilizarías para consultar el listado de todas las bases de datos?
¿Qué sentencia SQL utilizarías para añadir una nueva columna llamada nombre a la tabla estudiante?
¿Qué sentencia SQL nos permite renombrar y modificar el tipo de dato de una columna y sus atributos? Ponga un ejemplo.
¿Qué tipo de dato de MySQL es el único que podría almacenar valores de fecha y hora mayores que
2038-01-09 03:14:07
?¿Qué tipo de dato utilizarías si necesitaras almacenar números reales exactos sin redondeo?
¿Qué representan los valores 7 y 4 cuando declaramos una columna como
FLOAT(7,4)
?¿Qué representa el valor 11 cuando declaramos una columna como
INT(11)
?¿Qué comando tendría que escribir desde un terminal para conectarnos con el usuario
root
con contraseña1234
, a un MySQL Server remoto que se está ejecutando en una máquina con la IP 10.10.1.5?¿Qué puerto es el que utiliza por defecto el servicio de MySQL Server?
Cuando instalamos MySQL Server está configurado por defecto para que sólo acepte conexiones locales y que no permita conexiones remotas. ¿Qué valor tendríamos que poner en la directiva de configuración
bind-address
para permitir conexiones remotas?
[mysqld]
bind-address = 127.0.0.1
- Los usuarios de MySQL Server se almacenan en la
tabla
mysql.user
. La clave primaria de esta tabla está formada por los valoresuser
yhost
, de modo que cada fila vendrá identificada por un nombre de usuario y el host desde el que puede conectarse. Según la siguiente tabla, ¿desde qué máquinas se podrá conectar el usuarioroot@'%'
?
+------------------+--------------+
| user | host |
+------------------+--------------+
| root | % |
| root | localhost |
| debian-sys-maint | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
+------------------+--------------+
1.2 Unidades Didácticas: 5, 6, 7 y 8
El lenguaje SQL se divide en tres partes DDL, DML y DCL. Defina brevemente en qué consiste DML, cuáles son las sentencias DML y qué operación podemos realizar con cada una de ellas.
Indique cuáles son todas las cláusulas que podemos utilizar en la sentencia
SELECT
y en qué orden se ejecuta cada una de ellas.Cuando realizamos consultas con la sentencia
SELECT
en MySQL podemos usar los modificadoresALL
,DISTINCT
yDISTINCTROW
. Explica brevemente en qué consiste cada uno de ellos.Defina brevemente para qué sirven los siguientes operadores y ponga un ejemplo de uso para cada uno de ellos:
BETWEEN
LIKE
IS
IS NOT
¿Qué realiza la función
COUNT
en cada uno de estos casos? ¿Existe alguna diferencia entre ellas?COUNT(*)
COUNT(columna)
COUNT(DISTINCT columna)
Describa cuáles son las funciones de agregación más utilizadas, que le permiten realizar operaciones específicas sobre un grupo de filas.
Explique qué diferencia existe entre las cláusulas
WHERE
yHAVING
. Ponga un ejemplo de uso para cada caso.Defina para qué se utiliza la cláusula
LIMIT
. Dada la sintaxis de la cláusulaLIMIT
en MySQL explique qué representan las palabrasoffset
yrow_COUNT
. Ponga un ejemplo de uso.LIMIT {[offset,] row_COUNT | row_COUNT OFFSET offset}] [
¿Para qué se utilizan las operaciones
INNER JOIN
yNATURAL JOIN
?. ¿Qué diferencia hay entre ellas?. Ponga un ejemplo de una consulta que afecte a dos tablas indicando la diferencia.¿Qué resultado devuelve la operación
CROSS JOIN
?. Ponga un ejemplo sencillo. ¿Existe otra forma de obtener el mismo resultado de la operaciónCROSS JOIN
? Ponga un ejemplo.¿Para qué se utilizan las operaciones
LEFT OUTER JOIN
yRIGHT OUTER JOIN
?. ¿Qué diferencia hay entre ellas?. Ponga un ejemplo de una consulta que afecte a dos tablas indicando la diferencia.¿Qué resultado devuelve la operación
FULL OUTER JOIN
?. ¿Cómo se puede implementar esta operación en MySQL?Indica si las siguientes consultas son correctas o incorrectas. En caso de ser incorrectas deberá explicar el motivo y cómo podrían resolverse de forma correcta.
SELECT *
FROM alumno
WHERE teléfono = NULL;
SELECT *
FROM alumno
WHERE apellido1 = 'S%';
SELECT *
FROM alumno
WHERE fecha_nacimiento >= '1999/01/01' AND '1999/12/31'
SELECT *
FROM producto, fabricante
WHERE fabricante.nombre = 'Lenovo';
SELECT *
FROM producto INNER JOIN fabricante
WHERE fabricante.nombre = 'Lenovo';
SELECT *
FROM producto INNER JOIN fabricante
ON producto.codigo = fabricante.codigo;
SELECT *
FROM producto
WHERE precio > AVG(precio);
2 Licencia
Esta
página forma parte del curso
Bases de Datos de
José Juan Sánchez Hernández y
su contenido se distribuye bajo una
licencia
Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0
Internacional.