ACTIVIDAD 6
MANEJO DE INFORMACION EN CASCADA
BD II
a. Insertar registros con valores de otra tabla
(Insert - Select- Join)
b. Actualizar datos con valores de otra tabla
(Update)
c. Actualización en cascada
(Update - Join)
d. Borrar registros consultando otras tablas
(Delete - Join)
e. Borrar registros buscando coincidencia en otras tablas
(Delete - Join)
f. Borrar registros en cascada
(Delete - Join)
Bases de datos par el desarrollo de la clase
Diapositivas con la explicación
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
Ejemplo:
** Insertar en la entidad cantidadcasadisquera los nombres de la casa disquera con la cantidadcanciones.
Análisis:
1. Cual es el nombre de la tabla en la que se van a insertar los datos
- cantidadcasadisquera
2. Que campos (campos contiene la información solicitada) y de que tabla
- campo: nombre
- Tabla: casadisquera
3. Condiciones (es) adicionales si las hay
- N/A
4. Que tablas estan involucradas en la consulta y como se relacionan
- Tablas: cancion y casadisquera
- Relacion: casadisquera idcasa_miusic=cancion.idcasa_miusic
5. Comando(s)
- Insert -Select - Join y diseñar la sintaxis mysql
Sintaxis:
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;

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

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
Sintaxis:
alter table cancion add casadisquera varchar(30);

3. Actualizar los valores para que 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';
Analisis:
1. Cual es el nombre de la tabla en la que se van a actualizar los datos y con que informacion
- Informacion: cancion.casadisquera=casadisquera.nombre
- Tabla: cancion
2. Que campos (campos contiene la informacion solicitada) y de que tabla
- Campo: nombre
- Tabla: casadisquera
3. Condiciones (es) adicionales si las hay
- N/A
4. Que tablas están involucradas en la consulta y como se relacionan
- Tablas: cancion y casadisquera
- Relacion: casadisquera idcasa_miusic=cancion.idcasa_miusic
5. Comando(s)
- update - join y diseñar la sintaxis mysql
Sintaxis:
update cancion
join casadisquera
on cancion.idcasa_miusic=casadisquera.idcasa_miusic
set cancion.casadisquera=casadisquera.nombre;

C. Actualización en cascada
- ( Update - Join)
** Actualizar el código de la casa disquera EMI por 16
Analisis:
1. Cual es el nombre de la tabla en la que se van a actualizar los datos y con que informacion
- Informacion: casadisquera.enlacedisquera='16' , cancion.codigo='16'
- Tabla: cancion y casadisquera
2. Que campos (campos contiene la informacion solicitada) y de que tabla
- Campo: N/A
- Tabla: N/A
3. Condiciones (es) adicionales si las hay
- casadisquera.nombre='EMI'
4. Que tablas están involucradas en la consulta y como se relacionan
- Tablas: cancion y casadisquera
- Relacion: casadisquera.idcasa_miusic=cancion.codigo
5. comando(s)
- update - join y diseñar la sintaxis mysql
Sintaxis:
update cancion as n
join casadisquera as c
on n.enlacedisquera=c.codigo
set n.enlacedisquera='16',c.codigo='16'
where c.nombre='EMI';

D. Borrar registros consultando otras tablas
- (Delete - Join)
** Se puede hacer de dos formas
Ejemplo:
- delete from libro where codigo=1;
** Borrar las canciones de la casa disquera 'EMI'
Análisis:
1. Cual es el nombre de la tabla en la que se van a actualizar los datos y con que información
- Tabla: canción
2. Que campos (campos contiene la información solicitada) y de que tabla
- Campo: N/A
- Tabla: N/A
3. Condiciones (es) adicionales si las hay
- casadisquera.nombre='EMI'
4. Que tablas están involucradas en la consulta y como se relacionan
- Tablas: cancion y casadisquera
- Relacion: casadisquera.idcasa_miusic=cancion.código
5. Comando(s)
- delete - join y diseñar la sintaxis mysql
Sintaxis:
delete cancion
from cancion
join casadisquera
on cancion.enlacedisquera=casadisquera.codigo
where casadisquera.nombre='EMI';

E. Borrar registros buscando coincidencias en otras tablas
- (delete - Join)
** Teniendo las entidades cancion y casadisquera, busquemos eliminar todas las canciones cuyo código no exista en la tabla casadisquera.

** Realizamos una consulta para verificar que codigos de la tabla ancion no esta en la casadisquera
Analisis:
1. Cual es el nombre de la tabla en la que se van a actualizar los datos y con que informacion
- Tabla: canción y casadisquera
2. Que campos (campos contiene la informacion solicitada) y de que tabla
- Campo: *
- Tabla: cancion
3. Condiciones (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: casadisquera.enlacedisquera=casadisquera.codigo
5. Comando(s)
- select- left - join y diseñar la sintaxis mysql
Sintaxis:
select * from cancion as c
-> left join casadisquera as ca
-> on c.enlacedisquera=ca.codigo
-> where ca.codigo is null;


F. Borrar registros en cascada
- (delete - join)
** Siguiendo con el ejemplo de las tablas anteriores (cancion - casadisquera)
** Se puede borrar las información uno a uno los registros siguiendo condiciones
** Se puede borrar los registros requeridos a través de una sola consulta (cascada)
** Eliminar la informacion de la casadisquera Sony &BMG en cascada
Analisis:
1. Cual es el nombre de la tabla en la que se van a actualizar los datos y con que informacion
- Tabla: canción y casadisquera
2. que campos (campos contiene la informacion solicitada) y de que tabla
- N/A
3. Condiciones (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: casadisquera.enlacedisquera=casadisquera.codigo
5. Comando(s)
- select- left - join- y diseñar la sintaxis mysql
Sintaxis:
delete cancion,casadisquera
from cancion
join casadisquera
on cancion.enlacedisquera=casadisquera.codigo
where casadisquera.nombre='Sony &BMG';
