You are on page 1of 11

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE CMPUTO

SUBDIRECCIN ACADMICA
DEPARTAMENTO DE INGENIERA EN SISTEMAS COMPUTACIONALES
ACADEMIA DE BASES DE DATOS
UNIDAD DE APRENDIZAJE: BASES DE DATOS
Prof. Dra. Fabiola Ocampo Botello

Semestre Escolar Marzo-Julio 2015


Grupos: 2CM3 y 2CM6
IMPORTANTE: Insertar en cada uno de los ejercicios resueltos y propuestos de su
prctica la pantalla de salida.
Figura 1. Modelo relacional de la base de datos.

Prctica No. 2. Funciones para el manejo de fechas

y creacin de vistas

1. Crear la base de datos mostrada en la figura 1, con el nombre

AgendaTel.

Cuidando aspectos de integridad referencial.

Pgina 1
de 6

2. Importar los datos del archivo RegAmigoPrac2.txt en la tabla

AMIGOS.

LOAD DATA LOCAL INFILE 'd:\\RegAmigoPrac2.txt' INTO TABLE Amigo FIELDS


TERMINATED BY ',' LINES TERMINATED BY '\n';
LOAD DATA LOCAL INFILE 'd:\\RegTelsPrac2.txt' INTO TABLE Amigo FIELDS
TERMINATED BY ',' LINES TERMINATED BY '\n';

3. Funciones para el manejo de fechas.


a) Para visualizar la fecha y la hora registrada en el
sistema.
SELECT now();
b) Visualizar la fecha registrada en el sistema.
SELECT current_date();
SELECT curdate();
c) Para ver el ao de esta fecha.
SELECT YEAR (CURDATEQ);
SELECT YEAR (current_date());
d) Para ver el mes de esta fecha.
SELECT MONTH(CURDATE());
SELECT MONTH(current_date());
e) Para ver el da de esta fecha.
SELECT DAY(curdate());
SELECT DAY(current_date());

Pgina 2
de 6

f) Conocer la edad de los amigos registrados.


SELECT NomPila, FechaNac, CURDATE(),
(YEAR(CURDATE())-YEAR(FechaNac))
- (MONTH(CURDATE()) < MONTH(FechaNac))
AS Edad
FROM Amigo ORDER BY Edad;

NOTA: Para conocer la edad en aos que tiene una persona, hay que calcular la
diferencia entre el ao de la fecha actual y el de la fecha de nacimiento. Despus
restar un 1 al resultado si el da y mes actuales son anteriores al da y mes
indicados por la fecha de nacimiento. La comparacin de funciones de fechas
devuelve 1 0. La expresin completa es extensa y un tanto confusa para usar
como encabezado de columna, por lo que se emplea un alias (Edad) para que el
encabezado sea ms comprensible.
g) Seleccionar los amigos que cumplen en diciembre.
SELECT NomPila, FechaNac, CURDATE()
FROM Amigo
WHERE MONTH(FechaNac) = 12;
h) Los amigos que cumplen el mes siguiente al registrado en el sistema.
SELECT NomPila, FechaNac, CURDATE()
FROM Amigo
WHERE MONTH(FechaNac) = (SELECT IF ( (MONTH(CURDATE()) = 12), 1,
(MONTH(CURDATE())+ 1)));

Pgina 3
de 6

i) Los

amigos que no cumplen en diciembre.


SELECT NomPila, FechaNac, CURDATE()
FROM Amigo
WHERE MONTH(FechaNac) != 12;
j) El nombre de los amigos que nacieron en un da domingo.
SELECT NomPila, FechaNac
FROM Amigo
WHERE DayOfWeek(FechaNac) = 1;
NOTA: DayOfWeek(fecha) regresa 1-Domingo, 2-Lunes, 3-Martes, ...
k) Los amigos que ya cumplieron aos.
SELECT NomPila, FechaNac
FROM Amigo
WHERE DAYOFYEAR(FechaNac) < DAYOFYEAR(CurDate());
l) El nmero de das que han vivido los amigos registrados.
SELECT NomPila, FechaNac, DATEDIFF(CURDATE(), FechaNac) AS
DiasVividos FROM Amigo ORDER BY DiasVividos;
m) La fecha de nacimiento en formato largo.
SELECT NomPila, DATE_FORMAT (FechaNac, '%W %M %Y')
FROM Amigo;

Pgina 4
de 6

4.

para
de
Una
ser
de

de
de
que

Funciones
la
creacin
vistas.
vista puede
un
subconjunto
la base de
datos
o
puede
contener
datos
virtuales
derivados
los archivos
la base de
datos pero
no
estn

explcitamente almacenados (Elmasry y Navathe, 2007:12).


En MySQL las tablas y las vistas de una base de datos comparten el mismo
espacio de nombres, por lo que toda vista pertenece a una base de datos, por tal
razn en una base de datos no debe haber una tabla y una vista con el mismo
nombre ni deben existir nombres de columnas duplicados. Para la creacin,
borrado o modificacin de una vista se deben tener los privilegios
correspondientes.
Se puede utilizar la sentencia SELECT para definir y alimentar una vista con los
resultados de una consulta.
Al momento de crear una vista en una base de datos especfica debe indicar la
base de
datos en la que la est creando.
base_de_datos.nombre_vista.
Una vista puede hacer referencia a tablas o vistas en otras bases de datos
precediendo el nombre de la tabla o vista con el nombre de la base de datos
correspondiente.
n) Crear una vista con las edades de los amigos.

Pgina 5
de 6

CREATE VIEW
agendatel.mivista AS SELECT
Cve, ApPat, ApMat, NomPila,
(YEAR(CURDATE())YEAR(FechaNac))
- (MONTH(CURDATE()) <
MONTH(FechaNac)) AS Edad
FROM Amigo;
SHOW TABLES;
DESCRIBE mivista;
SELECT * FROM mivista;

