79 - Actualización en cascada (update - 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 de las cuales son oriundos los clientes. 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',4,'0457858745'); 4- Se quiere cambiar el código correspondiente a la provincia "Cordoba" por "10" y modificar todos los códigos de provincia de los clientes de "Cordoba" en una sola sentencia: update clientes as c join provincias as p on c.codigoprovincia=p.codigo set c.codigoprovincia=10, p.codigo=10 where p.nombre='Cordoba'; 5- Verifique el cambio en ambas tablas: select * from clientes; select * from provincias;
Un profesor guarda los promedios de sus alumnos de un curso en una tabla llamada "alumnos" y las notas de los mismos en la tabla "notas". 1- Elimine las tablas si existen. 2- Cree las tablas: create table alumnos( documento char(8) not null, nombre varchar(30), primary key(documento) ); create table notas( documento char(8) not null, nota decimal(4,2) unsigned ); 3- Ingrese los siguientes registros: insert into alumnos values('22333444','Juan Perez'); insert into alumnos values('23555666','Marina Herrero'); insert into alumnos values('24000333','Daniel Juarez'); insert into alumnos values('25222111','Hector Paz'); insert into notas values('22333444',7); insert into notas values('23555666',8); insert into notas values('24000333',3); insert into notas values('25222111',7); insert into notas values('22333444',7); insert into notas values('23555666',9); insert into notas values('24000333',4); insert into notas values('22333444',6); insert into notas values('23555666',10); insert into notas values('24000333',3); insert into notas values('25222111',9); insert into notas values('23555666',10); 4- El alumno "Juan Perez" registrado con documento "22333444" dice que su documento ha sido almacenado erróneamente, en realidad es "22333445". Modifique el documento del alumno en "alumnos" y "notas en una sola sentencia: update alumnos as a join notas as n on a.documento=n.documento set a.documento='22333445', n.documento='22333445' where a.documento='22333444';