PROCESOS EN CASCADA
a. Insertar registros con valores de otra tabla
Ejemplo: Insertar en la entidad cantidadcasadisquera los nombres de la casa disquera con la cantidad de canciones.
Análisis:
1. ¿Cuál es el nombre de la tabla en la que se van a insertar los datos?
El nombre de la tabla en la que se van a insertar los datos es cantidadcasadisquera.
2. ¿De cuál tabla y campo se va a extraer la información solicitada?
Se va a extraer la información de la tabla casadisquera y del campo nombre.
3. ¿Cuáles son las condiciones?
No aplican condiciones.
4. ¿Cuáles tablas están involucradas en la consulta y cómo se relacionan?
Las tablas involucradas son cancion y casadisquera y la relación es casadisquera.idcasa_miusic = cancion.idcasa_miusic.
5. ¿Qué comandos se van a utilizar?
Se van a utilizar los comandos insert, select, join y count.
6. ¿Cuál es la sintaxis a utilizar?
Para la 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;
Para insertar en la tabla:
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 otras tablas.
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.
3. Realizar la actualización con join.
Análisis:
1. ¿Cuál es el nombre de la tabla en la que se van a actualizar los datos y con cuál información?
El nombre de la tabla en la que se van a actualizar los datos es cancion y la información es cancion.casadisquera = casadisquera.nombre.
2. ¿De cuál tabla y campo se va a extraer la información solicitada?
Se va a extraer la información de la tabla casadisquera y del campo nombre.
3. ¿Cuáles son las condiciones?
No aplican condiciones.
4. ¿Cuáles tablas están involucradas en la consulta y cómo se relacionan?
Las tablas involucradas son cancion y casadisquera y la relación es casadisquera.idcasa_miusic = cancion.idcasa_miusic.
5. ¿Qué comandos se van a utilizar?
Se van a utilizar los comandos update y join.
6. ¿Cuál es la sintaxis a utilizar?
update cancion
join casadisquera
on cancion.idcasa_miusic = casadisquera.idcasa_miusic
set cancion.casadisquera = casadisquera.nombre;
c. Actulización en cascada.
1. Actualizar el código de la casa EMI por '16'.
Análisis:
1. ¿Cuál es el nombre de las tablas en la que se van a actualizar los datos y con cuál información?
El nombre de las tablas en la que se van a actualizar es cancion y casadisquera con la información casadisquera.enlacedisquera = '16', cancion.codigo = '16'.
2. ¿De cuál tabla y campo se va a extraer la información solicitada?
No aplican tablas ni campos.
3. ¿Cuáles son las condiciones?
La condicion es que casadisquea.nombre = 'EMI'.
4. ¿Cuáles tablas están involucradas en la consulta y cómo se relacionan?
Las tablas involucradas son cancion y casadisquera y la relación es casadisquera.idcasa_miusic = cancion.codigo
5. ¿Qué comandos se van a utilizar?
Se van a utilizar los comandos update y join.
6. ¿Cuál es la sintaxis a utilizar?
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 en otras tablas.
Análisis:
1. ¿Cuál es el nombre de las tablas en la que se van a eliminar los datos?
El nombre de las tablas en la que se van a eliminar los datos es cancion y casadisquera.
2. ¿De cuál tabla y campo se va a extraer la información solicitada?
No aplican tablas ni campos.
3. ¿Cuáles son las condiciones?
La condicion es que casadisquea.nombre = 'EMI'.
4. ¿Cuáles tablas están involucradas en la consulta y cómo se relacionan?
Las tablas involucradas son cancion y casadisquera y la relación es casadisquera.idcasa_miusic = cancion.codigo.
5. ¿Qué comandos se van a utilizar?
Se van a utilizar los comandos delete y join.
6. ¿Cuál es la sintaxis a utilizar?
delete cancion
from cancion
join casadisquera
on cancion.enlacedisquera = casadisquera.codigo
where casadisquera.nombre = 'EMI';
e. Borrar registros buscando coincidencias otras tablas.
1. Teniendo las entidades cancion y casadisquera, busquemos eliminar todas las canciones cuyo código no exista en la tabla casadisquera.
Análisis:
1. ¿Cuáles son las tablas que están involucradas?
Las tablas involucradas son cancion y casadisquera.
2. ¿De cuál tabla y campo se va a extraer la información solicitada?
La información se va a extraer de la tabla cancion con todos sus campos.
3. ¿Cuáles son las condiciones?
La condicion es que casadisquera.codigo is null;
4. ¿Cuáles tablas están involucradas en la consulta y cómo se relacionan?
Las tablas involucradas son cancion y casadisquera y la relación es cancion.enlacedisquera = casadisquera.codigo
5. ¿Qué comandos se van a utilizar?
Se van a utilizar los comandos select y left join.
6. ¿Cuál es la sintaxis a utilizar?
Para la consulta:
select c.* from cancion as c
left join casadisquera as ca
on c.enlacedisquera = ca.codigo
where ca.codigo is null;
Para eliminar:
delete cancion from cancion
left join casadisquera
on cancion.enlacedisquera = casadisquera.codigo
where casadisquera.codigo is null;
f. Borrar registros en cascada.
1. Eliminar la información de la casa disquera Sony & BMG en cascada.
Análisis:
1. ¿Cuáles son las tablas involucradas?
Las tablas involucradas son cancion y casadisquera.
2. ¿De cuál tabla y campo se va a extraer la información solicitada?
No aplican tablas ni campos.
3. ¿Cuáles son las condiciones?
La condicion es que casadisquea.nombre = 'Sony & BMG'.
4. ¿Cuáles tablas están involucradas en la consulta y cómo se relacionan?
Las tablas involucradas son cancion y casadisquera y la relación es cancion.enlacedisquera = casadisquera.codigo.
5. ¿Qué comandos se van a utilizar?
Se van a utilizar los comandos delete, select y left join.
6. ¿Cuál es la sintaxis a utilizar?
delete cancion, casadisquera
from cancion
join casadisquera
on cancion.enlacedisquera = casadisquera.codigo
where casadisquera.nombre = 'Sony & BMG';