78 - Actualizar datos con valores de otra tabla (update) |
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',4,'0457858745'); 4- La empresa quiere eliminar la tabla "provincias" y almacenar el nombre de la provincia de la cual son oriundos sus clientes en la misma tabla "clientes". 5- Altere la tabla "clientes" para que se almacene en ella el nombre de la provincia: alter table clientes add provincia varchar(20); 6- Actualice el campo "provincia" de todos los registros de "clientes", con el valor del campo "nombre" de la tabla "provincias" mediante un "join": update clientes as c join provincias as p on c.codigoprovincia=p.codigo set c.provincia=p.nombre; 7- Elimine el campo innecesario en "clientes" y la tabla "provincias".
A) Un club dicta clases de distintos deportes. En una tabla llamada "socios" guarda los datos de sus socios y en una tabla denominada "inscriptos" almacena la información necesaria para las inscripciones de los socios a los distintos deportes. 1- Elimine las tablas si existen. 2- Cree las tablas: create table socios( documento char(8) not null, nombre varchar(30), domicilio varchar(30), primary key(documento) ); create table inscriptos( documento char(8) not null, deporte varchar(15) not null, año year, matricula char(1), /*si esta paga ='s' sino 'n'*/ primary key(documento,deporte,año) ); 3- Ingrese algunos registros para ambas tablas: insert into socios values('22333444','Juan Perez','Colon 234'); insert into socios values('23333444','Maria Lopez','Sarmiento 465'); insert into socios values('24333444','Antonio Juarez','Caseros 980'); insert into inscriptos values ('22333444','natacion','2005','s'); insert into inscriptos values ('22333444','natacion','2006','n'); insert into inscriptos values ('23333444','natacion','2005','s'); insert into inscriptos values ('23333444','tenis','2006','s'); insert into inscriptos values ('23333444','natacion','2006','s'); insert into inscriptos values ('24333444','tenis','2006','n'); insert into inscriptos values ('24333444','basquet','2006','n'); 4- El club quiere eliminar la tabla "socios" porque en adelante, para inscribirse en un deporte ya no será necesario ser socio. Se quiere almacenar el nombre y domicilio de quien se inscribe en la misma tabla en la cual se registran las inscripciones. Agregue los campos necesarios a la tabla "inscriptos": alter table inscriptos add nombre varchar(30), add domicilio varchar(30); 5- Actualice los nuevos campos realizando un "join" con la tabla "socios": update socios as s join inscriptos as i on s.documento=i.documento set i.nombre=s.nombre, i.domicilio=s.domicilio; 6- Elimine la tabla "socios". B) Una empresa registra los datos personales de sus empleados en una tabla llamada "empleados" y las dependencias a las cuales pertenecen los mismos en una tabla denominada "dependencias". 1- Elimine las tablas "empleados" y "dependencias" si existen. 2- Cree las tablas: create table empleados( documento char(8) not null, nombre varchar(30) not null, domicilio varchar(30), fechaingreso date, primary key(documento) ); create table dependencias( documento char(8) not null, seccion varchar(30), sueldo decimal (6,2) unsigned, primary key(documento) ); 3- Ingrese algunos registros: insert into empleados values ('22333111','Juan Perez','Colon 123','1990-02-01'); insert into empleados values ('25444444','Susana Morales','Avellaneda 345','1995-04-01'); insert into empleados values ('20111222','Hector Pereyra','Caseros 987','1995-04-01'); insert into empleados values ('30000222','Luis Luque','Urquiza 456','1980-09-01'); insert into empleados values ('20555444','Laura Torres','San Martin 1122','2000-05-15'); insert into empleados values ('30000234','Alberto Soto','Peru 232','2003-08-15'); insert into empleados values ('30154269','Oscar Mendez','Colon 1245','2004-06-23'); insert into dependencias values('22333111','Gerencia',2000); insert into dependencias values ('25444444','Sistemas',1500); insert into dependencias values ('20111222','Sistemas',1400); insert into dependencias values ('30000222','Contaduría',1400); insert into dependencias values ('20555444','Secretaría',1000); insert into dependencias values ('30000234','Secretaría',1000); insert into dependencias values ('30154269','Relaciones públicas',1100); 4- La empresa quiere eliminar la tabla "dependencias" y guardar la información que la misma contiene en la tabla "empleados". Agregue los campos necesarios a la tabla "empleados": alter table empleados add seccion varchar(30) not null, add sueldo decimal(6,2) unsigned; 5- Vea los registros de la tabla "empleados": select *from empleados; 6- Actualice los nuevos campos realizando un "join" con la tabla "dependencias": update empleados as e join dependencias as d on d.documento=e.documento set e.seccion=d.seccion, e.sueldo=d.sueldo; 7- Elimine la tabla "dependencias". 8- Visualice la nueva estructura de la tabla "empleados" y sus registros. C) Un instituto de enseñanza guarda en una tabla llamada "alumnos" los datos personales de sus alumnos. 1- Elimine la tabla "alumnos" si existe. 2- Cree la tabla con la siguiente estructura: create table alumnos( apellido varchar(20) not null, nombre varchar(20), documento char(8), domicilio varchar(30), primary key(documento) ); 3- Ingrese los siguientes registros: insert into alumnos values('Perez','Luis','22333444','Colon 123'); insert into alumnos values('Lopez','Natalia','23333444','Caseros 980'); insert into alumnos values('Torres','Mariano','24333444','Bulnes 256'); insert into alumnos values('Garcia','Ana','25333444','Sucre 209'); insert into alumnos values('Perez','Antonio','26333444','Avellaneda 1083'); 4- Se desea alterar la tabla "alumnos" para que guarde en un mismo campo el apellido y el nombre del alumno. update alumnos set nombre=concat(apellido,' ',nombre); 5- Muestre todos los registros de la tabla "alumnos". 6- Elimine el campo "apellido".