80 - Borrar registros consultando otras tablas (delete - join) |
Una empresa tiene registrados sus clientes en una tabla llamada "clientes", también tiene una tabla "provincias" donde registra los nombres de las provincias. 1- Elimine la tabla "clientes" y "provincias", si existen: drop table if exists clientes, provincias; 2- Créelas con las siguientes estructuras: create table clientes ( codigo int unsigned auto_increment, nombre varchar(30) not null, domicilio varchar(30), ciudad varchar(20), codigoprovincia tinyint unsigned, telefono varchar(11), primary key(codigo) ); create table provincias( codigo tinyint unsigned auto_increment, nombre varchar(20), primary key (codigo) ); 3- Ingrese algunos registros para ambas tablas: insert into provincias (nombre) values('Cordoba'); insert into provincias (nombre) values('Santa Fe'); insert into provincias (nombre) values('Corrientes'); insert into provincias (nombre) values('Misiones'); insert into provincias (nombre) values('Salta'); insert into provincias (nombre) values('Buenos Aires'); insert into provincias (nombre) values('Neuquen'); insert into clientes (nombre,domicilio,ciudad,codigoprovincia,telefono) values ('Lopez Marcos', 'Colon 111', 'Córdoba',1,'null'); insert into clientes (nombre,domicilio,ciudad,codigoprovincia,telefono) values ('Perez Ana', 'San Martin 222', 'Cruz del Eje',1,'4578585'); insert into clientes (nombre,domicilio,ciudad,codigoprovincia,telefono) values ('Garcia Juan', 'Rivadavia 333', 'Villa Maria',1,'4578445'); insert into clientes (nombre,domicilio,ciudad,codigoprovincia,telefono) values ('Perez Luis', 'Sarmiento 444', 'Rosario',2,null); insert into clientes (nombre,domicilio,ciudad,codigoprovincia,telefono) values ('Pereyra Lucas', 'San Martin 555', 'Cruz del Eje',1,'4253685'); insert into clientes (nombre,domicilio,ciudad,codigoprovincia,telefono) values ('Gomez Ines', 'San Martin 666', 'Santa Fe',2,'0345252525'); insert into clientes (nombre,domicilio,ciudad,codigoprovincia,telefono) values ('Torres Fabiola', 'Alem 777', 'Villa del Rosario',1,'4554455'); insert into clientes (nombre,domicilio,ciudad,codigoprovincia,telefono) values ('Lopez Carlos', 'Irigoyen 888', 'Cruz del Eje',1,null); insert into clientes (nombre,domicilio,ciudad,codigoprovincia,telefono) values ('Ramos Betina', 'San Martin 999', 'Cordoba',1,'4223366'); insert into clientes (nombre,domicilio,ciudad,codigoprovincia,telefono) values ('Lopez Lucas', 'San Martin 1010', 'Posadas',5,'0457858745'); 4- Se quiere borrar de la tabla "clientes" todos los clientes de la provincia "Santa Fe", pero no se recuerda el código de la provincia. Elimine dichos clientes consultando el código de provincia en "provincias" en la misma sentencia: delete clientes from clientes join provincias on clientes.codigoprovincia=provincias.codigo where provincias.nombre='Santa Fe'; 5- Verifique la eliminación.
Un instituto de enseñanza guarda en una tabla llamada "carreras" los datos de las carreras que dicta, en "materias" las materias de cada carrera y en "inscriptos" las inscripciones. 1- Elimine las 3 tablas, si existen: drop table if exists carreras, materias, inscriptos; 2- Cree las tablas con las siguientes estructuras: create table carreras( codigo tinyint unsigned auto_increment, nombre varchar(30), primary key(codigo) ); create table materias( codigo tinyint unsigned auto_increment, codigocarrera tinyint unsigned, nombre varchar(30), profesor varchar(30), primary key(codigo,codigocarrera) ); create table inscriptos( documento char(8) not null, codigocarrera tinyint unsigned, codigomateria tinyint unsigned, año year ); 3- Ingrese algunos registros: insert into carreras values(1,'Analista de sistemas'); insert into carreras values(2,'Diseñador web'); insert into materias values(1,1,'Programacion I','Alfredo Lopez'); insert into materias values(2,1,'Sistemas de datos I','Bernardo Garcia'); insert into materias values(3,1,'Ingles tecnico','Edit Torres'); insert into materias values(1,2,'Programacion basica','Alfredo Lopez'); insert into materias values(2,2,'Ingles I','Edit Torres'); insert into materias values(3,2,'Protocolos','Hector Juarez'); insert into inscriptos values('22333444',1,3,'2016'); insert into inscriptos values('23222222',1,2,'2016'); insert into inscriptos values('25000999',1,2,'2016'); insert into inscriptos values('25000999',2,1,'2016'); insert into inscriptos values('25000999',2,2,'2016'); 4- La materia "Sistemas de datos I" no se va a dictar por cambios en el programa. Elimine todas las inscripciones a dicha materia de la tabla "inscriptos" consultando el código en "materias" y "carreras": delete inscriptos from inscriptos join materias as m on inscriptos.codigomateria=m.codigo join carreras as c on inscriptos.codigocarrera=c.codigo and c.codigo=m.codigocarrera where m.nombre='Sistemas de datos I'; 5- Verifique la eliminación en "inscriptos". 6- Elimine la materia de la tabla "materias": delete from materias where nombre='Sistemas de datos I';
Retornar