Sie sind auf Seite 1von 5

Final

ANDERSON GRISALES VARGAS


sergio oquendo
restaurar el archivo sqlno
este contiene 3 tablas
universidad
programa
materia
Explicacion
el codigo
5
4
8
4

materia de la tabla materia esta conformada por


cifras correspondientes al programa
cifras correspondientes a la universidad
cifras correspondientes a dia-mes-ao de la fecha matricula
cifras correspondientes a consecutivo interno

Realizar
- fecha matricula
: actualizar la fecha de matricul en formato de fecha, ao
-mes-dia ,y restele 10 dias.segun los datos del codmateria
- update materia set fechamatricula = date_sub((concat_ws("-",substr(codmater
ia,14,4),substr(codmateria,12,2),substr(codmateria,10,2))), INTERVAL 10 DAY);
- dias publicacion
: actualizar a este campo los dias que han transcurrido
desde que se realizo la matricula de la materia y adicionele 10 dias.
- update materia set diasmatricula= DATEDIFF(now(),fechamatricula)+10;
- proximamatricula
: calcular la fecha de la siguiente matricula de la mate
ria teniendo en cuenta que se realiza adicionandole 180 dias desde la fecha de m
atricula.
- update materia set proximamatricula = date_add(fechamatricula, INTERVAL 180
DAY);
- codigointerno
: se tienen para el control interno un codigo conformado
por los 3 ultimas cifras del programa, las 4 cifras de la universidad y los 3 u
ltimos digitos del consecutivo interno.
- update materia set codigointerno= concat(substr(codmateria,3,3),substr(cod
materia,6,4),substr(codmateria,19,10));

1.Actualizar el campo nivel


Si el ao de la matricula
Si el ao de la matricula
es Medio.
Si el ao de la matricula

de la tabla materia de la siguiente manera:


es superior o igual a 2003, el nivel es Alto.
es superior o igual a 1995 e inferior a 2003, el nivel
es inferior a 1995, el nivel es Bajo.

- update materia set nivel = case when year(fechamatricula)>=2003 then 'Alto


' when year(fechamatricula) between 1995 and 2003 then 'Medio' when year(fechama
tricula)<1995 then 'Bajo' end;
2. crear una procedimiento almacedado "tiempo" que muestre la cantidad de aos des
de que se matriculo una materia
Delimiter //
Create procedure tiempo(in _codmateria char(21))
Begin
select timestampdiff(year,fechamatricula,curdate()) as 'tiempo en aos desde
que se matriculo la materia',codmateria from materia where codmateria=_codmater
ia;
End
//
Delimiter ;
3. Crear una vista "antiguedad" que muestre la universidad que tiene la fecha de
matricula mas antigua.
- create view antiguedad as select substr(codmateria,6,4) as 'Codigo universi
dad',universidad.nombre,min(fechamatricula) as 'Fecha mas antigua' from materia,
universidad where universidad.cod_universidad=substr(codmateria,6,4);
4. Crear una vista programas
res en su nombre.

que muestre los programas que tienen 5,10 o 15 caracte

- select programa.nombre,character_length(nombre) as 'Numero de caracteres de


l nombre' from programa where character_length(nombre)=5 or character_length(nom
bre)=10 or character_length(nombre)=15;
5. Crear un procedimiento "programa_nomatriculados" que muestre las programas qu
e no han sido matriculados.
Delimiter //
Create procedure programa_nomatriculados()
Begin
select programa.nombre from programa where programa.cod_programa not in(s
elect substr(codmateria,1,5) from materia);
End
//
Delimiter ;
6. crear un procedimiento llamado listar_universidad, que muestre cuantos materi
as hay por universidad
Delimiter //
create procedure listar_universidad()
begin
select universidad.nombre,count(codmateria) as 'Numero de materias por un
iversidad' from materia inner join universidad on substr(codmateria,6,4)=univers
idad.cod_universidad group by universidad.nombre;
end
//
Delimiter ;
7. crear un procedimiento llamado listar_programa, que muestre cuantos materias
hay por programa
Delimiter //