Pgina 6
de 6

o) Insertar en la tabla Amigo el siguiente registro:


1000, 'Cortes', 'Duarte', 'Jose Luis', 'Av. Del Pozo No. 17', '1994/11/11'
Pregunta 1. Escriba la sentencia Correspondiente:
INSERT INTO Amigo VALUES (1000, 'Cortes', 'Duarte', 'Jose Luis',
'Av. Del Pozo No. 17', '1994/11/11');
Pregunta 2. Describa lo que sucede en la vista mivista.
La minivista es creada con los campos de los cuales se quiere tener
conocimiento de manera que la terminal slo mostrar los datos
que son ingresados para la vista.
p) Crear la siguiente vista.
CREATE VIEW agendatelefono.VistaTels AS SELECT Amigo.Cve,
ApPat, ApMat, NomPila, Tel FROM Amigo, Telefono WHERE
Amigo.Cve = Telefono.Cve;

Pgina 7
de 6

Pregunta 3. Describa lo que almacena la vista VistaTels.


La vista creada muestra los patrones seleccionados
de manera que el la clave del Amigo sea la misma
que la clave del telfono.
q) Encontrar a los amigos mayores de edad.
SELECT Cve, ApPat, ApMat, NomPila, Edad FROM mivista
WHERE Edad >= 18;

r)

para
la
que se cre una vista.
SHOW CREATE VIEW mivista;

Sentencia
visualizar
forma
en

Pgina 8
de 6

s) Suponga que desea alterar la estructura de una


vista ALTER VIEW agendatel.mivista AS
SELECT Dir, Cve, ApPat, ApMat, NomPila, (YEAR(CURDATE())YEAR(FechaNac))
- (MONTH(CURDATE()) < MONTH(FechaNac)) AS Edad FROM
Amigo;
SHOW TABLES;
DESCRIBE mivista;
SELECT * FROM mivista;

5.

Investigue las funciones de agregacin en MySQL.


t) Encontrar la edad promedio de los amigos.
SELECT AVG(Edad) FROM mivista;
u) Encontrar el amigo con ms edad.
SELECT NomPila, Edad FROM miVista
WHERE Edad = (SELECT MAX(Edad) FROM miVista);

Pgina 9
de 6

PARTE.
con sus
funcin
los
vistos
prctica
ms.

SEGUNDA
Escriba
propias
palabras la
que tienen
comandos
en esta
y otros

Consulte el
manual en lnea de MySQL slo para apoyarse en el
entendimiento de las funciones.

Pgina
10 de 6

Tabla 1. Comandos vistos en la prctica y otros ms.


Comando
Funcin
ALTER VIEW
CREATE VIEW
CURDATE()
CURRENT_DATE
CURRENT_DATE()
CURTIME()
CURRENT_TIME
CURRENT_TIME()
DATE(expr)
DATEDIFF(expl, exp2)
DATE_FORMAT(fecha,
formato)
DAY(fecha)
DAYOFWEEK(fecha)
DAYOFMONTH(fecha)
DAYOFYEAR(fecha)
DESCRIBE
DROP VIEW
LOAD DATA
NOW()
MONTH(fecha)
MONTHNAME(fecha)
ORDER BY
SHOW CREATE VIEW
SHOW TABLES
SYSDATE()
TO_DAYS(fecha)
WEEKDAY(fecha)
WEEKOFYEAR(fecha)
YEAR(fecha)

Modifica la vista creada.


Crea una vista nueva, basado en los valores a los que estar sujeta
esta
vista.
Muestra
la fecha actualmente.
Muestra la fecha actualmente.
De igual manera que CURDATE, muestra la fecha, segn se
especifique.
Muestra la hora y fecha actual.
Muestra la hora y fecha actual.
Muestra la hora y fecha actual.
Esta expresin nos permite establecer que el dato ingresado ser
de tipo Fecha.
decir,
que consta de
un da,
mes y un ao.
Muestra
el tiempo
transcurrido
entre
dos un
fechas.
Especifica el formato de la fecha a la hora de mostrar los datos.
Muestra el da que se haya indicado.
Muestra el da de la semana en que se registr el sistema.
Muestra el da del mes en que se registr el sistema.
Muestra el da del ao en que se registr el sistema.
Muestra los tipos de variables empleadas en los elementos
seleccionados.
(TablasVistas))
Elimina
por completo
la vista creada.
Funciona para importar datos de algunos otros archivos.
Registrar la fecha y hora ingresada en el sistema.
Muestra el nmero del mes.
Muestra el nombre del mes en que se registr el sistema.
Establece el orden en que se presentarn un grupo de datos.
Muestra la forma en que se realiz la vista.
Muestra las tablas que existan dentro de la base de datos.
Muestra la fecha que se ingres en el sistema.
Muestra el nmero de das entre dos fechas.
Muestra el da de la semana en el que se registr el sistema.
Muestra la semana del ao en que se registr en el sistema.
Muestra el ao en que se registr el sistema.

Nota: Agregue algunas otras sentencias de MySQL que no estn en la tabla 1 y se


encuentren en la prctica.
Instrucciones para la entrega de la prctica:
-

Inserte en cada ejercicio resuelto y propuesto los resultados que


muestra el SGBD MySQL.
- Grabe el archivo con su nombre de la siguiente forma: Pr2ApPaternoApMaternoNomPila.pdf
Por ejemplo: Pr2-OcampoBotelloFabiola.pdf
Coloque el reporte en la carpeta Tercer Parcial\Pract2\ de su grupo virtual.
Fecha de entrega: lunes 29 de junio de 2015

Pgina
11 de 6

You might also like