Parcial 1
Primer punto
Solucion Parte 2
Analisis:
1. Qué información se desea mostrar o visualizar
Que articulos fueron adquiridos antes del 6 mes del 2012.
Tabla: Pagos
Condición: Articulos antes del 6 mes del 2012
¿Qué comando se debe utilizar? select *, where, year
sintaxis: select * from pagos where year(fechaadquisicion) < 2012 or (year(fechaadquisicion) = 2012 and month(fechaadquisicion) <6);
2. Qué información se desea mostrar o visualizar
Determinar el articulo que tiene fecha mas antigua de adquisición.
Tabla: Pagos
Condición: Articulos con fecha más antigua de adquisición
¿Qué comando se debe utilizar? select *, where, min
Sintaxis: select * from pagos where fechaadquisicion = (select min(fechaadquisicion) from pagos);
3.Qué información se desea mostrar o visualizar
Seleccionar los articulos que terminan en (o) y (m).
Tabla: Pagos
Condición: Articulos que terminan en (o) y (m)
¿Qué comando se debe utilizar? select *, where, like
Sintaxis: select * from pagos where descripcion like '%o' or descripcion like '%m';
4. Qué información se desea mostrar o visualizar
Listar los productos que tienen al final consonante.
Tabla: Pagos
Condición: Producto que tienen al final consonante
¿Qué comando se debe utilizar? select *, where, like
Sintaxis: select * from pagos where descripcion like '%a' or descripcion like '%e' or descripcion like '%i' or descripcion like '%o' or descripcion like '%u';
5. Qué información se desea mostrar o visualizar
Si las fechas de adquisición es en el primer semestre del año, se darán 5 meses para el pago
Tabla: Pagos
Condición: 5 meses para el pago si la fecha de adquisición fue en el primer semestre del año
¿Qué comando se debe utilizar? select, case, where, between, then, add, else, interval
Sintaxis: select descripcion, fechaadquisicion, Identi,
-case
-when month(fechaadquisicion) between 1 and 6 then date_add(fechaadquisicion, interval 5 month)
-else fechaadquisicion
-end as limite_pago
-from pagos;
6. Qué información se desea mostrar o visualizar
Si las fechas de adquisición es en el segundo semestre del año, se darán 8 meses de plazo
Tabla: Pagos
Condición: 8 meses de plazo si la fecha de adquisición es en el segundo semestre del año
¿Qué comando se debe utilizar? select *, case, where, between, then, add, else, interval
Sintaxis: select *,
-case
-when month(fechaadquisicion) between 7 and 12 then date_add(fechaadquisicion, interval 8 month)
-else fechaadquisicion
-end as limite_pago
-from pagos;
Este txt cuenta la documentación de las cosultas, triggers y auditorías
Autidorías y triggers
Base de datos
2. Autidorías y triggers
pagos_insertados, pagos_modificados, pagos_eliminados"
trigger 1 para insertar pagos
Sintaxis:
delimiter //
create trigger insertar_pagos after insert on pagos
-> for each row
-> begin
-> insert into pagos_insertados(usuario,fecha,id_pago,descripcion,fechaadquisicion) values (CURRENT_USER(), NOW(), NEW.Identi, NEW.descripcion, NEW.fechaadquisicion);
-> end
-> //
delimiter ;
trigger 2 para modificar pagos
Sintaxis:
delimiter //
create trigger modificar_pagos after update on pagos
-> for each row
-> begin
-> insert into pagos_modificados (usuario,fecha, id_pago, ant_descripcion, nueva_descripcion, fechaadquisicion_ant, fechaadquisicion_nueva) values (current_user(),now(), old.Identi, old.descripcion, new.descripcion, old.fechaadquisicion, new.fechaadquisicion);
-> end
-> //
delimiter ;
trigger 3 para eliminar pagos
Sintaxis:
delimiter //
create trigger eliminar_pagos after delete on pagos
-> for each row
-> begin
-> insert into pagos_eliminados (usuario,fecha,id_pago,descripcion,fechaadquisicion) values(current_user(), now(), old.Identi, old.descripcion, old.fechaadquisicion);
-> end
-> //
delimiter ;
Solucion Parte 3: a,b,c,d
1. Qué información se desea mostrar o visualizar
Total de estudiantes nacidos en los años 70.
Tabla: estudiante
Condición: Estudiantes nacidos en los años 70
¿Qué comando se debe utilizar? select count(*), where, year, between
sintaxis: select count(*) as 'TOTAL ESTUDIANTES' from estudiante where year(fechanacimiento) between 1970 and 1979;
2.Qué información se desea mostrar o visualizar
Consultar a los estudiantes que tienen entre 16 y 20 años.
Tabla: estudiante
Condición: Estudiantes entre 16 y 20 años
¿Qué comando se debe utilizar? select, where, year, curdate, between
sintaxis: select nombre, (year(curdate()) - year(fechanacimiento)) as 'EDAD' from estudiante where (year(curdate()) - year(fechanacimiento)) between 16 and 20;
3. Qué información se desea mostrar o visualizar
Consultar los nombres de los estudiantes que son mayores de 25 años.
Tabla: estudiante
Condición: Estudiantes mayores de 25 años
¿Qué comando se debe utilizar? select, where, year, curdate
sintaxis: select nombre as 'NOMBRES' from estudiante where (year(curdate()) - year(fechanacimiento)) > 25;
4. Qué información se desea mostrar o visualizar
Calcular la edad de cada estudiante.
Tabla: estudiante
Condición: Edad de cada estudiante
¿Qué comando se debe utilizar? select, year, curdate
sintaxis: select nombre as 'NOMBRE', fechanacimiento as 'FECHA NACIMIENTO', (year(curdate()) - year(fechanacimiento)) as 'EDAD' from estudiante;
5. Qué información se desea mostrar o visualizar
Consultar las materias que tienen precio mayor a 300000 y sacar un mensaje que diga si pasa de 300000 cara de lo contrario económica.
Tabla: materia
Condición: Materias que tienen precio mayor a 300.000
¿Qué comando se debe utilizar? select, case, when, else
sintaxis: select descripcion, valor,
-> case
-> when valor > 300000 then 'Cara'
-> else 'Economica'
-> end as categoria
-> from materia;
6. Qué información se desea mostrar o visualizar
Agregar el campo edad a la tabla estudiante, insertar las edades respectivas y si el estudiante pasa de 30 años sacar un mensaje que diga hombre mayor, de lo contrario joven en desarrollo.
Tabla: estudiante
Condición: Agregar campo edad, actualizarlo y clasificar
¿Qué comando se debe utilizar? alter, add, update, set, year, curdate, case, when, else, then
sintaxis para agregar el campo: alter table estudiante add column edad int;
sintaxis para actualizarlo: update estudiante set edad = (year(curdate()) - year(fechanacimiento));
sintaxis para clasificarlo: select nombre, edad,
-> case
-> when edad > 30 then 'Hombre mayor'
-> else 'Joven en desarrollo'
-> end as categoria
-> from estudiante;
7. Qué información se desea mostrar o visualizar
Consultar las materias que tienen precio mayor a 200000 y menor igual a 300000, y sacar un mensaje que diga materia económica si esta entre 200000 y 300000 de lo contrario cara.
Tabla: materia
Condición: Materias con precio mayor a 200.000 y menor igual a 300.000
¿Qué comando se debe utilizar? select, case, when, between, then, else
sintaxis: select descripcion, valor,
-> case
-> when valor between 200000 and 300000 then 'Materia econ mica'
-> else 'cara'
-> end as materias
-> from materia;
//////////////////////////////##########################################################
Repazo 2
1. Qué información se desea mostrar o visualizar
cuantas mujeres tiene su nombre terminado en z
Tabla: repazo2
Condición: Nombres de mujeres terminados en Z
¿Qué comando se debe utilizar? select count(*), where, like
sintaxis para agregar el campo: select count(*) as 'TOTAL MUJERES' from repazo2 where sexo="mujer" and nombre like '%z';
2. Qué información se desea mostrar o visualizar
total de personas nacidas en los años 70's
Tabla: repazo2
Condición: Personas nacidas en los años 70's
¿Qué comando se debe utilizar? select count(*), where, year, between
sintaxis para agregar el campo: select count(*) as 'TOTAL PERSONAS' from repazo2 where year(fechanacimiento) between 1970 and 1979;
3. Qué información se desea mostrar o visualizar
listar las personas con edad entre 25 y 30 años
Tabla: repazo2
Condición: Personas entre 25 y 30 años
¿Qué comando se debe utilizar? select *, where, year, curdate, between
sintaxis para agregar el campo: select* from repazo2 where year(curdate()) - year(fechanacimiento) between 25 and 30;
4. Qué información se desea mostrar o visualizar
cuantos hijos existen en el total de datos
Tabla: repazo2
Condición: Total de hijos
¿Qué comando se debe utilizar? select, sum
sintaxis para agregar el campo: select sum(nrohijos) as 'TOTAL HIJOS' from repazo2;
5. Qué información se desea mostrar o visualizar
agrupar por numero de hijos
Tabla: repazo2
Condición: Numero de hijos
¿Qué comando se debe utilizar? select, count(*), group by
sintaxis para agregar el campo: select nrohijos, count(*) as 'TOTAL' from repazo2 group by nrohijos;
6. Qué información se desea mostrar o visualizar
cuantas personas tiene el nombre carlos
Tabla: repazo2
Condición: Personas con el nombre Carlos
¿Qué comando se debe utilizar? select, count(*), like, where
sintaxis para agregar el campo: select count(*) as 'NUMERO PERSONAS' from repazo2 where nombre like 'carlos%';
7. Qué información se desea mostrar o visualizar
total de mujeres menores o = de 22 años
Tabla: repazo2
Condición: Mujeres con edad menor o igual a 22 años
¿Qué comando se debe utilizar? select, count(*), where, year, between
sintaxis para agregar el campo: select count(*)from repazo2 where (year(curdate()) - year(fechanacimiento)) between 0 and 22;
8. Qué información se desea mostrar o visualizar
total de hombre mayores de 30 años que tengan mas de 1 hijo
Tabla: repazo2
Condición: Hombres mayores a 30 años con más de 1 hijo
¿Qué comando se debe utilizar? select, count(*), where, timestampdiff, year, curdate
sintaxis para agregar el campo: select count(*) as 'TOTAL HOMBRES' from repazo2 where sexo='hombre' and timestampdiff(year, fechanacimiento, curdate()) > 30 and nrohijos >1;
9. Qué información se desea mostrar o visualizar
cuantas mujeres mayores de 25 años edad tiene entre 1 y 3 hijos
Tabla: repazo2
Condición: Mujeres mayores a 25 años entre 1 y 3 hijos
¿Qué comando se debe utilizar? select, count(*), where, timestampdiff, year, curdate, between
sintaxis para agregar el campo: select count(*) as 'TOTAL MUJERES' from repazo2 where sexo='mujer' and timestampdiff(year,fechanacimiento, curdate()) >25 and nrohijos between 1 and 3;
10. Qué información se desea mostrar o visualizar
mostrar la fecha del sistema.
Tabla: null
Condición: Fecha del sistema
¿Qué comando se debe utilizar? select, curdate
sintaxis para agregar el campo: select curdate() as 'FECHA SISTEMA';
11. Qué información se desea mostrar o visualizar
Visualizar la hora actual del sistema
Tabla: null
Condición: Hora del sistema
¿Qué comando se debe utilizar? select, curtime
sintaxis para agregar el campo: select curtime() as 'HORA ACTUAL';
Archivo txt
Segunto punto
3)Inventar un ejercicio en el que utilice las 3 formas normales, procedimientos almacenados y Triggers.
Eres el encargado del desarrollo de un sistema de gestión de reservas para un hotel. Se requiere modelar la base de datos aplicando las tres formas normales (1FN, 2FN y 3FN), además de implementar procedimientos almacenados y triggers para automatizar ciertas tareas.

