A. Insertar registros con valores de otra tabla (Insert – Select- Join) Se crean las entidades relacinadas 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 qe se van insertar los datos cantidadcasadisquera 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): Insert – Select- Join y diseñar la sintaxis mysql CONSULTA: 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; INSERTAR EN LA TABLA MariaDB [basedatosII]> 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; Query OK, 4 rows affected (0.05 sec) Records: 4 Duplicates: 0 Warnings: 0 MariaDB [basedatosII]> select * from cantidadcasadisquera; +-------------------+----------+ | nombre | cantidad | +-------------------+----------+ | EMI | 2 | | Sony & BMG | 2 | | Universal Studios | 1 | | Warner Music | 1 | +-------------------+----------+ 4 rows in set (0.00 sec) ****************************************************************************************************************************** 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. ****************************************************************************************************************************** MariaDB [basedatosII]> alter table cancion add casadisquera varchar(30); Query OK, 0 rows affected (0.50 sec) Records: 0 Duplicates: 0 Warnings: 0 Vereificar: MariaDB [basedatosII]> select * from cancion; +-----+------------------+-----------------+---------------+----------+--------------+ | cod | titulo | nomautor | idcasa_miusic | precioCD | casadisquera | +-----+------------------+-----------------+---------------+----------+--------------+ | 001 | Las tres rosas | Juan Belardo | 002 | 45000 | NULL | | 002 | Amores que matan | Adolfo Celdran | 002 | 35000 | NULL | | 003 | Pomopeya | Candido Pérez | 001 | 40000 | NULL | | 004 | Porro Sabanero | Candido Pérez | 003 | 70000 | NULL | | 005 | El guayaco | Nubia Costarica | 003 | 40000 | NULL | | 006 | La maraña | Nubia Costarica | 004 | 25000 | NULL | +-----+------------------+-----------------+---------------+----------+--------------+ 6 rows in set (0.00 sec) 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 Taba:cancion Informacion: cancion.casadisquera=casadisquera.nombre 2. que campo(campos conitiene la inforamacion 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 MariaDB [basedatosII]> update cancion join casadisquera on cancion.idcasa_miusic=casadisquera.idcasa_miusic set cancion.casadisquera=casadisquera.nombre; Query OK, 6 rows affected (0.02 sec) Rows matched: 6 Changed: 6 Warnings: 0 MariaDB [basedatosII]> select * from cancion; +-----+------------------+-----------------+---------------+----------+-------------------+ | cod | titulo | nomautor | idcasa_miusic | precioCD | casadisquera | +-----+------------------+-----------------+---------------+----------+-------------------+ | 001 | Las tres rosas | Juan Belardo | 002 | 45000 | Sony & BMG | | 002 | Amores que matan | Adolfo Celdran | 002 | 35000 | Sony & BMG | | 003 | Pomopeya | Candido Pérez | 001 | 40000 | Universal Studios | | 004 | Porro Sabanero | Candido Pérez | 003 | 70000 | EMI | | 005 | El guayaco | Nubia Costarica | 003 | 40000 | EMI | | 006 | La maraña | Nubia Costarica | 004 | 25000 | Warner Music | +-----+------------------+-----------------+---------------+----------+-------------------+ 6 rows in set (0.00 sec) ****************************************************************************************************************************** C. Actualización en cascada (Update – Join) ****************************************************************************************************************************** Restaurar ejercicio 2 MariaDB [basedatosiii]> show tables; +------------------------+ | Tables_in_basedatosiii | +------------------------+ | cancion | | casadisquera | +------------------------+ 2 rows in set (0.00 sec) MariaDB [basedatosiii]> select * from cancion; +--------+------------------+-----------------+----------------+ | codigo | titulo | nomautor | enlacedisquera | +--------+------------------+-----------------+----------------+ | 001 | Las tres rosas | Juan Belardo | 2 | | 002 | Amores que matan | Adolfo Cedran | 2 | | 003 | Pomopeya | Candido Perez | 1 | | 004 | Porro Sabanero | Candido Perez | 15 | | 005 | El Guayaco | Nubia Costarica | 15 | | 006 | La marana | Nubia Costarica | 4 | +--------+------------------+-----------------+----------------+ 6 rows in set (0.00 sec) *********************************************************************** 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 qe se van actualizar los datos y con que información Taba:cancion y casa disquera 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.idcasa_miusic=cancion.codigo 5. Comando(s): Update - Join y diseñar la sintaxis mysql *************************************************************************** MariaDB [basedatosiii]> select * from casadisquera; +--------+-------------------+ | codigo | nombre | +--------+-------------------+ | 001 | Universal Studios | | 002 | Sony & BMG | | 004 | Warner Music | | 015 | EMI | +--------+-------------------+ 4 rows in set (0.00 sec) MariaDB [basedatosiii]> update cancion as n join casadisquera as c on n.enlacedisquera=c.codigo set n.enlacedisquera='16',c.codigo='16' where c.nombre='EMI'; Query OK, 3 rows affected (0.05 sec) Rows matched: 3 Changed: 3 Warnings: 0 MariaDB [basedatosiii]> select * from cancion; +--------+------------------+-----------------+----------------+ | codigo | titulo | nomautor | enlacedisquera | +--------+------------------+-----------------+----------------+ | 001 | Las tres rosas | Juan Belardo | 2 | | 002 | Amores que matan | Adolfo Cedran | 2 | | 003 | Pomopeya | Candido Perez | 1 | | 004 | Porro Sabanero | Candido Perez | 16 | | 005 | El Guayaco | Nubia Costarica | 16 | | 006 | La marana | Nubia Costarica | 4 | +--------+------------------+-----------------+----------------+ 6 rows in set (0.00 sec) MariaDB [basedatosiii]> select * from casadisquera; +--------+-------------------+ | codigo | nombre | +--------+-------------------+ | 001 | Universal Studios | | 002 | Sony & BMG | | 004 | Warner Music | | 16 | EMI | +--------+-------------------+ 4 rows in set (0.01 sec) ****************************************************************************************************************************** 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 qe se van a eliminar los datos Tabla:cancion y casa disquera 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.idcasa_miusic=cancion.codigo 5. Comando(s): Delete- Join y diseñar la sintaxis mysql MariaDB [basedatosiii]> delete cancion from cancion join casadisquera on cancion.enlacedisquera=casadisquera.codigo where casadisquera.nombre='EMI'; Query OK, 2 rows affected (0.05 sec) MariaDB [basedatosiii]> select * from cancion; +--------+------------------+-----------------+----------------+ | codigo | titulo | nomautor | enlacedisquera | +--------+------------------+-----------------+----------------+ | 001 | Las tres rosas | Juan Belardo | 2 | | 002 | Amores que matan | Adolfo Cedran | 2 | | 003 | Pomopeya | Candido Perez | 1 | | 006 | La marana | Nubia Costarica | 4 | +--------+------------------+-----------------+----------------+ 4 rows in set (0.00 sec) MariaDB [basedatosiii]> select * from cancion; +--------+------------------+-----------------+----------------+ | codigo | titulo | nomautor | enlacedisquera | +--------+------------------+-----------------+----------------+ | 001 | Las tres rosas | Juan Belardo | 2 | | 002 | Amores que matan | Adolfo Cedran | 2 | | 003 | Pomopeya | Candido Perez | 1 | | 006 | La marana | Nubia Costarica | 4 | +--------+------------------+-----------------+----------------+ 4 rows in set (0.00 sec) MariaDB [basedatosiii]> source C:\Users\badocente02\Downloads\BDII_clase creciones\ejercicio2.sql Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Database changed Query OK, 0 rows affected (0.09 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.08 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 6 rows affected (0.03 sec) Records: 6 Duplicates: 0 Warnings: 0 Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.04 sec) Query OK, 0 rows affected (0.05 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.07 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 4 rows affected (0.02 sec) Records: 4 Duplicates: 0 Warnings: 0 Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) MariaDB [basedatosiii]> select * from cancion; +--------+------------------+-----------------+----------------+ | codigo | titulo | nomautor | enlacedisquera | +--------+------------------+-----------------+----------------+ | 001 | Las tres rosas | Juan Belardo | 2 | | 002 | Amores que matan | Adolfo Cedran | 2 | | 003 | Pomopeya | Candido Perez | 1 | | 004 | Porro Sabanero | Candido Perez | 15 | | 005 | El Guayaco | Nubia Costarica | 15 | | 006 | La marana | Nubia Costarica | 4 | +--------+------------------+-----------------+----------------+ 6 rows in set (0.00 sec) ************************************************************************************** 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 ***************************************************************************************** MariaDB [basedatosiii]> select * from casadisquera; +--------+-------------------+ | codigo | nombre | +--------+-------------------+ | 001 | Universal Studios | | 002 | Sony & BMG | | 004 | Warner Music | | 015 | EMI | +--------+-------------------+ 4 rows in set (0.00 sec) MariaDB [basedatosiii]> select * from cancion; +--------+------------------+-----------------+----------------+ | codigo | titulo | nomautor | enlacedisquera | +--------+------------------+-----------------+----------------+ | 001 | Las tres rosas | Juan Belardo | 2 | | 002 | Amores que matan | Adolfo Cedran | 2 | | 003 | Pomopeya | Candido Perez | 1 | | 004 | Porro Sabanero | Candido Perez | 15 | | 005 | El Guayaco | Nubia Costarica | 15 | | 006 | La marana | Nubia Costarica | 4 | +--------+------------------+-----------------+----------------+ 6 rows in set (0.00 sec) ************************************************************************ Agregando dos registros en la tabla canción ************************************************************************* MariaDB [basedatosiii]> insert into cancion values('007','Pajarando','Cargamo ODG','9'); Query OK, 1 row affected (0.05 sec) MariaDB [basedatosiii]> insert into cancion values('008','Violeta','SDRT','18'); Query OK, 1 row affected (0.02 sec) MariaDB [basedatosiii]> select * from cancion; +--------+------------------+-----------------+----------------+ | codigo | titulo | nomautor | enlacedisquera | +--------+------------------+-----------------+----------------+ | 001 | Las tres rosas | Juan Belardo | 2 | | 002 | Amores que matan | Adolfo Cedran | 2 | | 003 | Pomopeya | Candido Perez | 1 | | 004 | Porro Sabanero | Candido Perez | 15 | | 005 | El Guayaco | Nubia Costarica | 15 | | 006 | La marana | Nubia Costarica | 4 | | 007 | Pajarando | Cargamo ODG | 9 | | 008 | Violeta | SDRT | 18 | +--------+------------------+-----------------+----------------+ 8 rows in set (0.00 sec) *********************************************************************** 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 MariaDB [basedatosiii]> select c.* from cancion as c left join casadisquera as ca on c.enlacedisquera=ca.codigo where ca.codigo is null; +--------+-----------+-------------+----------------+ | codigo | titulo | nomautor | enlacedisquera | +--------+-----------+-------------+----------------+ | 007 | Pajarando | Cargamo ODG | 9 | | 008 | Violeta | SDRT | 18 | +--------+-----------+-------------+----------------+ 2 rows in set (0.00 sec) ******************************************************************* O en el momento de realizar el left join, eliminamos los registros. Eliminar las canciones que no tienen registro en la casa disquera ******************************************************************* MariaDB [basedatosiii]> delete cancion from cancion left join casadisquera on cancion.enlacedisquera=casadisquera.codigo where casadisquera.codigo is null; Query OK, 2 rows affected (0.03 sec) MariaDB [basedatosiii]> select * from cancion; +--------+------------------+-----------------+----------------+ | codigo | titulo | nomautor | enlacedisquera | +--------+------------------+-----------------+----------------+ | 001 | Las tres rosas | Juan Belardo | 2 | | 002 | Amores que matan | Adolfo Cedran | 2 | | 003 | Pomopeya | Candido Perez | 1 | | 004 | Porro Sabanero | Candido Perez | 15 | | 005 | El Guayaco | Nubia Costarica | 15 | | 006 | La marana | Nubia Costarica | 4 | +--------+------------------+-----------------+----------------+ 6 rows in set (0.00 sec) MariaDB [basedatosiii]> select * from casadisquera; +--------+-------------------+ | codigo | nombre | +--------+-------------------+ | 001 | Universal Studios | | 002 | Sony & BMG | | 004 | Warner Music | | 015 | EMI | +--------+-------------------+ 4 rows in set (0.00 sec) ******************************************************************************* 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 MariaDB [basedatosiii]> delete cancion,casadisquera from cancion join casadisquera on cancion.enlacedisquera=casadisquera.codigo where casadisquera.nombre='Sony & BMG'; Query OK, 3 rows affected (0.02 sec) MariaDB [basedatosiii]> select * from cancion; +--------+----------------+-----------------+----------------+ | codigo | titulo | nomautor | enlacedisquera | +--------+----------------+-----------------+----------------+ | 003 | Pomopeya | Candido Perez | 1 | | 004 | Porro Sabanero | Candido Perez | 15 | | 005 | El Guayaco | Nubia Costarica | 15 | | 006 | La marana | Nubia Costarica | 4 | +--------+----------------+-----------------+----------------+ 4 rows in set (0.00 sec) MariaDB [basedatosiii]> select * from casadisquera; +--------+-------------------+ | codigo | nombre | +--------+-------------------+ | 001 | Universal Studios | | 004 | Warner Music | | 015 | EMI | +--------+-------------------+ 3 rows in set (0.00 sec)