create procedure listar_programa()


begin
select programa.nombre,count(codmateria) as 'Numero de materias por progr
ama' from materia inner join programa on substr(codmateria,1,5)=programa.cod_pro
grama group by programa.nombre;
end
//
Delimiter ;
8. crear un procedimiento llamado listar_toalprograma, que muestre cuantos prog
ramas hay por universidad
Delimiter //
create procedure listar_toalprograma()
begin
select universidad.nombre,count(codmateria) as 'Numero de programas por u
niversidad' from materia inner join programa on substr(codmateria,1,5)=programa.
cod_programa inner join universidad on substr(codmateria,6,4)=universidad.cod_un
iversidad group by universidad.nombre;
end
//
Delimiter ;
9. crear un procedimiento llamado listar_fecha, que muestre cuantos materias hay
por mes de matricula
Delimiter //
create procedure listar_fecha()
begin
select date_format(fechamatricula, "%M"),count(codmateria) as 'Numero de
materias por mes de matricula' from materia where date_format(fechamatricula, "%
m") group by MONTH(fechamatricula);
end
//
Delimiter ;
10.Crear un trigger para la tabla materia al momento de insertar permita calcul
ar el total de matriculas que tiene el programa y guardarlo en el campo corresp
ondiente.
Delimiter //
Create trigger total_matriculas_programa after insert on materia for each
row
Begin
update programa set matriculas= (select count(codmateria) from materia wh
ere substr(codmateria,1,5)=programa.cod_programa group by programa.nombre);
End
//
Delimiter ;
11. ingrese 3 registros en la tabla materia teniendo encuentas las consideracion
es del codigo de la materia en su composicion.
- insert into materia (codmateria) values (174891057080319950004);
- insert into materia (codmateria) values (389371134080319950002);
- insert into materia (codmateria) values (774811742080319940001);
Se Realizan los puntos anteriores para llenar la tabla materia con los correpond
ientes datos:

fecha matricula:
- update materia set fechamatricula = date_sub((concat_ws("-",substr(codmat
eria,14,4),substr(codmateria,12,2),substr(codmateria,10,2))), INTERVAL 10 DAY);
dias publicacion:
- update materia set diasmatricula= DATEDIFF(now(),fechamatricula)+10;
proximamatricula:
- update materia set proximamatricula = date_add(fechamatricula, INTERVAL 1
80 DAY);
codigointerno:
- update materia set codigointerno= concat(substr(codmateria,3,3),substr(co
dmateria,6,4),substr(codmateria,19,10));
Punto 1:
- update materia set nivel = case when year(fechamatricula)>=2003 then 'Alt
o' when year(fechamatricula) between 1995 and 2003 then 'Medio' when year(fecham
atricula)<1995 then 'Bajo' end;
12.crear 3 usuarios llamados , tutor,decano y alumno.
El usuaro alumno solo tendra permiso para leer en las tablas uiversidad y prog
rama
-

create user alumno@localhost;


grant select on final.universidad to alumno@localhost;
grant select on final.programa to alumno@localhost;
Flush privileges;

El usuario tutor tendra permio de lectora en toda la base de datos y escritura


en la tabla materia.
-

create user tutor@localhost;


grant select on final.* to tutor@localhost;
grant insert on final.materia to tutor@localhost;
Flush privileges;

El usuario decano tendra todos los permisos en la base dedatos menos el de eli
minar.
(como no especifica que con grant option, no se lo pongo)
- create user decano@localhost;
- grant select,insert,update on final.* to decano@localhost;
- Flush privileges;
ANDERSON GRISALES VARGAS
sergio oquendo
Entregar
Instrucciones con las que se realizo el parcial.

Backup de la base de datos.


NOta: Las instrucciones que se utilizan debe estar referenciadas con cada uno de
los puntos, solo se deben copiar la intruccion utilizada y no los errores.

Das könnte Ihnen auch gefallen