— ACTIVIDAD 8 —
A. Insertar registros con valores de otra tabla
(Insert - Select- Join)
Se crean las entidades relacionadas
- Cancion
- casadisquera
Se crea una tercera entidad para insertar los registros con los valores de una de las entidades anteriores
- cantidadcasadisquera
Se ingresan registros a las dos entidades fuente (canción - casadisquera)
*******************************************************************
Para insertar registros en la tabla cantidadcasadisquera se puede hacer de dos formas:
- Insertar los registros uno a uno
- Realizando el insert - select en una misma sentencia
********************************************************************
ejemplo: Insertar en la entidad cantidadcasadisquera los nombres de la casa disquera con la cantidad de canciones
ANALISIS
1. Cual es el nombre de la tabla en la que se van insertar los datos
- cantidadcasadisquera
2. que campo(campos contiene la información solicitada) y de que tabla
- Campo: nombre
- Tabla: casadisquera
3.Condición(es) adicionales si las hay
NA
4. Que tablas estan involucradas en la consulta y como se relacionan
- Tablas: cancion y casadisquera
- Relacion: casadiquera.idcasa_miusic=cancion.idcasa_miusic
5. Comando(s): Insert - Select- Join y diseñar la sintaxis mysql
CONSULTA:
select c.nombre, count(co.idcasa_miusic) 'Cantidad' from casadisquera as c left join cancion as co on c.idcasa_miusic=co.idcasa_miusic group by c.nombre;
INSERTAR EN LA TABLA
insert into cantidadcasadisquera select c.nombre, count(co.idcasa_miusic) 'Cantidad' from casadisquera as c left join cancion as co on c.idcasa_miusic=co.idcasa_miusic group by c.nombre;
select * from cantidadcasadisquera;
****************************************************************************************************************************
B. Actualizar datos con valores de otra tabla
- (Update)
Siguiendo con el ejemplo de las entidades cancion y casadisquera.
1. Se pretende alterar la tabla cancion para que almacene el nombre de la casa disquera y eliminar la entidad casadisquera
2. Agregar un campo llamado casadisquera en la entidad cancion.
****************************************************************************************************************************
- alter table cancion add casadisquera varchar(30);
Vereificar:
- select * from cancion;
3. Actualizar los valores para este campo creado en la entidad cancion (casadisquera).
a. Se puede actualizar uno a uno los registros
- Ejemplo: update cancion set casadisquera='EMI' where idcasa_miusic='003';
4. Realizando la actualización con un join
ANALISIS
1. Cual es el nombre de la tabla en la qe se van actualizar los datos y con que información
- Tabla:cancion
- Informacion: cancion.casadisquera=casadisquera.nombre
2. que campo(campos conitiene la inforamcion solicitada) y de que tabla
- Campo: nombre
- Tabla: casadisquera
3. Condición(es) adicionales si las hay
NA
4. Que tablas estan involucradas en la consulta y como se relacionan
- Tablas: cancion y casadisquera
- Relacion: casadiquera.idcasa_miusic=cancion.idcasa_miusic
5. Comando(s): Update - Join y diseñar la sintaxis mysql
- update cancion join casadisquera on cancion.idcasa_miusic=casadisquera.idcasa_miusic
set cancion.casadisquera=casadisquera.nombre;
- select * from cancion;
****************************************************************************************************************************
C. Actualización en cascada
(Update - Join)
************************************************************************************************************************
Restaurar ejercicio 2
- show tables;
- select * from cancion;
***********************************************************************
C. Actualización en cascada
(Update - Join)
Actualizar el codigo de la casa disquera EMI por 16
ANALISIS
1. Cual es el nombre de la tabla en la que se van actualizar los datos y con que información
- Taba:cancion y casadisquera
- Informacion: casadisquera.enlacedisquera='16',cancion.codigo='16'
2. que campo(campos conitiene la inforamcion solicitada) y de que tabla
- Campo: NA
- Tabla: NA
3.Condición(es) adicionales si las hay
- casadisquera.nombre='EMI'
4. Que tablas estan involucradas en la consulta y como se relacionan
- Tablas: cancion y casadisquera
- Relacion: casadiquera.codigo=cancion.enlacedisquera
5. Comando(s): Update - Join y diseñar la sintaxis mysql
***************************************************************************
- select * from casadisquera;
- update cancion as n join casadisquera as c on n.enlacedisquera=c.codigo set n.enlacedisquera='16',c.codigo='16' where c.nombre='EMI';
- select * from cancion;
- select * from casadisquera;
****************************************************************************************************************************
D. Borrar registros consultando otras tablas(Delete - Join)
Se puede hacer de dos formas:
1. Borrar los registros direccionando el código
Ejemplo:
- Delete from libro where codigo=1;
2. Realizar todo en un solo paso
****************************************************************************************************************************
Borrar las canciones y la casa disquera 'EMI'
ANALISIS
1. Cual es el nombre de la tabla en la que se van a eliminar los datos
- Tabla:cancion y casadisquera
2. que campo(campos contiene la informacion solicitada) y de que tabla
- Campo: NA
- Tabla: NA
3.Condición(es) adicionales si las hay
- casadisquera.nombre='EMI'
4. Que tablas estan involucradas en la consulta y como se relacionan
- Tablas: cancion y casadisquera
- Relacion: casadiquera.codigo=cancion.enlacedisquera
5. Comando(s): Delete- Join y diseñar la sintaxis mysql
- delete cancion from cancion join casadisquera on cancion.enlacedisquera=casadisquera.codigo where casadisquera.nombre='EMI';
- select * from cancion;
Restaurar nuevamente ejercicio 2
- select * from cancion;
**************************************************************************************
E. Borrar registros buscando coincidencia en otras tablas
- (Delete - Join)
Teniendo las entidades canción y casadisquera
Busquemos eliminar todas las canciones cuyo código no exista en la tabla casadisquera
*****************************************************************************************
- select * from casadisquera;
- select * from cancion;
************************************************************************
Agregando dos registros en la tabla canción
*************************************************************************
- insert into cancion values('007','Pajarando','Cargamo ODG','9');
- insert into cancion values('008','Violeta','SDRT','18');
- select * from cancion;
***********************************************************************
Realizamos una consulta para verificar que códigos de la tabla canción no están en casadisquera
***********************************************************************
1. Cuales son las tablas que estan involucradas
- cancion y casadisquera
2. que campos conitiene la inforamcion solicitada) y de que tabla
- Campo: *
- Tabla: cancion
3.Condición(es) adicionales si las hay
- casadisquera.codigo is null
4. Que tablas estan involucradas en la consulta y como se relacionan
- Tablas: cancion y casadisquera
- Relacion: cancion.enlacedisquera=casadisquera.codigo
5. Comando(s): Select- left Join y diseñar la sintaxis mysql
- select c.* from cancion as c left join casadisquera as ca on c.enlacedisquera=ca.codigo
where ca.codigo is null;
*******************************************************************
O en el momento de realizar el left join, eliminamos los registros.
Eliminar las canciones que no tienen registro en la casa disquera
*******************************************************************
- delete cancion from cancion left join casadisquera on cancion.enlacedisquera=casadisquera.codigo where casadisquera.codigo is null;
- select * from cancion;
- select * from casadisquera;
*******************************************************************************
F. Borrar registros en cascada
- (Delete - Join)
Siguiendo con el ejemplo de las tablas anteriores (canción - casadisquera)
- Se puede borrar la información uno a uno los registros siguiendo condiciones.
- Se puede borrar los registros requeridos a través de una sola consulta (cascada)
**********************************************************************************
Elimimar la informacion de la casa disqera Sony & BMG en cascada
1. Cuales son las tablas que estan involucradas
- cancion y casadisquera
2. que campos conitiene la informacion solicitada) y de que tabla
NA
3.Condición(es) adicionales si las hay
- casadisquera.nombre='Sony & BMG'
4. Que tablas estan involucradas en la consulta y como se relacionan
- Tablas: cancion y casadisquera
- Relacion: cancion.enlacedisquera=casadisquera.codigo
5. Comando(s): Select- left Join y diseñar la sintaxis mysql
COMANDO Y SINTAXIS
- delete cancion,casadisquera from cancion join casadisquera on cancion.enlacedisquera=casadisquera.codigo where casadisquera.nombre='Sony & BMG';
- select * from cancion;
- select * from casadisquera;
BASES DE DATOS PARA LOS EJERCICIOS:
BD #1:
BD #2:
ARCHIVO TXT DE LA BASE DE DATOS DONDE SE REALIZARON LOS EJERCICIOS: