Académique Documents
Professionnel Documents
Culture Documents
Las funciones son usadas en varios comandos y se usan dentro de sus expresiones,
actuando con los valores de las columnas ofreciendo diferentes resultados. Tambin
podemos encontrarnos que algunas de ellas se pueden anidar, de tal manera que usamos
ms de una.
FUNCIONES ARITMTICAS
-> 2
-> 2
-> -1
-> -2
-> 4
-> 2
-> 2
MOD (): tambin funciona con valores con una parte fraccional y retorna el resto exacto tras
la divisin:
->1.5
-> 4
-> 0.25
2. Puede ser negativo para redondear dgitos a la izquierda del punto decimal del valor X
Un ejemplo de ROUND:
Resulta: -1
Resulta: -2
Mysql> SELECT ROUND (1.58);
Resulta: 2
Resulta: 1.3
Resulta: 20
El tipo de nmero que te devuelve es el mismo que el del primer argumento. Si necesita un
tipo de redondeo, debe usar una funcin bien definida como TRUNCATE () o FLOOR () en su
lugar.Desde MYSQL 5.0.3 ROUND () usa la biblioteca de matemtica precisa para valores
exactos cuando el primer argumento es un valor con decimales:o Para nmeros exactos,
ROUND () usa la regla de redondea la mitad hacia arriba. Es decir se redondea en direccin
contraria al cero. Se redondea hacia abajo al siguiente entero si es positivo o hacia arriba si
el siguiente entero es negativo.o Para nmeros aproximados, ROUND () usa la regla de
redondeo al nmero par ms cercano: Un valor con una parte fraccional se redondea al
entero ms cercano.
SIGN (VALOR): Nos devuelve el signo del argumento como -1, 0 o 1, en funcin de si X es
negativo, cero o positivo.Ejemplo de SIGN:
Resulta: -1
Resulta: 0
Resulta: 1
mysql> SQRT(4)
-> 2.00
mysql> SQRT(2*SQRT(2))
-> 1.68
TRUNCATE: Cuando trabajamos con nmeros reales, que poseen un nmero de decimales
considerable, es conveniente dar formato a los datos.
Ejemplo:
Frmula Descripcin resultado
TRUNCATE(-10.7,2); -10.70
TRUNCATE(1.75012,3); 1.750
AVG: Retorna el valor medio de expr. La opcin DISTINCT puede usarse para retornar la media de
los valores distintos de expr. Ejemplo:
COUNT (*): Se utiliza para contar registros. Se puede usar tanto con el FROM como tambin
con el GROUP BY.
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.
LOWER (cad): Retorna la cadena str con todos los caracteres cambiados a minsculas segn
el mapeo del conjunto de caracteres actual (por defecto es ISO-8859-1 Latin1).
-> 'quadratically'
UPPER: Retorna la cadena str con todos los caracteres cambiados a maysculas segn el
mapeo del conjunto de caracteres actual (por defecto es ISO-8859-1 Latin1).
Por ejemplo:
-> '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
WwWwWw.mysql.com
CURDATE(): 2016-09-16
mysql> SELECT CURDATE() + 0;
CURDATE() + 0
20160916
PERIOD DIFF: Esta funcin devuelve el nmero 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.
-> 11
Con anterioridad en este curso apareci la funcin CONCAT, que realiza la concatenacin de dos
o ms cadenas de texto. Los parmetros de entrada en este caso son tantas cadenas como
deseemos separadas por comas, y el resultado que devuelve es una nica cadena con la
concatenacin de todas las cadenas de entrada.
En realidad existen infinidad de funciones con propsitos y utilidades mltiples. Las funciones
estn fuera del estndar SQL, cada SGBD tiene las suyas aunque existen funcionalidades
presentes en todos ellos pudiendo tener diferente nombre. En esta leccin veremos algunos
ejemplos de funciones que por razones obvias solo podrn aplicarse al SGBD MySQL. Encontrar
por Internet numerosas pginas donde documentarse sobre las funciones para este y otros SGBD.
En general una funcin recibe como parmetro valores, y en funcin de estos devuelven un
resultado que es el que se considera al llamar a la funcin desde la clusula SELECT de una
consulta, o desde la clusula WHERE, o desde cualquier lugar aplicable.
Las funciones ms usadas son quizs las de tratamiento de fechas y cadenas alfanumricas.
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 ao, para ello se usa la funcin DATE_FORMAT. Esta
funcin precisa dos parmetros, en primer lugar el dato de tipo fecha que se quiere formatear, y
seguidamente la mscara que determina el formato. Para el mes y ao una mascar posible es la
siguiente: '%m-%Y', por tanto la llamada a la funcin DATE_FORMAT para formatear una fecha con
mes y ao se realiza del siguiente modo:
select date_format(localtime,'%m-%Y')
Y para que las fechas aparezcan en un formato ms normal del que devuelve por defecto MySQL,
al menos por lo que respecta a algunos pases, la mscara 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 podramos construir la siguiente consulta:
Si se quieren usar barras en lugar de guiones para separar el da mes y ao en una dato de tipo
fecha, tan solo deber indicarlo en la mscara como se muestra en el siguiente ejemplo:
Para conocer todas las posibilidades que ofrece MySQL o cualquier otro SGBD en lo que a
mscaras de formato de fechas se refiere deber consultar la documentacin de cada sistema en
particular. Encontrar numerosas pginas en Internet con informacin al respecto.
Veamos ahora una funcin que opera con fechas de modo que permite, por ejemplo, sumar das a
una fecha obteniendo como resultado una nueva fecha. Para ello usamos la funcin de MySQL
DATE_ADD.
El valor que devuelve la funcin DATE_ADD es un dato de tipo fecha, de modo que es posible usar
la llamada a DATE_ADD como parmetro en la funcin 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 ms, veremos un
ejemplo de la funcin DATEDIFF, que devuelve los das de diferencias entre dos fechas. Si usted
recuerda la tabla VEHICULOS, donde se guardaba para cada unidad la fecha de la prxima
revisin, se preguntar quizs como realizar una consulta que informe de los vehculos que deben
pasar la revisin en los prximos 30 das, para ello supondremos que hoy es 15 de noviembre de
2009:
select *
from vehiculos
where datediff(PROX_ITV,'2009-11-15') < 31
Otro tipo de funciones son las de tratamiento de cadenas. Ya se ha visto al principio de esta
leccin 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 abreviacin de substring, es decir, subcadena. Como parmetros recibe el dato
de tipo cadena a tratar en primer lugar, seguido de la posicin dentro de la cadena donde se
quiere obtener la subcadena, y por ltimo la longitud o nmero de caracteres de esta. Ejemplos:
select length('ABCDEFGHIJ')
La funcin 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 funcin de un campo de tabla que
vendr de un filtro seleccionado por el usuario le viene el valor naranja, aunque el usuario podra
haber seleccionado otros colores disponibles. Mediante la siguiente consulta podra 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'.
La funcin IF
Hablemos ahora de una funcin un poco particular pero de suma utilidad, la funcin IF de MySQL.
En Oracle se llama DECODE y funciona de forma un poco distinta. Permite condicionar el valor
que devuelve en funcin de si se cumple una condicin 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 funcin
IF podemos dar una salida de resultados ms humana decodificando esta codificacin:
La funcin IF en este caso interroga si el campo RUBIA contiene un 'S', si es as devuelve 'S', en
caso contrario devuelve 'No'
Funciones numricas
Por ltimo comentaremos algunas funciones para trabajar con nmeros. Por ejemplo la funcin
ROUND, que permite redondear un nmero a por ejemplo dos decimales, con lo que evitamos
largas ristras de nmeros en los resultados. O TRUNCATE que trunca un nmero por la parte
decimal que se le indique, pudiendo as considerar nicamente la parte entera:
Resumen
Las funciones esperan parmetros de un tipo de dato determinado y devuelven un valor de un tipo
de dato determinado. El nmero de parmetros y el tipo de dato de cada parmetro depende de
la especificacin de cada funcin, al igual que el tipo de dato que devuelve cada una y de su
funcionalidad.
Las funciones permiten obtener valores en funcin de los parmetros que se le pasa para
mostrarlos u operar con ellos. Los parmetros pueden ser constantes, campos de tabla, o bien
llamadas a una funcin. En este ltimo caso el valor que devuelve la funcin ejerce de parmetro y
por tanto ser el dato que considerar la funcin que lo toma como parmetro.
Si la llamada se realiza en la clusula SELECT el valor que devuelve la funcin se mostrar como un
campo ms de tabla, es apropiado entonces rebautizar la columna con un alias. Si se usa en la
clusula WHERE el valor que devuelve formar parte de una condicin que se evaluar como un
campo ms de tabla para mostrar o ignorar el registro. Tambin es posible hacer la llamada a una
funcin en la clusula GROUP BY, si tambin se ha hecho en la clusula SELECT y se pretende
agrupar por esa columna.
No deben confundirse este tipo de funciones con las funciones de totalizacin (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
funcin tantas veces como registros devuelve la consulta, y el resultado de la funcin forma parte
de la fila resultante de cada registro.
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 aos de cada empleado. Para aquellos empleados con 18 aos o
ms.
Nota: la edad de un empleado en aos es el nmero de das transcurridos desde el nacimiento
dividido entre los 365 das que tiene un ao.
Ejercicio 3
Realice una consulta sobre la tabla vehculos que devuelva el nmero de vehculos que deben
pasar la revisin agrupado por el ao en que deben pasarla
Ejemplo para crear vistas (create view) en MySQL
Una vista es un objecto de la base de datos que se define mediante un SELECT que agrupa o selecciona
un conjunto de datos. Para crear una vista lo primero que tenemos que ver es si nuestro usuario asignado
a la base de datos tiene permisos para crear vistas (create view).
Una vista en mysql es una tabla virtual con una estructura que nosotros definimos pero sin
datos.
FROM usuarios
ON usuarios.id = comentarios.usuario_id;
Y obtendremos lo siguiente.
Tambien se pueden especificar los resultados de las consultas por medio de criterios:
-- Tabla Fabricantes
+--------+---------+
| codigo | nombre |
+--------+---------+
| 1 | Dell | Disear una vista que muestre el reporte de:
| 2 | HP |
Fabricante y sus artculos
| 3 | Canon |
Cantidad de Artculos por Fabricante.
| 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 |
| 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 podran ser potenciales
postulantes a diferentes carreras. Los postulantes debern pertenecer a un periodo acadmico y
debern elegir una modalidad as como la carrera a la que quieren postular. Por lo general en un ao
solo existen dos periodos acadmicos, por ejemplo los periodos acadmicos del ao 2008 fueron:
2008-1 y 2008-2. El contacto debe tener los datos personales del sujeto as como la fecha de creacin.
El postulante debe tener registrado s asisti a su examen de admisin, y si ingres o no, debe tener
tambin establecido el puntaje que alcanz en el examen.
Disear un men de opciones: