Actividad 6
Diapositivas con la explicación
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)
Base de datos utilizada:
https://drive.google.com/file/d/1cTK3BqQ2yQ8Ib4Z9Wu9EmXMXTdSUNplM/view?usp=sharing
------------------------------------------------
A.Insertar registros con valores de otra tabla (Insert-Select-Join)
Se crea la entidad relacional: canción, casadisquera
Se crea una tercera entidad para insertar los registros con los valores de una de la entidades anteriores: cantidadcasdisquera
Se ingresan los 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 casadisquera con la cantidaddecanciones
Análisis
*Cual es el nombre de la tabla en la que se van a insertar los datos:
Cantidadcasadisquera
*Que campo(campos contienen la información solicitada) y de que tabla:
Campo:Nombre
Tabla: casadisquera
* Condiciones:
N/A
*Que tablas están involucradas en la consulta y como se relacionan:
tablas: Canción y casadisquera
Relación :casadisquera.idcasa_miusic=cancion.idcasa_miusic
* Comando:
Insert-Select-Join
Sintaxis:
select c.nombre, count(co.idcasa_miusic) from casadisquera as c left join cancion as co on c.idcasa_miusic=co.idcasa_miusic group by c.nombre;
Para insertar
insert into cantidadcasadisquera select c.nombre, count(co.idcasa_miusic) 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 la entidades canción y casadisquera
1.Se pretende alterar la tabla canción para que almacene el nombre de la casa disquera y eliminar la entidad casadisquera
2. Agregar un campo llamado casadisquera en la entidad canción
Alter table cancion add casadisquera varchar(10);
3. Actualizar los valores para este campo creado en la entidad cancion(casadisquera)
*Se puede actualizar uno a uno de los registros
*Realizando la actualización con un Join
Análisis
*Cual es el nombre de la tabla en la que se van a actualizar los datos y con que información:
Tabla: Canción
Información: cancion.casadisquera = casadisquera.nombre
*Que campo(campos contienen la información solicitada) y de que tabla:
Campo:Nombre
Tabla: Casadisquera
* Condiciones:
N/A
*Que tablas están involucradas en la consulta y como se relacionan:
tablas: Canción y casadisquera
Relación :casadisquera.idcasa_miusic=cancion.idcasa_miusic
*Comando:
Update-Join
*Sintaxis
Update cancion join casadisquera on cancion.idcasa_miusic=cancion.idcasa_miusic set cancion.casadisquera=casadisquera.nombre;
Actualización en cascada (Update-Join)
Base datos Utilizada:
https://drive.google.com/drive/folders/1yDEI3JTXqRhgT5MeAbqIsY17gWEMKA20?usp=sharing
Actualizar el código de la casa disquera por 16
Análisis
*Cual es el nombre de la tabla en la que se van a actualizar los datos y con que información:
Tabla: Canción y casadisquera
Información= casadisquera.enlacedisquera ='16',cancion.codigo='16'
*Que campo(campos contienen la información solicitada) y de que tabla:
Campo: N/A
Tabla: N/A
* Condiciones:
casadisquera.nombre='EMI'
*Que tablas están involucradas en la consulta y como se relacionan:
tablas: Canción y casadisquera
Relación :casadisquera.idcasa_miusic=cancion.codigo
*Comando:
Update-Join
*Sintaxis
Update cancion join casadisquera on cancion.idcasa_miusic=cancion.idcasa_miusic set cancion.casadisquera=casadisquera.nombre;
*Comando
update cancion as n join casadisquera as c on n.enlacedisquera =c.codigo set n.enlacedisquera ='16',c.codigo='16' whre c.nombre='EMI';
Borrar registros consultando otras tablas (Delete-Join)
Se puede hacer de dos formas:
* Borrar los registros direccionando el código
* Realizar todo en un solo Paso
Ejemplo
Borrar las canciones de la casa disquera 'EMI'
Análisis
*Cual es el nombre de la tabla en la que se van a actualizar los datos y con que información:
Tabla: Canción
*Que campo(campos contienen la información solicitada) y de que tabla:
Campo: N/A
Tabla: N/A
* Condiciones:
casadisquera.nombre='EMI'
*Que tablas están involucradas en la consulta y como se relacionan:
tablas: Canción y casadisquera
Relación :casadisquera.idcasa_miusic=cancion.codigo
*Comando:
Delete-Join
*Sintaxis
delete cancion from cancion join casadisquera on cancion.enlacedisquera=casadisquera.codigo where casadisquera.nombre='EMI';
*Comando
delete cancion from cancion join casadisquera on cancion.enlacedisquera=casadisquera.codigo where casadisquera.nombre='EMI';
Nota: Se restaura de nuevo la base de datos 2
Borrar Registros Buscando Coincidencias en otras Tablas (Delete-Join)
Teniendo las entidades cancion y casadisquera
Ejemplo
Busquemos eliminar todas las canciones cuyo código no exista en la tabla casadisquera
Realizamos una consulta para verificar que códigos de la tabla cancion no están en casadisquera
Análisis
*Cual es el nombre de la tabla en la que se van a actualizar los datos y con que información:
Tabla: Canción y casadisquera
*Que campo(campos contienen la información solicitada) y de que tabla:
Campo: *
Tabla: Canción
* Condiciones:
casadisquera.codigo is null
*Que tablas están involucradas en la consulta y como se relacionan:
tablas: Canción y casadisquera
Relación :cancion.enlacedisquera=casadisquera.codigo
*Comando:
Select-Left Join
Consulta:
select c.*from cancion as c left join casadisquera as ca on c.enlacedisquera=ca.codigo where ca.codigo is null;
Eliminar
delete cancion from cancion left join casadisquera on cancion.enlacedisquera=casadisquera.codigo where casadisquera.codigo is null;
Borrar Registros en Cascada (Delete- Join)
Se puede borrar la información uno a uno de os registros siguiendo condiciones
Se puede borrar los registros requeridos a través de una sola consulta(cascada)
Ejemplo
Eliminar la información de la casa disquera Sony & BMG en cascada
Análisis
*Cual es el nombre de la tabla en la que se van a actualizar los datos y con que información:
Tabla: Canción y casadisquera
*Que campo(campos contienen la información solicitada) y de que tabla:
Campo: N/A
* Condiciones:
casadisquera.nombre='sony&BMG'
*Que tablas están involucradas en la consulta y como se relacionan:
tablas: Canción y casadisquera
Relación :cancion.enlacedisquera=casadisquera.codigo
*Comando:
Select-Left Join
Eliminar
delete cancion,casadisquera from cancion join casadisquera on cancion.enlacedisquera=casadisquera.codigo where casadisquera.nombre='Sony & BMG';