Vous êtes sur la page 1sur 6

Diseo de base de datos Prctica 07 Duracin 4 horas

Departamento de Computacin UNAN - Len.

Funciones especficas del entorno de MySql 1.- Descripcin


Estas prcticas son un prembulo para la automatizacin de tareas cotidianas mediante la utilizacin de funciones especficas del entorno de mysql, stas funciones en conjunto con los procedimientos y funciones de usuario constituyen parte del quehacer en la gestin y administracin del sistema de bases de datos.

2.- Objetivos
1. Que el estudiante utilice las herramientas que el sistema proporciona para realizar tareas que el propio lenguaje de consultas no incorpora. 2. Que el estudiante explote las bibliotecas de funciones proporcionadas en el caso especfico de MySQL, optimizando el rendimiento en la construccin de diversos escenarios para la gestin de datos.

3.- Introduccin a las funciones del entorno de MySQL


El entorno de MySQL le brinda al administrador de la base de datos una serie de herramientas que le permiten optimizar las actividades rutinarias de gestin del sistema. Estas funciones, estn agrupadas segn su mbito de incidencia en los datos como se muestra a continuacin, hay que tener en cuenta que existen mucha ms funciones predefinidas en el sistema de las que se muestran en esta prctica, se ha intentado dada la experiencia de los docentes en el tema, incorporar aquellas que suelen utilizarse con mayor frecuencia. La lista siguiente muestra la divisin en categoras de las funciones del entorno de MySQL: Funciones de comparacin. Funciones de conversin. Funciones de control de flujo. Funciones para manipulacin de string. Funciones matemticas. Funciones de fecha, hora y miscelneas.

4.- Funciones de comparacin


FUNCIN BREVE DESCRIPCIN EJEMPLO PARA PROBARSE EN LABORATORIO

X IS [NOT] Inspecciona si x es un SELECT NULL IS NULL, 0 IS NULL, -1 IS NULL, 'X' IS NOT NULL; valor nulo NULL

Diseo de base de datos Prctica 07 Duracin 4 horas expr [NOT] BETWEEN min AND max GREATEST (v1, v2, vn) expr [NOT] IN (value,...)
Evala si expr se encuentra en el intervalo min-max. Regresa el mayor de los valores numricos de la lista. Evala si expr se encuentra presente en la lista de valores separados por coma.

Departamento de Computacin UNAN - Len.

SELECT 2*2+10/5 BETWEEN 2 AND 6 AS 'RESULTADO';

SELECT GREATEST(22, 44, 55, 100, 99) AS RESULTADO;

SELECT 99 + 1 * 10 IN (1000, 999, 110) AS 'RESULTADO';

5.- Funciones de conversin


FUNCIN CAST(expr AS type) CONVERT(expr,type) BREVE DESCRIPCIN
Convierte expr al tipo de datos especificado por type. IDEM

EJEMPLO PARA PROBARSE EN LABORATORIO


SELECT CAST(0xABC AS UNSIGNED INTEGER) AS 'RESULTADO'; SELECT CONVERT(0xFF, UNSIGNED INTEGER) AS 'RESULTADO'; Para ejemplificar esto es necesario, tener un poco ms claro el problema: supongamos dos tablas con distintos juegos de caracteres o niveles de cotejamiento con los mismos datos: CREATE TABLE COT1 ( COT_A VARCHAR(10) CHARSET LATIN1 COLLATE LATIN1_SPANISH_CI, COT_B VARCHAR(10) CHARSET UTF8 COLLATE UTF8_GENERAL_CI )ENGINE=INNODB; CREATE TABLE COT2 ( COT_C VARCHAR(10) CHARSET LATIN1 COLLATE LATIN1_SWEDISH_CI, COT_D VARCHAR(10) CHARSET LATIN2 COLLATE LATIN2_GENERAL_CI )ENGINE=INNODB; INSERT INTO COT1 VALUES ('ERNESTO','CARLOS'), ('TITO','ESTELA'), ('PEDRO','MARIA'); INSERT INTO COT2 VALUES ('ERNESTO','CARLOS'), ('TITO','ESTELA'), ('PEDRO','MARIA'); Qu resultado obtiene en la consulta: SELECT COT1.COT_A, COT2.COT_C FROM COT1, COT2 WHERE COT1.COT_A = COT2.COT_C; Para solucionar el conflict anterior se debern realizar comparaciones entre tablas de cotejamiento equivalentes: WHERE COT1.COT_A LIKE CONVERT(COT2.COT_C USING LATIN1) COLLATE LATIN1_SPANISH_CI;

CONVERT(expr USING ) [COLLATE]

Type puede ser: BINARY, CHAR, DATE, DATETIME, SIGNED [INTEGER], TIME, UNSIGNED [INTEGER] Convierte la expresin a un juego de caracteres admitido posibilitando sealar el nivel de cotejamiento.

BINARY

Fuerza la comparacin de dos cadenas a una comparacin binaria.

SELECT 'A' LIKE 'a' AS 'NBIN', BINARY 'A' LIKE 'a' AS 'BIN';

Diseo de base de datos Prctica 07 Duracin 4 horas

Departamento de Computacin UNAN - Len.

6.- Funciones de control de flujo


FUNCIN CASE value WHEN [comparevalue] THEN result [WHEN [comparevalue] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END IF(expr,T,F) BREVE DESCRIPCIN
Compara value con todos los casos en el primer match retorna lo que aparezca luego del then. Si no hay ningn match y aparece la orden else retornar la expresin que le precede.

EJEMPLO PARA PROBARSE EN LABORATORIO

SELECT CASE CONVERT(0b100000000, UNSIGNED INTEGER) WHEN 255 THEN 'DOSCIENTOS CINCUENTA Y CINCO EN DECIMAL' WHEN 256 THEN 'DOSCIENTOS CINCUENTA Y SEIS EN DECIMAL' ELSE 'NINGUNO DE LOS ANTERIORES' END

A diferencia del anterior permite ir comparando cada caso mediante una expresin distinta.

SELECT CASE WHEN @A > @B THEN 'EL PRIMER VALOR ES MAYOR' WHEN @A < @B THEN 'EL SEGUNDO VALOR ES MAYOR' ELSE 'SON IGUALES' END;

Si la expresin es verdadera, entonces T, si no, entonces F.

SELECT IF(2<4, 'LA EXPR ES TRUE', 'LA EXPR ES FALSE');

7.- Funciones para string


FUNCIN ASCII(caracter) BIT_LENGTH(str) CHAR_LENGTH(str) CONCAT(str1,str2,...) CONCAT_WS('separator', str1, str2,...) ELT(N,str1,str2,str3,...) FIELD(str,str1,str2,...) BREVE DESCRIPCIN
Retorna valores 0..255 Los bits que ocupa el string. Caracteres en el string. Concatena todas las cadenas en la lista. Idntico al anterior, sin embargo, concatena mediante un separador. Retorna la cadena de la lista indicada por N, en caso contrario NULL. Busca str en el resto de la lista, si la encuentra retorna la posicin.

EJEMPLO PARA PROBARSE EN LABORATORIO


SELECT ASCII('a'); SELECT BIT_LENGTH('ABCD'); SELECT CHAR_LENGTH('AbCd'); SELECT CONCAT('CAD1', 'CAD2', 'CAD3'); SELECT CONCAT_WS(',','CAD1', 'CAD2', 'CAD3');

SELECT ELT(2,'A','B','C'); SELECT FIELD('C','A', 'B', 'CC', 'UC', 'D','C');

Diseo de base de datos Prctica 07 Duracin 4 horas


Sustituye desde la posicin pos en str un nmero de caracteres de tamao len por la cadena newstr Pasa la cadena a minsculas o maysculas respectivamente. Toma los primeros len caracteres de izquierda a derecha de la cadena str. Toma los primeros len caracteres de derecha a izquierda de la cadena str. Retorna el substring pos-len. Retorna la posicin a partir de donde encuentra el substring. Suprime los caracteres representados por removstr de acuerdo a los modificadores both, leading y trailing. De no especificar se eliminan los espacios en blanco an ambos sentidos de la cadena.

Departamento de Computacin UNAN - Len.

INSERT(str,pos,len,newstr)

SELECT INSERT('El r**mplazo ya se ha dado',5,2,'ee');

LCASE(str) / UCASE(str)

SELECT UCASE('abcd') as 'Maysculas', LCASE('ABCD') as 'Minsculas';

LEFT(str,len)

SELECT LEFT('123456789',3) as 'De izq a der';

RIGHT(str,len) MID(str,pos,len) LOCATE(SUBSTR,STR)

SELECT RIGHT('123456789',3) as 'De der a izq';

SELECT MID('123456789',3,3); SELECT LOCATE('@','MICORREO@UNANLEON.EDU.NI');

TRIM([[BOTH | LEADING | TRAILING] [removstr] FROM] str)

SELECT TRIM(' A '), TRIM(TRAILING FROM ' A '), TRIM(LEADING FROM ' A '), TRIM(BOTH 'x' FROM 'xxxxxxxxxAxxxxxxxxx');

8- Funciones matemticas
FUNCIN ABS(X) CEILING(X) FLOOR(X) N%M/N MOD M POW(X,Y) ROUND(X,D) RAND([S]) BREVE DESCRIPCIN
Valor absoluto Entero ms cercano arriba. Entero ms cercano abajo. Mdulo. Potencia de x la y. Redondea a D posiciones decimales. Donde S es la semilla.

EJEMPLO
SELECT ABS(255*(4-5)); SELECT CEILING(4.01), CEILING(4.99), CEILING(4.50); SELECT FLOOR(4.01), FLOOR(4.99), FLOOR(4.50); SELECT 115 mod 5, 19282827 % 2; SELECT CONVERT (POW(2,11),TIME); SELECT ROUND(10.500,0), ROUND(10.500,2), ROUND(10.505,2), ROUND(10.499,0), ROUND(10.499,2); SELECT CEILING((RAND()*10)), CEILING((RAND()*10)), CEILING((RAND()*10));

Diseo de base de datos Prctica 07 Duracin 4 horas

Departamento de Computacin UNAN - Len.

9.- Funciones de fecha, hora y miscelneas


FUNCIN ADDDATE(date,days) CURDATE() CURTIME() NOW() BREVE DESCRIPCIN
Suma un nmero de das a la expresin del tipo date. Retorna la fecha, hora en format 24 y formato de fecha y hora completes.

EJEMPLO

SELECT CONVERT (ADDDATE(NOW(),7) , DATE), ADDDATE('2011-06-01',29);

SELECT CURDATE(), CURTIME(), NOW(); SELECT DATEDIFF('2011-01-01', '2011-02-01'), DATEDIFF('2011-02-01', '2011-01-01');

DATEDIFF(date1,date2) primer fecha con

Diferencia en das de la respecto a la segunda.

Se pueden hacer clculos directos: +/- INTERVAL SELECT '2011-12-31 23:59:59' + INTERVAL 1 SECOND; Valores permitidos: SECOND, MINUTE, HOUR, DAY, WEEK MONTH, QUARTER, YEAR.

MD5(str) CHARSET(str) COLLATION(str) USER() FORMAT(X,D)

Encripta utilizando Algoritmo de Resumen del Mensaje 5 - MessageDigest Algorithm 5 (MD5) --Usuario actual. Representa el valor numrico con D decimales, utiliza redondeo.

SELECT MD5('MipalabraEncriptada'); SELECT CHARSET(COT_A), COLLATION(COT_A) FROM COT1 LIMIT 1;

SELECT FORMAT(1928.574,0), FORMAT(1928.574,1), FORMAT(1928.574,2), FORMAT(1928.574,3);

10.- Ejercicios
No. EJERCICIOS #Crear la siguiente tabla: 1.-

2.-

CREATE TABLE `test`.`usuarios` ( `nombusr` varchar(10) character set latin1 collate latin1_spanish_ci default '_empty_', `apellusr` varchar(10) character set latin1 collate latin1_spanish_ci default '_empty_', `correo` varchar(50) character set utf8 collate utf8_general_ci NOT NULL, `fechaing` date default '2011-01-01', `pagoserv` double default 100 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; #Insertar los valores siguientes: INSERT INTO test.usuarios(nombusr, apellusr, correo, fechaing, pagoserv) VALUES ('NOMBRX001','APELLXY001','@SOLONOMBRE.COM','2009-01-01',250.454), ('NOMBRX002','APELLYZ002','@NOMBREYAPELL.COM','2010-01-01',255.400), ('NOMBRX003','APELLXY003','@SOLOAPELLIDO.COM','2009-02-02',100.500), ('NOMBRX004','APELLXY004','@NOMBREYAPELL.COM','2009-03-03',250.454);

Diseo de base de datos Prctica 07 Duracin 4 horas

Departamento de Computacin UNAN - Len.

3.4.5.6.7.8.9.-

Todos los nombres de usuarios deben quedar de la forma: NOMBRE0x, donde x es el nmero de secuencia 1..4. Todos los apellidos deben quedar APELLIDOx, donde x es un nmero aleatorio entre 1 y 100. Reconstruya todas las direcciones de correo de forma que se unen los nombres y apellidos separados por un .antes del arroba. Listar de la columna correo solo los nombres y apellidos, omitiendo todo el resto luego de aparecer el arroba. Actualice los correos electrnicos de forma que solo pondr antes del arroba, solo el nombre, solo el apellido o ambos de acuerdo a cada dominio. Sumar a la fecha de ingreso el nmero de meses de acuerdo al ltimo dgito de acuerdo a cada apellido. Aadir a cada pago por servicio un inters aleatorio entre el 1..20% del monto ya pagado.

11.- Bibliografa
Manual de referencia espaol: http://dev.mysql.com/doc/refman/5.0/es/ Manual de referencia ltima versin: http://dev.mysql.com/doc/refman/5.6/en/

Vous aimerez peut-être aussi