Practica de Funciones y Vistas

20
Bases de Datos II Docente: Arturo Díaz Pulido Funciones MySQL Las funciones son usadas en varios comandos y se usan dentro de sus expresiones, actuando con los valores de las columnas ofreciendo diferentes resultados. También podemos encontrarnos que algunas de ellas se pueden anidar, de tal manera que usamos más de una. FUNCIONES ARITMÉTICAS •ABS (n)Retorna el valor absoluto de X. mysql> SELECT ABS(2); 2 mysql> SELECT ABS(-32); 32 • CEIL (n) Retorna el entero más pequeño no menor a X. mysql> SELECT CEILING(1.23); 2 mysql> SELECT CEIL(-1.23); -1 • FLOOR (n) Retorna el valor entero más grande pero no mayor a X. mysql> SELECT FLOOR(1.23); -> 1mysql> SELECT FLOOR(-1.23); -2 • MOD (m, n) Operación de módulo. Retorna el resto de N dividido por M. mysql> SELECT MOD(234, 10); 4 mysql> SELECT 253 % 7; 1 mysql> SELECT MOD(29,9); 2 mysql> SELECT 29 MOD 9; 2

description

Trabajo

Transcript of Practica de Funciones y Vistas

Page 1: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

Funciones MySQL

Las funciones son usadas en varios comandos y se usan dentro de sus expresiones,

actuando con los valores de las columnas ofreciendo diferentes resultados. También

podemos encontrarnos que algunas de ellas se pueden anidar, de tal manera que usamos

más de una.

FUNCIONES ARITMÉTICAS

•ABS (n)Retorna el valor absoluto de X.

mysql> SELECT ABS(2); 2

mysql> SELECT ABS(-32); 32

• CEIL (n) Retorna el entero más pequeño no menor a X.

mysql> SELECT CEILING(1.23); 2

mysql> SELECT CEIL(-1.23); -1

• FLOOR (n)

Retorna el valor entero más grande pero no mayor a X.

mysql> SELECT FLOOR(1.23);

-> 1mysql> SELECT FLOOR(-1.23); -2

• MOD (m, n)

Operación de módulo. Retorna el resto de N dividido por M.

mysql> SELECT MOD(234, 10); 4

mysql> SELECT 253 % 7; 1

mysql> SELECT MOD(29,9); 2

mysql> SELECT 29 MOD 9; 2

Page 2: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

MOD () también funciona con valores con una parte fraccional y retorna el resto exacto

tras la división:

mysql> SELECT MOD (34.5,3); 1.5

• POWER

Retorna el valor de X a la potencia de Y. Por ejemplo:

mysql> SELECT POW(2,2); -> 4

mysql> SELECT POW(2,-2); -> 0.25

• ROUND (número [,m])

Nos devuelve el argumento X, redondeado al número entero más cercano. Hay dos

argumentos:

1. Devuelve X redondeando a decimales.

2. Puede ser negativo para redondear dígitos a la izquierda del punto decimal del valor X

Un ejemplo de ROUND:

Mysql> SELECT ROUND (-1.23); -1

Mysql> SELECT ROUND (-1.58); -2

Mysql> SELECT ROUND (1.58); 2

Mysql> SELECT ROUND (1.298,1); 1.3

Mysql> SELECT ROUND (23.298,-1); 20

El tipo de número que te devuelve es el mismo que el del primer argumento. Si necesita

un tipo de redondeo, debe usar una función bien definida como TRUNCATE () o FLOOR ()

en su lugar. Desde MYSQL 5.0.3 ROUND () usa la biblioteca de matemática precisa para

valores exactos cuando el primer argumento es un valor con decimales, o para números

exactos, ROUND () usa la regla de “redondea la mitad hacia arriba”. Es decir se redondea

en dirección contraria al cero. Se redondea hacia abajo al siguiente entero si es positivo o

hacia arriba si el siguiente entero es negativo o Para números aproximados, ROUND () usa

Page 3: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

la regla de “redondeo al número par más cercano”: Un valor con una parte fraccional se

redondea al entero más cercano.

• SIGN (VALOR) Nos devuelve el signo del argumento como -1, 0 o 1, en función de si X es

negativo, cero o positivo. Ejemplo de SIGN:

Mysql> SELECT SIGN (-32); -1

Mysql> SELECT SIGN (0); 0

Mysql> SELECT SIGN (234); 1

SQRT Devuelve la raíz cuadrada de la expresión numérica especificada. Ejemplo:

mysql> SQRT(4) 2.00

mysql> SQRT(2*SQRT(2)) 1.68

TRUNC(número[,m ])

Trunca un número a un entero, suprimiendo la parte fraccionaria de dicho número.

Ejemplo:

A B 1 Fórmula Descripción resultado

2 =TRUNCAR(8,9) Parte entera de 8,9 (8)

3 =TRUNCAR(8,9) Parte entera de -8,9 (-8)

4 =TRUNCAR(PI()) Parte entera de pi (3)

AVG. Retorna el valor medio de expr. La opción DISTINCT puede usarse para retornar la

media de los valores distintos de expr. Ejemplo:

mysql> SELECT student_name, AVG (test_score) FROM student GROUP BY student_name;

COUNT (*). Se utiliza para contar registros. Se puede usar tanto con el FROM como

también con el GROUP BY.

Ejemplo con el FROM: SELECT COUNT (*) FROM animales;

Page 4: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

El resultado del COUNT (*) es que te devuelve la cantidad de animales que hay en total en

la tabla animales.

Ejemplo con GROUP BY: SELECT especies, COUNT (*) FROM animales GROUP BY especies;

El resultado del COUNT (*) junto con el GROUP BY en este caso te devuelve el resultado de

la cantidad de animales que hay por especies.

MAX. Esta función se clasifica en funciones de agrupamiento, y se utiliza para averiguar

el valor máximo de cada campo usando como función “max()”. Por ejemplo, queremos

saber cuál es el precio mayor de todos los libros: SELECT MAX (PRECIO) FROM LIBROS;

MIN Esta función se clasifica en funciones de agrupamiento, y se utiliza para averigua el

valor mínimo de cada campo usando como función “min()”. Por ejemplo, queremos saber

cuál es el precio más bajo de todos los libros: SELECT MIN (PRECIO) FROM LIBROS;

SUM (CAMPO). Esta función retorna la suma de los valores que contiene el campo

especificado. Se utiliza en el SELECT, ya que seleccionas los campos que quieres

sumar.Por ejemplo, para saber la cantidad de libros que hay en la venta, se suman la

cantidad de libros que hay. SELECT SUM (cantidad) FROM LIBROS;

También podremos encontrárnoslo con alguna condición:

SELECT SUM (cantidad) FROM LIBROS WHERE tema=ficción;

— LOWER (cad)

Retorna la cadena str con todos los caracteres cambiados a minúsculas según el mapeo

del conjunto de caracteres actual (por defecto es ISO-8859-1 Latin1).

mysql> SELECT LOWER('QUADRATICALLY'); 'quadratically'

Esta función funciona con múltiples bytes.

— UPPER

Retorna la cadena str con todos los caracteres cambiados a mayúsculas según el mapeo

del conjunto de caracteres actual (por defecto es ISO-8859-1 Latin1).

Esta función trabaja con múltiples bytes.

Por ejemplo:

Page 5: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

mysql> SELECT UPPER('Hej'); 'HEJ'

— REPLACE (str, from_str, to_str)

Retorna la cadena str con todas las ocurrencias de la cadena from_str reemplazadas con la

cadena to_str.

Ejemplo

SELECT REPLACE („www.mysql.com‟, „w‟, „Ww‟); ó „WwWwWw.mysql.com‟

— CURDATE ()

Devuelve la fecha actual como un valor en el formato 'AAAA-MM-DD' o AAAAMMDD,

dependiendo de si la función se usa en un contexto de cadena o numérico:

mysql> SELECT CURDATE();

CURDATE() 2003-12-16

mysql> SELECT CURDATE() + 0;

CURDATE() + 0 20031216

— PERIOD DIFF

Esta función devuelve el número de meses entre periodos P1 y P2. P1 y P2 deben estar en

el formato YYMM o YYYYMM. Tenga en cuenta que el periodo P1 y P2 argumentos no son

valores de fecha.

Ejemplo de PERIOD DIFF ():

Mysql> SELECT PERIOD_DIFF (200802,200703); 11

Page 6: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

Trabajar con fechas en

MySQL

Trabajar con fechas es una tarea que al estar sujeta a tantas reglas especiales (meses con

distinta cantidad de días, años bisiestos, comienzo de mes a media semana, etc.) puede

ser muy compleja si lo intentamos abordar sin el apoyo de una buena base.

Anteriormente he escrito sobre cómo trabajar con fechas en PHP y en JavaScript: en

ambos casos contamos con el concepto de fechas como objetos, lo que ordena y facilita

bastante su manipulación a través de los métodos propios de cada lenguaje.

En MySQL existe a su vez un concepto de fechas y tiempos como tipos de datos con sus

propias características, y junto con ellos, un montón de funciones que nos pueden servir

para realizar distintos cálculos y operaciones al realizar consultas.

Tipos de fecha y horas

En MySQL existen los siguientes tipos de fecha y tiempo:

DATETIME corresponde a una representación completa de fecha y

hora, es decir, algo como el 25 de octubre del 2014 a las 8:00

pm, lo que se almacena del modo 2014-10-25 20:00:00. Es notable la

ausencia de la indicación de una zona horaria, cuya gestión queda

delegada a la aplicación.

Los tipos DATE y TIME, como quizás ya estás adivinando,

almacenan solamente fecha o solamente hora. Los formatos son

los mismos que su parte correspondiente en una columna DATETIME,

es decir, YYYY-MM-DD para las fechas y HH:MM:SS para el tiempo.

Page 7: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

El tipo YEAR es un dato aún más específico y almacena solamente

un año. Aunque se puede almacenar sólo con 2 dígitos, creo que

no es necesario ahondar en lo evidentemente necesario de utilizar

el formato de 4 dígitos.

Finalmente, existe el tipo TIMESTAMP que es similar a DATETIME pero

con la salvedad de que todos los datos son convertidos hacia y

desde UTC al escribir y leer la información, tomando como base la

configuración de zona horaria del servidor, o bien, si se ha

especificado, de la conexión con el motor de base de datos. Por

ejemplo, si mi servidor está en la zona horaria de Santiago de Chile

y voy a guardar el dato 2014-01-30 12:00:00, MySQL lo convierte

a 2014-01-30 15:00:00 que sería la fecha y hora correspondientes en

UTC.

Utilizando fechas y horas en consultas

Como ya sabemos que MySQL “entiende” de fechas y horas, podemos

hacer consultas relacionadas con éstas de forma muy sencilla. Por

ejemplo, si queremos averiguar las entradas de WordPress publicadas

en una jornada de trabajo en particular:

SELECT * FROM wp_posts

WHERE post_date >= '2014-03-19 08:00:00'

AND post_date <= '2014-03-19 18:00:00'

AND post_status = 'publish'

ORDER BY post_date ASC

… donde post_date es una columna con datos tipo DATETIME.

Page 8: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

También podríamos consultar por todas las entradas publicadas un día

en particular, sin importar la hora. Para esto, una opción ingenua sería:

SELECT * FROM wp_posts

WHERE post_date >= '2014-03-19 00:00:00'

AND post_date <= '2014-03-19 23:59:59'

AND post_status = 'publish'

ORDER BY post_date ASC

Pero también podemos tratar esa columna como si tuviera solamente

información de fecha utilizando la función CAST de MySQL:

SELECT * FROM wp_posts

WHERE CAST(post_date AS DATE) = '2014-03-19'

AND post_status = 'publish'

ORDER BY post_date ASC

Además podemos extraer parte de la fecha, por ejemplo:

SELECT * FROM wp_posts

WHERE YEAR( post_date ) = '2014'

AND MONTH( post_date ) = '03'

AND post_status = 'publish'

ORDER BY post_date ASC

Utilizar periodos de tiempo en consultas

También podemos hacer consultas considerando periodos de tiempo; lo

que es especialmente útil cuando queremos saber, por ejemplo, las

entradas publicadas en un mes en particular. En lugar de tratar de

adivinar cuántos días tiene el mes por el que estamos consultando,

Page 9: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

podemos definir un rango de forma más sencilla; por ejemplo, podemos

formular la misma consulta anterior de este modo:

SELECT * FROM wp_posts WHERE

CAST(post_date AS DATE) >= '2014-03-01'

AND post_date < DATE_ADD( '2014-03-01', INTERVAL 1 MONTH )

AND post_status = 'publish'

ORDER BY post_date ASC

Añadiendo y restando fechas y horas

Las funciones DATE_ADD() y DATE_SUB() nos ofrecen una forma muy sencilla

de añadir o restar períodos de una fecha. Como parámetros reciben una fecha y

un intervalo. El intervalo es una representación de un período de tiempo como 1

DAY, 50 YEAR, etc.

SELECT * FROM llamadas WHERE fechaLlamada = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY));

función CONCAT, que realiza la concatenación de dos o más cadenas de texto. Los parámetros de

entrada en este caso son tantas cadenas como deseemos separadas por comas, y el resultado que

devuelve es una única cadena con la concatenación de todas las cadenas de entrada.

select concat('Esto ','es ','un ','ejemplo ',

'de ','concatenación ', 'de ', 'cadenas ',

'de ','texto.') as EJEMPLO_CONCAT

En realidad existen infinidad de funciones con propósitos y utilidades múltiples. Las funciones

están fuera del estándar SQL, cada SGBD tiene las suyas aunque existen funcionalidades

presentes en todos ellos pudiendo tener diferente nombre. En esta lección veremos algunos

ejemplos de funciones que por razones obvias solo podrán aplicarse al SGBD MySQL. Encontrará

Page 10: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

por Internet numerosas páginas donde documentarse sobre las funciones para este y otros SGBD.

En general una función recibe como parámetro valores, y en función de estos devuelven un

resultado que es el que se considera al llamar a la función desde la cláusula SELECT de una

consulta, o desde la cláusula WHERE, o desde cualquier lugar aplicable.

Alguna funciones no precisan parámetros, por ejemplo la función LOCALTIME y CURRENT_DATE.

La primera devuelve la fecha y la hora del servidor de BD, la segunda solo la fecha, por tanto si

usted quiere saber la fecha y la hora del servidor cuando le sirvió esta página, aquí tiene la

respuesta:

select localtime , current_date

Más Funciones para fechas

Las funciones más usadas son quizás las de tratamiento de fechas y cadenas alfanuméricas.

Veamos un ejemplo de formateo de fecha: supongamos por ejemplo que: de la fecha y hora

actual solo nos interesa mostrar el mes y el año, para ello se usa la función DATE_FORMAT. Esta

función precisa dos parámetros, en primer lugar el dato de tipo fecha que se quiere formatear, y

seguidamente la máscara que determina el formato. Para el mes y año una mascará posible es la

siguiente: '%m-%Y', por tanto la llamada a la función DATE_FORMAT para formatear una fecha con

mes y año se realiza del siguiente modo:

select date_format(localtime,'%m-%Y')

Y para que las fechas aparezcan en un formato más normal del que devuelve por defecto MySQL,

al menos por lo que respecta a algunos países, la máscara es la siguiente: '%d-%m-%Y'. Así para

mostrar por ejemplo los datos de la tabla EMPLEADOS con este formato para el campo

F_NACIMIENTO podríamos construir la siguiente consulta:

select ID_EMPLEADO, NOMBRE, APELLIDOS, date_format(F_NACIMIENTO,'%d-%m-%Y') F_NACIMIENTO

FROM EMPLEADOS

Si se quieren usar barras en lugar de guiones para separar el día mes y año en una dato de tipo

fecha, tan solo deberá indicarlo en la máscara como se muestra en el siguiente ejemplo:

Page 11: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

select ID_EMPLEADO, NOMBRE, APELLIDOS, date_format(F_NACIMIENTO,'%d/%m/%Y') F_NACIMIENTO

