David Fernández Viruel Ejercicios de SQL 2ºSMR
Ejercicio 1
CREATE TABLE Películas (
cod_pelicula PRIMARY KEY NOT NULL,
nombre VARCHAR(20) NOT NULL,
fecha_alta DATE DEFAULT “06/01/01”,
stock INT DEFAULT(10),
precio MONEY NOT NULL);
Ejercicio 2
- INSERT INTO PELICULAS(cod_pelicula, nombre, fecha_alta, stock, precio)
values(1,ʼ06/01/01ʼ,20,60); → Correcto
- INSERT INTO PELICULAS VALUES(ʻ2ʼ,ʼEl señor de los anillosʼ,20); → Incorrecto. Porque
después de poner “insert into peliculas” había que poner el nombre de las columnas y después los
valores
- INSERT INTO PELICULAS(cod_pelicula,nombre,precio) values(3,ʼLas dos torresʼ,24); →
Correcto
- INSERT INTO PELICULAS(cod_pelicula, nombre,fecha_alta) values(4,ʼEl retorno del
reyʼ,06/01/01); → Incorrecto. Porque las fechas hay que ponerlas entre comillas.
Ejercicio 3
CREATE TABLE Clientes (
dni_cliente PRIMARY KEY NOT NULL,
nombre VARCHAR(20) NOT NULL,
dirección VARCHAR(50),
población DEFAULT(“Madrid”),
código postal INT VARCHAR (10),
fecha_nac DATE);
Ejercicio 4
CREATE TABLE Compras (
codigo_pelicula INT PRIMARY KEY NOT NULL,
dni_cliente VARCHAR(20) NOT NULL,
fecha_compra DATE NOT NULL,
FOREIGN KEY (dni_cliente) REFERENCE Clientes(dni_cliente)
ON DELETE cascade ON UPDATE cascade
FOREIGN KEY (codigo_pelicula) REFERENCE Película(codigo_pelicula)
ON DELETE cascade ON UPDATE cascade);
David Fernández Viruel Ejercicios de SQL 2ºSMR
Ejercicio 5
a. La tabla CLIENTES está inicialmente vacía (no hemos introducido datos). ¿Es posible
introducir una compra en la tabla de COMPRAS?
No es posible introducir datos en la tabla hasta que tengamos un cliente registrado.
b. ¿Qué ocurre si intentamos eliminar la tabla CLIENTES y la tabla COMPRAS no está
vacía?
En la tabla COMPRAS saltaría un error de que no encuentra los datos de los clientes que ha
comprado un producto.
c. Tenemos los siguientes datos en la tabla CLIENTES.
Indica a continuación si los siguientes INSERT en la tabla COMPRAS son correctos (supón
que todos los artículos que introduzcas existen en la tabla ARTICULOS).
- INSERT INTO COMPRAS VALUES(444555666,888999777,ʼ06/05/05ʼ);
Es correcto.
- INSERT INTO COMPRAS VALUES(666777666,111222333,ʼ09/10/05ʼ);
Es correcto.
- INSERT INTO COMPRAS VALUES(987654321,88899988,09/11/05);
Este Insert no es correcto.
Ejercicio 6
- Crear una tabla llamada PERSONAS con los campos (dni, nombre, apellido1, apellido2).
CREATE TABLE Personas (
dni PRIMARY KEY,
nombre VARCHAR(20),
apellido1 VARCHAR(20),
apellido2 VARCHAR(20));
- Crear una tabla llamada VEHICULOS con los campos (CodigoVehiculo, marca, modelo,
cilindrada).
CREATE TABLE Vehiculos (
CodigoVehiculo INT PRIMARY KEY,
marca VARCHAR(20),
modelo VARCHAR(20),
cilindrada DECIMAL);
- Crear una tabla llamada PERSONAS_VEHICULOS con los campos (dni, CodigoVehiculo).
CREATE TABLE Personas_vehiculos (
dni VARCHAR(9),
CodigoVehiculo INT,
CONSTRAINT pk primary key(dni, CodigoVehiculo),
FOREIGN KEY (CodigoVehiculo) REFERENCE Vehiculos(CodigoVehiculo));
David Fernández Viruel Ejercicios de SQL 2ºSMR
- Crear una tabla llamada FAMILIA con los campos (CodigoFamilia, DescripcionFamilia).
CREATE TABLE Familia (
CodigoFamilia INT PRIMARY KEY,
DescripcionFamilia VARCHAR(100));
- Identificar las claves primarias de cada tabla y las claves foráneas teniendo en cuenta que 1
PERSONA puede tener 0 o varios VEHICULOS. 1 FAMILIA tendrá 2 o más componentes, 1
PERSONA puede pertenecer a 1 o a ninguna familia
ALTER TABLE Personas
ADD CodigoFamilia INT,
ADD FOREIGN KEY (CodigoFamilia) REFERENCE Familia(CodigoFamilia);
Ejercicio 7
El orden de inserción:
1- Personas
2- Vehículos
3- Personas_Vehículo
4- Familia
Ejercicio 8
CREATE TABLE Coches (
matricula PRIMARY KEY NOT NULL,
marca VARCHAR(20) NOT NULL,
modelo VARCHAR(20) NOT NULL,
color DEFAULT “Negro”,
num_caballos DEFAULT “90”,
num_puertas DEFAULT “5”,
codigo_cliente INT);
CREATE TABLE Clientes (
dni VARCHAR(9) NOT NULL,
nombre VARCHAR(20) NOT NULL,
apellidos VARCHAR(30) NOT NULL,
provincia DEFAULT ”Murcia”,
cod_postal VARCHAR(10),
tfno NUMERIC,
fecha_nac DATE NOT NULL);
CREATE TABLE Revisiones (
codigo PRIMARY KEY AUTO_INCREMENT NOT NULL,
precio NUMERIC NOT NULL
codigo_coche NUMERIC NOT NULL);
David Fernández Viruel Ejercicios de SQL 2ºSMR
Ejercicio 9
CREATE TABLE Médicos (
dni PRIMARY KEY NOT NULL,
nombre VARCHAR(20) NOT NULL,
apellidos VARCHAR(30) NOT NULL,
especialidades DEFAULT “Psiquiatría”,
CREATE TABLE Paciente (
dni VARCHAR(9) NOT NULL,
nombre VARCHAR(20) NOT NULL,
apellidos VARCHAR(30) NOT NULL,
provincia DEFAULT ”Murcia”,
cod_postal VARCHAR(10),
tfno NUMERIC,
fecha_nac DATE NOT NULL);
CREATE TABLE Ingresos (
codigo_médico PRIMARY KEY AUTO_INCREMENT NOT NULL,
dni_paciente NUMERIC NOT NULL
fecha_ingreso NUMERIC NOT NULL
FOREIGN KEY (dni_paciente) REFERENCE Paciente (dni));
Ejercicio 10
INSERT INTO MEDICOS (dni, nombre, apellidos, especialidad)
VALUES (12345, 'Juan', 'Pérez García', 'Cardiología'),
(67890, 'Marta', 'López Sánchez', 'Neurología'),
(11223, 'Carlos', 'Rodríguez Díaz', 'Psiquiatría');
INSERT INTO PACIENTES (dni, nombre, apellidos, provincia, cod_postal, tfno, fecha_nac)
VALUES (54321, 'Luis', 'González Toscano', 'Madrid', '28001', '612345678', '1980-05-20'),
(98765, 'Ana', 'Sánchez Pérez', 'Murcia', '30001', '618765432', '1992-03-14'),
(11234, 'Pedro', 'Martínez López', 'Alicante', '03001', '615432109', '1975-08-25');
INSERT INTO INGRESOS (codigo_medico, dni_paciente, fecha_ingreso)
VALUES (12345, 54321, '2024-01-10'),
(67890, 98765, '2024-02-15'),
(11223, 11234, '2024-03-20');
DELETE FROM PACIENTES WHERE dni = 54321;
SELECT * FROM INGRESOS;
David Fernández Viruel Ejercicios de SQL 2ºSMR
Ejercicio 11
CREATE TABLE Instituto (
código_centro INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
dirección VARCHAR(255) NOT NULL,
población VARCHAR(100) DEFAULT 'Murcia',
num_plazas INT DEFAULT 0 CHECK (num_plazas > 0),
tipo CHAR(1) DEFAULT 'T' CHECK (tipo IN ('T', 'S')),
CONSTRAINT chk_nombre CHECK (nombre = UPPER(nombre)));
INSERT INTO Instituto (nombre, dirección, población, num_plazas, tipo)
VALUES ('Instituto Salduba', 'Calle Falsa 123, Murcia', 'Murcia', 200, 'T'),
('Instituto Vega del Mar', 'Avenida del Sol 45, Murcia', 'Murcia', 150, 'S'),
('Instituto La Paz', 'Calle del Norte 78, Cartagena', 'Murcia', 300, 'T');
SELECT * FROM Instituto;
Ejercicio 12
CREATE TABLE Fabricantes (
cod_fabricante INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
nombre VARCHAR(30) NOT NULL,
país VARCHAR(30) DEFAULT 'ESPAÑA',
CONSTRAINT chk_nombre CHECK (nombre = UPPER(nombre)),
CONSTRAINT chk_país CHECK (país = UPPER(país)));
Ejercicio 13
CREATE TABLE Articulos (
cod_articulo INT NOT NULL,
cod_fabricante INT NOT NULL,
peso DECIMAL(10,2) NOT NULL,
categoria VARCHAR(10) CHECK (categoria IN ('Primera', 'Segunda', 'Tercera')) NOT NULL,
precio_venta DECIMAL(10,2) CHECK (precio_venta > 0) NOT NULL,
precio_costo DECIMAL(10,2) CHECK (precio_costo > 0) NOT NULL,
PRIMARY KEY (cod_articulo, cod_fabricante, peso, categoria));
Ejercicio 14
ALTER TABLE Aritculos
ADD CONSTRAINT fk_cod_fabricante
FOREIGN KEY (cod_fabricante)
REFERENCES Fabricantes(cod_fabricante)
ON DELETE CASCADE;
Ejercicio 15
ALTER TABLE PERSONAS_VEHICULOS
ADD FechaCompra DATE;
David Fernández Viruel Ejercicios de SQL 2ºSMR
Ejercicio 16
ALTER TABLE Personas
MODIFY nombre VARCHAR(100);
Ejercicio 17
ALTER TABLE Vehiculos
MODIFY modelo VARCHAR(150);
Ejercicio 18
CREATE TABLE Aficion (
código_afición INT PRIMARY KEY,
descripción VARCHAR(200));
Ejercicio 19
CREATE TABLE Aficion_persona (
dni VARCHAR(20),
código_afición INT,
PRIMARY KEY (dni, código_afición),
FOREIGN KEY (dni) REFERENCES Personas(dni),
FOREIGN KEY (código_afición) REFERENCES Aficion(código_afición));
Ejercicio 20
1- Insertar la tabla Afición .
2- Insertar la tabla Personas.
3- Insertar la tabla Aficion_personas.
Ejercicio 21
CREATE TABLE Emple30 AS
SELECT * FROM Emple
WHERE departamento = 30;
Ejercicio 22
ALTER TABLE Paciente
ADD sexo VARCHAR(10);
ALTER TABLE Paciente
ADD CONSTRAINT chk_sexo CHECK (sexo IN ('Hombre', 'Mujer'));
Ejercicio 23
ALTER TABLE Paciente
DROP COLUMN cod_postal;
David Fernández Viruel Ejercicios de SQL 2ºSMR
Ejercicio 24
CREATE TABLE Profesores (
dni VARCHAR(20),
nombre VARCHAR(100),
especialidad VARCHAR(100),
código_de_centro INT);
Ejercicio 25
ALTER TABLE Profesores
ADD CONSTRAINT pk_dni PRIMARY KEY (dni);
ALTER TABLE Profesores
ADD CONSTRAINT fk_codigo_de_centro FOREIGN KEY (código_de_centro)
REFERENCES Instituto(código_centro);