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.

¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar