0% encontró este documento útil (0 votos)
185 vistas7 páginas

Ejercicios Prácticos - SQL (DDL Y DCL)

El documento presenta una serie de ejercicios de SQL que incluyen la creación de tablas, inserciones de datos y definiciones de claves primarias y foráneas. Se abordan aspectos como la estructura de las tablas para películas, clientes, compras, vehículos, médicos y pacientes, así como la manipulación de datos mediante inserciones y alteraciones. Además, se incluyen restricciones y condiciones para asegurar la integridad de los datos en las bases de datos.
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)
185 vistas7 páginas

Ejercicios Prácticos - SQL (DDL Y DCL)

El documento presenta una serie de ejercicios de SQL que incluyen la creación de tablas, inserciones de datos y definiciones de claves primarias y foráneas. Se abordan aspectos como la estructura de las tablas para películas, clientes, compras, vehículos, médicos y pacientes, así como la manipulación de datos mediante inserciones y alteraciones. Además, se incluyen restricciones y condiciones para asegurar la integridad de los datos en las bases de datos.
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

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);

También podría gustarte