PRIMER PARCIAL
Descargar el siguiente archivo y realizar el ejercicio propuesto en el, el cual tendra el valor del 50% del primer parcial.
Se debe entregar:
a) Los análisis de cada punto
b) Las sintaxis de cada uno de los comandos utilizados para solucionar cada punto
c) El resultado o información generada en cada punto
d) La bases de datos que de como resultado el desarrollo de la actividad
2. realizarle a través de disparadores la auditoría una de las tablas de la base de datos donde permita almacenar quienes y como administran la base de datos (Insertar, borrar o eliminar registros, Actualizar registros o información)
3. Realice un video donde visualice y sustente los resultados de la entrega (Cada uno se debe ver en el video a través de la cámara).
Organice todos los ejercicios en su sitio web y publique el enlace donde quedó desarrollada a la plataforma.
SOLUCION PARTE 2 PARCIAL
a), b), c) y d)
Análisis 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);

Análisis 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);

Análisis 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';

Análisis 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';

Análisis 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;

Análisis 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;

En este txt está toda la documentación de las cosultas, triggers y auditorías realizadas en la base de datos
Base de datos con las consultas
2) Autidorías y triggers
En esta parte se crearon 3 tablas de más, cada una llamada "pagos_insertados, pagos_modificados, pagos_eliminados"
Creación 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 ;
Creación 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 ;
Creación 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 ;
Pruebas de triggers y auditorías
Para insertar

Para modificar

Para eliminar

Ver la BD con triggers y auditorías
SOLUCION PARTE 3 PARCIAL
Análisis 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;

Análisis 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;

Análisis 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;

Análisis 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;

Análisis 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;

Análisis 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;

Análisis 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;

SOLUCIÓN PARTE 3.1
(con la tabla repazo2)
Análisis 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';

Análisis 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;

Análisis 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;

Análisis 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;

Análisis 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;

Análisis 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%';

Análisis 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;

Análisis 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;

Análisis 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;

Análisis 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';

Análisis 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 con la documentación de la base de datos
Acceder para descargar la base de datos
3)Inventar un ejercicio en el que utilice las 3 formas normales, procedimientos almacenados y Triggers.
Se requiere de una base de datos para mejor la gestión de ventas de una tienda, además, se pide implementar un trigger que optimicen la forma en que cómo se registran los productos vendidos
Archivo excel de la base de datos con las 3FN
Documentación de la base de datos (Incluye evidencia de triggers)