FROM EMPLEADOS

Para conocer todas las posibilidades que ofrece MySQL o cualquier otro SGBD en lo que a

máscaras de formato de fechas se refiere deberá consultar la documentación de cada sistema en

particular. Encontrará numerosas páginas en Internet con información al respecto.

Veamos ahora una función que opera con fechas de modo que permite, por ejemplo, sumar días a

una fecha obteniendo como resultado una nueva fecha. Para ello usamos la función de MySQL

DATE_ADD.

select date_add(current_date, INTERVAL 30 DAY) FECHA_ACTUAL_MAS_TREINTA_DIAS,

date_add(current_date, INTERVAL 6 MONTH) FECHA_ACTUAL_MAS_SEIS_MESES

El valor que devuelve la función DATE_ADD es un dato de tipo fecha, de modo que es posible usar

la llamada a DATE_ADD como parámetro en la función DATE_FORMAT para darle formato al

resultado que devuelve DATE_ADD:

select date_format(date_add(current_date, INTERVAL 30 DAY) , '%d-%m-

%Y') FECHA_ACTUAL_MAS_TREINTA_DIAS,

date_format(date_add(current_date, INTERVAL 6 MONTH) , '%d-%m-

%Y') FECHA_ACTUAL_MAS_SEIS_MESES

Por último en lo que a funciones de fecha se refiere, aunque existen muchas más, veremos un

ejemplo de la función DATEDIFF, que devuelve los días de diferencias entre dos fechas. Si usted

recuerda la tabla VEHICULOS, donde se guardaba para cada unidad la fecha de la próxima

revisión, se preguntará quizás como realizar una consulta que informe de los vehículos que deben

pasar la revisión en los próximos 30 días, para ello supondremos que hoy es 15 de noviembre de

2009:

select * from vehiculos

where datediff(PROX_ITV,'2009-11-15') < 31

Funciones para cadenas

Otro tipo de funciones son las de tratamiento de cadenas. Ya se ha visto al principio de esta

Page 12: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

lección la funcion CONCAT, que permite concatenar cadenas. Con estas funciones podemos

obtener subcadenas de una cadena dada, por ejemplo los cuatro primeros caracteres. Para ello

usaremos SUBSTR abreviación de substring, es decir, subcadena. Como parámetros recibe el dato

de tipo cadena a tratar en primer lugar, seguido de la posición dentro de la cadena donde se

quiere obtener la subcadena, y por último la longitud o número de caracteres de esta. Ejemplos:

select substr('ABCDEFGHIJ',1,4) LOS_CUATRO_PRIMEROS_CARACTERES

select substr('ABCDEFGHIJ',4,3) LOS_TRES_CARACTERES_CENTRALES

select substr('ABCDEFGHIJ',3) LA_CADENA_IGNORANDO_LOS_DOS_CARACTERES_INICALES

select substr('ABCDEFGHIJ',-2) LOS_DOS_CARACTERES_FINALES

Con la función LENGTH se obtiene la longitud de una cadena:

select length('ABCDEFGHIJ')

La función REPLACE es de gran utilidad, remplaza en una cadena un texto por otro. Por ejemplo,

imagine que usted vende manteles de varios colores y en función de un campo de tabla que

vendrá de un filtro seleccionado por el usuario le viene el valor naranja, aunque el usuario podría

haber seleccionado otros colores disponibles. Mediante la siguiente consulta podría establecer un

texto fijo con una subcadena a remplazar por el color, que es variable y depende de lo que el

usuario selecciona. La idea del siguiente ejemplo es que el literal 'naranja' seria en realidad un

campo de tabla con el valor 'naranja'.

select REPLACE('Mantel de color &','&','naranja') PRODUCTO

La función IF

Hablemos ahora de una función un poco particular pero de suma utilidad, la función IF de MySQL.

En Oracle se llama DECODE y funciona de forma un poco distinta. Permite condicionar el valor

que devuelve en función de si se cumple una condición que se establece. Si usted recuerda la

tabla personas, donde se guardaba una 'S' para indicar Sí, y una 'N' para indicar No, con la función

IF podemos dar una salida de resultados más humana decodificando esta codificación:

select NOMBRE , if(RUBIA='S','Sí','No') RUBIA

from PERSONAS

Page 13: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

La función IF en este caso interroga si el campo RUBIA contiene un 'S', si es así devuelve 'Sí', en

caso contrario devuelve 'No'

Funciones numéricas

Por último comentaremos algunas funciones para trabajar con números. Por ejemplo la función

ROUND, que permite redondear un número a por ejemplo dos decimales, con lo que evitamos

largas ristras de números en los resultados. O TRUNCATE que trunca un número por la parte

decimal que se le indique, pudiendo así considerar únicamente la parte entera:

select round(7.64739836953 , 2) , truncate(7.64739836953 , 0)

Resumen

Las funciones esperan parámetros de un tipo de dato determinado y devuelven un valor de un

tipo de dato determinado. El número de parámetros y el tipo de dato de cada parámetro

depende de la especificación de cada función, al igual que el tipo de dato que devuelve cada una

y de su funcionalidad.

Las funciones permiten obtener valores en función de los parámetros que se le pasa para

mostrarlos u operar con ellos. Los parámetros pueden ser constantes, campos de tabla, o bien

llamadas a una función. En este último caso el valor que devuelve la función ejerce de parámetro

y por tanto será el dato que considerará la función que lo toma como parámetro.

Si la llamada se realiza en la cláusula SELECT el valor que devuelve la función se mostrará como

un campo más de tabla, es apropiado entonces rebautizar la columna con un alias. Si se usa en la

clausula WHERE el valor que devuelve formará parte de una condición que se evaluará como un

campo más de tabla para mostrar o ignorar el registro. También es posible hacer la llamada a una

función en la cláusula GROUP BY, si también se ha hecho en la cláusula SELECT y se pretende

agrupar por esa columna.

No deben confundirse este tipo de funciones con las funciones de totalización (SUM, AVG, etc...)

estas últimas operan con todos los registros seleccionados de una consulta, mientras que las

primeras operan únicamente con valores de un solo registro, o si usted quiere, se llama a la

función tantas veces como registros devuelve la consulta, y el resultado de la función forma parte

de la fila resultante de cada registro.

Page 14: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

EJERCICIOS

Ejercicio 1

Realice una consulta que devuelva la media de salarios de la tabla EMPLEADOS agrupado por

sexo. Redondee la media de salarios a un solo decimal y decodifique la columna sexo para que

aparezca el literal HOMBRES y MUJERES en lugar de H y M. No olvide rebautizar las columnas con

un alias apropiado.

Ejercicio 2

Realice una consulta sobre la tabla EMPLEADOS que devuelva el nombre, los apellidos, la fecha de

nacimiento y la edad actual en años de cada empleado. Para aquellos empleados con 18 años o

más.

Nota: la edad de un empleado en años es el número de días transcurridos desde el nacimiento

dividido entre los 365 días que tiene un año.

Ejercicio 3

Realice una consulta sobre la tabla vehículos que devuelva el número de vehículos que deben

pasar la revisión agrupado por el año en que deben pasarla

Page 15: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

Practica de Funciones y Vistas

En el siguiente modelo conceptual

Se tiene los siguientes datos, en cada tabla:

-- Tabla Fabricantes

+--------+---------+

| codigo | nombre |

+--------+---------+

| 1 | Dell |

| 2 | HP |

| 3 | Canon |

| 4 | EPSON |

| 5 | SONY |

| 6 | Samsung |

| 7 | Apple |

| 8 | Brother |

| 9 | HTC |

| 10 | LG |

| 11 | KTC |

+--------+---------+

-- Tabla Articulos

+--------+----------------------------+--------+------------+

| codigo | nombre | precio | fabricante |

+--------+----------------------------+--------+------------+

| 1 | Impresora | 8990 | 1 |

| 2 | Laptop | 16190 | 5 |

| 3 | Computadora | 26990 | 1 |

| 4 | Computadora | 26990 | 2 |

| 5 | Impresora | 890 | 2 |

Diseñar una vista que muestre el reporte de:

Fabricante y sus artículos

Cantidad de Artículos por Fabricante.

Page 16: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

| 6 | Camara | 7190 | 2 |

| 7 | Galaxy S5 | 25190 | 6 |

| 8 | Impresora Laser | 34190 | 7 |

| 9 | MacBook Air | 70190 | 7 |

| 10 | Servidor T1110 | 160190 | 1 |

| 11 | Televisor 32 | 15290 | 11 |

| 12 | Nevera 6 pies | 33290 | 11 |

| 13 | impresora Pixma | 1250 | 3 |

| 14 | Impresora Pixma | 4040 | 3 |

| 15 | Impresora L200 | 8540 | 4 |

| 16 | Ploter 44 | 278540 | 4 |

| 17 | Televisor 60 | 98540 | 5 |

| 18 | Xperia Z2 | 26540 | 5 |

| 19 | Televisor 3D | 269540 | 6 |

| 20 | Cartuchos | 63 | 2 |

| 21 | Ipod 32GB | 81 | 7 |

| 22 | Iphone 4S | 170 | 7 |

| 23 | Fax 575 | 1790 | 8 |

| 24 | Multifuncion MFC-295 | 5210 | 8 |

| 25 | SmartPhone M8 | 32210 | 9 |

| 26 | SmartPhone M1 | 90 | 9 |

| 27 | SmartPhone G2 | 152 | 10 |

| 28 | Televisor 21 | 108 | 10 |

| 29 | Televisor 44 | 10790 | 10 |

| 30 | Televisor 44 | 1070 | 11 |

| 31 | Tableta 7 | 90 | 11 |

| 32 | Tableta 10 | 125 | 11 |

| 33 | Aire Acondicionado 9000BTU | 16235 | 11 |

| 34 | Altavoces | 63 | 2 |

+--------+----------------------------+--------+------------+

2. Una universidad realiza el registro de contactos, que son las personas que podrían ser potenciales

postulantes a diferentes carreras. Los postulantes deberán pertenecer a un periodo académico y deberán

elegir una modalidad así como la carrera a la que quieren postular. Por lo general en un año solo existen dos

periodos académicos, por ejemplo los periodos académicos del año 2008 fueron: 2008-1 y 2008-2. El contacto

debe tener los datos personales del sujeto así como la fecha de creación. El postulante debe tener registrado

sí asistió a su examen de admisión, y si ingresó o no, debe tener también establecido el puntaje que alcanzó

en el examen.

Page 17: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

Usar Vistas y Funciones. Diseñar un menú de opciones:

Reporte de carreras y sus postulantes

Reporte de contacto (con su edad actual) y la cantidad de postulantes enlazados

Calculo de las Edades según el porcentaje, por periodos. Ejemplo: Ingresar periodo inicial y

periodo final, y mostrar un reporte según el porcentaje que ingrese. Entonces si son 100

postulantes y quiero ver el 20% solo me mostrara de 20 en 20.

Page 18: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

Crear VISTAS

para reportar

las ventas y su

detalle

(incluyendo el

nombre del

cliente) por

fecha en el

siguiente

formato: dd del

mm del aaaa

Ademas mostrar

en el reporte el

empleado que

genero la venta.

Reportar los

productos por

proveedor.

Page 19: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

Implementar la siguiente base de datos en MySQL, y reportar:

Viajes por Rutas, fechas y por costo del viaje

Por cada viaje reportar los Datos de la tripulación

El estado de cada bote con los datos del equipo y los diagnósticos generados en el

mantenimiento y datos de sus reparaciones.

Genere una función para:

Calcular la diferencia de fechas en que los botes tuvieron un mantenimiento y las fechas

en que fueron reparados.

Ingresar más rutas y costos para nuevos viajes, incluyendo el ingreso de una nueva

tripulación y generando un prorrateo de los costos por hora de cada tripulante

Page 20: Practica de Funciones y Vistas

Bases de Datos II

Docente: Arturo Díaz Pulido

Implementar en MySQL, la siguiente Base de Datos, y generar paquetes de turismo, con su

determinada reservación y hospedaje. Usar funciones.