30 Nov
Consultas Básicas con SELECT
Ejercicio 5: Seleccionar columnas específicas
Seleccionar las columnas origen, destino y hora_salida de todas las filas en la tabla vuelos.
SELECT origen, destino, hora_salida
FROM vuelos;Ejercicio 6: Reordenar columnas en la selección
Igual que el anterior, pero mostrando las columnas en el orden: origen, hora_salida, destino.
SELECT origen, hora_salida, destino
FROM vuelos;Ejercicio 8: Eliminar duplicados (DISTINCT)
Mostrar los orígenes únicos, eliminando cualquier información redundante de la tabla vuelos.
SELECT DISTINCT origen
FROM vuelos;Ejercicio 9: Visualizar una tabla completa
Escribir la orden para visualizar el contenido completo de la tabla vuelos. Realizarlo con dos órdenes distintas.
Método 1: Especificando todas las columnas.
SELECT num_vuelo, origen, destino, hora_salida, tipo_avion
FROM vuelos;Método 2: Usando el comodín asterisco (*).
SELECT *
FROM vuelos;Filtrado de Datos con WHERE
Ejercicio 10: Filtrar por una condición simple
Recuperar de la tabla vuelos solo aquellos que salen de Madrid.
SELECT *
FROM vuelos
WHERE origen = 'madrid';Ejercicio 11: Filtrar por múltiples condiciones (AND)
Recuperar el número de vuelo y la hora de salida de todos los vuelos que hacen el trayecto Madrid-Londres.
SELECT num_vuelo, hora_salida
FROM vuelos
WHERE origen = 'madrid' AND destino = 'londres';Ejercicio 12: Usar el operador de desigualdad
Recuperar los vuelos (fila completa) que tengan por destino Londres pero que no salgan de Madrid.
SELECT *
FROM vuelos
WHERE destino = 'londres' AND origen <> 'madrid';Ejercicio 13: Filtrar usando el operador IN
Recuperar todos los vuelos que viajan entre Madrid y Sevilla (en cualquier dirección).
SELECT *
FROM vuelos
WHERE origen IN ('madrid', 'sevilla') AND destino IN ('sevilla', 'madrid');Ejercicio 14: Combinar AND con IN
Recuperar todos los vuelos que salgan de Madrid y lleguen a Barcelona o a Sevilla.
SELECT *
FROM vuelos
WHERE origen = 'madrid' AND destino IN ('barcelona', 'sevilla');Ejercicio 15: Filtrar por múltiples valores en una columna
Recuperar los vuelos que salgan de Madrid, Barcelona o Sevilla.
SELECT *
FROM vuelos
WHERE origen IN ('madrid', 'barcelona', 'sevilla');Ejercicio 16: Negar una condición con NOT IN
Recuperar todos los vuelos excepto los que salgan de Copenhague o Dublín.
SELECT *
FROM vuelos
WHERE origen NOT IN ('copenhague', 'dublin');Ejercicio 17: Filtrar por un rango de horas
Recuperar todos los vuelos que salgan desde las 6 hasta las 12 de la mañana (es decir, entre las 06:00 y las 11:59).
SELECT *
FROM vuelos
WHERE HOUR(hora_salida) >= 6 AND HOUR(hora_salida) < 12;Ejercicio 18: Filtrar texto con NOT LIKE
Recuperar todos los vuelos que no son de la compañía Iberia (asumiendo que sus números de vuelo no comienzan con ‘IB’).
SELECT *
FROM vuelos
WHERE num_vuelo NOT LIKE 'ib%';Ejercicio 19: Filtrar texto con LIKE
Recuperar todos los vuelos de la compañía Iberia (asumiendo que sus números de vuelo comienzan con ‘IB’).
SELECT *
FROM vuelos
WHERE num_vuelo LIKE 'ib%';Ejercicio 22: Realizar comparaciones entre columnas
Seleccionar los aviones cuya longitud supere a su envergadura en más de un 10%.
SELECT *
FROM aviones
WHERE longitud > envergadura * 1.1;Cálculos y Funciones en Consultas
Ejercicio 21: Realizar cálculos entre columnas
Obtener la relación entre la longitud y la velocidad de crucero para todos los aviones, mostrando el resultado en una columna con alias.
SELECT tipo, longitud / velocidad_crucero AS 'relacion_longitud_velocidad'
FROM aviones;Ejercicio 32: Usar funciones de cadena (LEN/LENGTH)
Recuperar una lista de ciudades de origen sin duplicados y la longitud del nombre de cada ciudad.
SELECT DISTINCT origen, LEN(origen) AS 'longitud_de_la_ciudad'
FROM vuelos;Ejercicio 33: Usar funciones de subcadena (SUBSTRING)
De la lista de ciudades de origen, obtener una columna con los caracteres 2º, 3º y 4º, y otra con los caracteres 3º y 4º.
SELECT DISTINCT origen,
SUBSTRING(origen, 2, 3) AS 'caracteres_2_3_4',
SUBSTRING(origen, 3, 2) AS 'caracteres_3_4'
FROM vuelos;Ejercicio 35: Explicación de una sentencia con funciones de fecha
Pregunta: ¿Qué realiza la siguiente sentencia?
SELECT DISTINCT fecha_salida, YEAR(fecha_salida), MONTH(fecha_salida), DAY(fecha_salida)
FROM reservas;Respuesta: Esta sentencia selecciona y muestra cada fecha de salida única de la tabla reservas, junto con el desglose de esa fecha en columnas separadas para el año, el mes y el día.
Ejercicio 36: Explicación de una sentencia con funciones de tiempo
Pregunta: ¿Qué realiza la siguiente sentencia?
SELECT hora_salida, HOUR(hora_salida), MINUTE(hora_salida), SECOND(hora_salida)
FROM vuelos;Respuesta: Esta sentencia muestra todas las horas de salida de la tabla vuelos y, para cada una, extrae y muestra en columnas separadas la hora, el minuto y el segundo.
Ejercicio 37: Calcular diferencia entre fechas (DATEDIFF)
Hallar cuántos días han pasado para cada reserva entre la fecha de salida y el día 1 de marzo de 1992.
SELECT '01/03/1992' AS 'fecha_referencia',
fecha_salida,
DATEDIFF(day, fecha_salida, '1/3/92') AS 'diferencia_en_dias'
FROM reservas;Funciones de Agregación y Agrupación
Ejercicio 23: Obtener valores mínimos y máximos (MIN, MAX)
Obtener los valores mínimos y máximos de la velocidad de crucero de la tabla aviones.
SELECT MIN(velocidad_crucero) AS 'velocidad_minima_crucero',
MAX(velocidad_crucero) AS 'velocidad_maxima_crucero'
FROM aviones;Ejercicio 24: Obtener el primer evento de un grupo
Obtener la hora del primer vuelo que sale de Madrid.
SELECT MIN(hora_salida) AS 'primer_vuelo_sale_de_madrid'
FROM vuelos
WHERE origen = 'madrid';Ejercicio 25: Contar filas que cumplen una condición
Se desea saber cuántas reservas tienen más de 50 plazas libres.
SELECT COUNT(*) AS 'reservas_con_mas_de_50_plazas'
FROM reservas
WHERE plazas_libres > 50;Nota: El ejercicio original seleccionaba todas las columnas (SELECT *), pero la pregunta pide «cuántas reservas», lo que implica usar COUNT(*).
Ejercicio 26: Contar todas las filas de una tabla (COUNT)
Se desea saber cuántas reservas existen en total en la tabla.
SELECT COUNT(*) AS 'numero_de_reservas'
FROM reservas;Ejercicio 27: Contar valores distintos
Recuperar el número de destinos distintos que aparecen en la tabla vuelos.
SELECT COUNT(DISTINCT destino) AS 'numero_destinos_distintos'
FROM vuelos;Nota: El ejercicio original listaba los destinos con GROUP BY, pero la pregunta pide «el número de destinos», lo que se logra más eficientemente con COUNT(DISTINCT ...).
Ejercicio 28: Seleccionar datos por fecha
Obtener el número de plazas que quedan en todos los vuelos del día 20 de febrero de 1992.
SELECT num_vuelo, plazas_libres
FROM reservas
WHERE fecha_salida = '20/02/1992';Nota: El ejercicio original usaba SELECT *, pero la pregunta se centra en el «número de plazas».
Ejercicio 29: Sumar valores por grupo (SUM, GROUP BY)
Calcular el número total de plazas libres que existen para cada vuelo, agrupando por número de vuelo.
SELECT num_vuelo, SUM(plazas_libres) AS 'total_plazas_libres'
FROM reservas
GROUP BY num_vuelo;Ejercicio 30: Calcular el promedio (AVG)
Recuperar la capacidad media de los aviones.
SELECT AVG(capacidad) AS 'capacidad_media_aviones'
FROM aviones;Ejercicio 38: Agrupar por múltiples columnas
Visualizar la hora del primer vuelo que despega para cada combinación de origen y destino.
SELECT origen, destino, MIN(hora_salida) AS 'primer_vuelo'
FROM vuelos
GROUP BY origen, destino;Ejercicio 39: Filtrar grupos con HAVING
Visualizar la hora del primer vuelo para cada combinación de origen y destino, excluyendo aquellos vuelos cuyo destino sea Barcelona.
SELECT origen, destino, MIN(hora_salida) AS 'primer_vuelo'
FROM vuelos
GROUP BY origen, destino
HAVING destino <> 'barcelona';Ejercicio 43: Obtener el valor mínimo por grupo
Obtener la hora de salida más temprana para cada par de origen y destino.
SELECT origen, destino, MIN(hora_salida) AS 'primer_vuelo'
FROM vuelos
GROUP BY origen, destino;Ejercicio 44: Obtener la suma por grupo
Mostrar el total de plazas libres para cada número de vuelo.
SELECT num_vuelo, SUM(plazas_libres) AS 'total_plazas_libres'
FROM reservas
GROUP BY num_vuelo;Ejercicio 45: Filtrar grupos con HAVING y LIKE
Mostrar el total de plazas libres para cada vuelo de Iberia.
SELECT num_vuelo, SUM(plazas_libres) AS 'total_plazas_libres'
FROM reservas
GROUP BY num_vuelo
HAVING num_vuelo LIKE 'ib%';Ejercicio 46: Combinar condiciones en HAVING
Mostrar aquellos vuelos de Iberia que tienen en total más de 150 plazas libres.
SELECT num_vuelo, SUM(plazas_libres) AS 'total_plazas_libres'
FROM reservas
GROUP BY num_vuelo
HAVING num_vuelo LIKE 'ib%' AND SUM(plazas_libres) > 150;Manipulación de Datos (DML)
Ejercicio 61: Insertar una nueva fila (INSERT INTO)
Insertar una nueva fila en la tabla reservas con los valores: ‘ib600’ para num_vuelo, ’23-02-92′ para fecha_salida y 45 para plazas_libres.
INSERT INTO reservas (num_vuelo, fecha_salida, plazas_libres)
VALUES ('ib600', '23-02-92', 45);Ejercicio 62: Insertar filas basadas en una consulta
Insertar en la tabla reservas el número de vuelo para todos los registros cuyo origen es Sevilla, con una fecha y plazas por defecto.
INSERT INTO reservas (num_vuelo, fecha_salida, plazas_libres)
SELECT num_vuelo, '2-2-92', 0
FROM vuelos
WHERE origen = 'sevilla';Ejercicio 63: Modificar registros (UPDATE)
Modificar el tipo de avión del vuelo Málaga-Londres de las 15:05, asignándole el valor ‘d9s’.
UPDATE vuelos
SET tipo_avion = 'd9s'
WHERE origen = 'malaga'
AND destino = 'londres'
AND HOUR(hora_salida) = 15
AND MINUTE(hora_salida) = 5;Para comprobar el resultado:
SELECT *
FROM vuelos
WHERE origen = 'malaga'
AND destino = 'londres'
AND HOUR(hora_salida) = 15
AND MINUTE(hora_salida) = 5;Ejercicio 64: Modificar todos los registros de una tabla
Reducir la capacidad de todos los aviones en un 10%.
UPDATE aviones
SET capacidad = capacidad * 0.9;Para comprobar el resultado:
SELECT *
FROM aviones;Ejercicio 65: Eliminar registros con condición (DELETE)
Eliminar de la tabla reservas los registros que tengan menos de 50 plazas libres.
DELETE FROM reservas
WHERE plazas_libres < 50;Para comprobar el resultado:
SELECT num_vuelo, fecha_salida, plazas_libres
FROM reservas;Ejercicio 66: Eliminar todos los registros de una tabla
Borrar todos los registros de la tabla reservas.
DELETE FROM reservas;Definición y Eliminación de Objetos (DDL)
Ejercicio 83: Borrar una tabla (DROP TABLE)
Borrar la tabla completa de vuelos.
DROP TABLE vuelos;Ejercicio 84: Explicación de una sentencia DDL
Pregunta: ¿Qué hace la orden DROP INDEX ixreservas?
Respuesta: Borra el índice llamado ixreservas de la base de datos actual. Esto elimina la estructura del índice, pero no los datos de la tabla asociada.
Ejercicio 85: Borrar una vista (DROP VIEW)
Borrar la vista llamada ixvuelos.
DROP VIEW ixvuelos;
Deja un comentario