Contenu connexe Similaire à Exposicion Mysql (20) Exposicion Mysql1. MySQL 5 x
5.x
Interplanet
24-10-2007
Hugo Alfonso Palma
García 2. MySQL 5.x Logo
Company
Temario
– Panorámica de s ste a de gest ó de base de datos MySQL
a o á ca del sistema gestión ySQ
– Las principales características de MySQL
– Q é hay d nuevo en M SQL 5 0
Qué h de MySQL 5.0x
– Tipo de dato BIT
– Ti
Tipo d d t VARCHAR
de dato
– INFORMATIONS_SCHEME
– El gestor de instancias
– Matemáticas de precisión
– Cursores
– Procedimientos almacenados y funciones
– Disparadores
– Vistas
2 www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 3. Panorámica del sistema de gestión de base de datos MySQL Logo
Company
MySQL, es el sistema de gestión de bases de datos
SQL Open Source más popular, lo desarrolla,
distribuye y soporta MySQL AB.
MySQL es un sistema de gestión de bases de datos
relacionales.
M SQL usa “SQL estándar”, llá
MySQL tá d ” llámese estándar al
tá d l
más actual que es el 2003.
El servidor de base de datos MySQL es muy rápido,
fiable y fácil de usar.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 4. Panorámica del sistema de gestión de base de datos MySQL Logo
Company
MySQL Server se desarrolló originalmente para
tratar
t t grandes b
d bases d d t
de datos mucho más rápido
h á á id
que soluciones existentes.
MySQL Server trabaja en entornos cliente/servidor o
incrustados.
Una gran cantidad de software de contribuciones
está disponible para MySQL.
p p y
La forma oficial de pronunciar quot;MySQLquot; es quot;My Ess
Quiu Ellquot; (no quot;my sicuelquot;)
Ell my sicuel ).
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 5. Las principales características de MySQL
Logo
Company
Interioridades y portabilidad
Escrito en C y en C++. Probado con un amplio rango de
p g
compiladores diferentes
Funciona en diferentes plataformas.
Usa GNU Automake, Autoconf, y Libtool para portabilidad.
APIs disponibles para C, C++, Eiffel, Java, Perl, PHP,
p p
Python, Ruby, y Tcl.
Uso completo de multi-threaded mediante threads del
kernel.
Proporciona sistemas de almacenamiento transaccionales
y no t
transaccionales.
i l
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 6. Las principales características de MySQL
Logo
Company
Usa tablas en disco B-tree (MyISAM) muy rápidas con
compresión de índice
índice.
Relativamente sencillo de añadir otro sistema de almacen
amiento.
amiento
Un sistema de reserva de memoria muy rápido basado en
threads.
Joins muy rápidos usando un multi-join de un paso
optimizado.
p
Tablas hash en memoria, que son usadas como tablas
temporales.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 7. Las principales características de MySQL
Logo
Company
Las funciones SQL están implementadas usando una libre
p
ría altamente optimizada.
Se prueba que el código MySQL no ocasione pérdida de
memoria con software comercial.
El servidor está disponible como un programa separado
para usar en un entorno de red cliente/servidor o bien
como biblioteca y puede ser incrustado en aplicaciones
autónomas.
autónomas
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 8. Las principales características de MySQL
Logo
Company
Tipos de columnas
p
Diversos tipos de columnas.
Registros de longitud fija y longitud variable.
g g j g
Seguridad
Un sistema de privilegios y contraseñas que es muy
flexible y seguro, y que permite verificación basada en el
host.
Todo intercambio de información esta cifrada.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 9. Las principales características de MySQL
Logo
Company
Escalabilidad y límites
Soporte a grandes bases de datos.
p g
Se permiten hasta 64 índices por tabla y 32 antes de
MySQL 4.1.2.
Un índice puede usar prefijos de una columna para los
tipos de columna CHAR, VARCHAR, BLOB, o TEXT.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 10. Las principales características de MySQL
Logo
Company
Conectividad
Los clientes pueden conectar con el servidor MySQL usan
do sockets TCP/IP en cualquier plataforma
plataforma.
La interfaz para el conector ODBC (MyODBC).
La interfaz para el conector J MySQL
MySQL.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 11. Las principales características de MySQL
Logo
Company
Localización
El servidor puede proporcionar mensajes de error en muc
hos idiomas.
Soporte completo para distintos conjuntos d caracteres.
S t lt di ti t j t de t
Todos los datos se guardan en el conjunto de caracteres
elegido.
elegido
Todas las comparaciones para columnas normales de cad
enas de carácteres son case insensitive
case-insensitive.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 12. Las principales características de MySQL
Logo
Company
Clientes y herramientas
MySQL server tiene soporte p
y p para comandos SQL p para c
hequear, optimizar, y reparar tablas.
Todos los programas MySQL pueden invocarse con las
opciones --help o -? para obtener asistencia en línea.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 13. Logo
Company
Nuevas bondades de
MySQL 5.0x
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 14. Que hay de nuevo en MySQL 5.0x Logo
Company
Tipo de dato Bit
Tipo Bytes Valor Mínimo Valor Máximo
BIT 1 1 64
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 15. Que hay de nuevo en MySQL 5.0x Logo
Company
Tipo de datos VARCHAR
Soporte nativo VARCHAR.
La longitud máxima de VARCHAR es 65 532 bytes
65,532 bytes.
No se cortan espacios en blanco consecutivos
Almacena los valores usando sólo los carácteres
necesarios, más un byte adicional para la longitud (dos
bytes para columnas que se declaran con una longitud
y p q g
superior a 255).
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 16. Que hay de nuevo en MySQL 5.0x Logo
Company
INFORMATIONS_SCHEME
INFORMATIONS SCHEME
El soporte para INFORMATION_SCHEMA está disponible
en MySQL 5.0.2 y posterior.
yQ p
Proporciona acceso a los metadatos de la base de datos.
Ventajas de SELECT contra el show.
El comando SELECT ... FROM INFORMATION_SCHEMA es una
forma más consistente de proporcionar acceso a la información
proporcionada por l comandos SHOW
i d los d SHOW.
Cumple las reglas de Codd.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 17. Que hay de nuevo en MySQL 5.0x Logo
Company
Nadie necesita aprender una nueva sintaxis. Conocen cómo
funciona SELECT pero si aprender los nombres de los objetos
SELECT, objetos.
El implementador no tiene que preocuparse de palabras clave.
Hay millones de variaciones de la salida, en lugar de sólo una.
y , g
Esto proporciona flexibilidad a las aplicaciones con
requerimientos cambiantes acerca de los metadatos que
necesitan.
La migración es más fácil ya que todos los otros DBMS funcionan
así.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 18. Que hay de nuevo en MySQL 5.0x Logo
Company
El gestor de instancias de MySQL.
Este es el demonio que corre en el puerto TCP/IP.
q p
Está disponible para sistemas operativos basados en
Unix.
MySQL (IM) se incluye en las distribuciones de MySQL
desde la versión 5.0.3.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 19. Que hay de nuevo en MySQL 5.0x Logo
Company
Creación de cuentas de usuario
El IM almacena su información de usuario en un fichero
de contraseñas. La localización por defecto para el fichero
de contraseñas es /etc/mysqlmanager.passwd
Las entradas para las contraseñas se parecen a las
siguiente:
petr:*35110DC9B4D8140F5DE667E28C72DD2597B5C848
Para generar una entrada así debe invocarse IM con la
opción –passwd y rediccionar la salida al archivo de las
contraseñas.
contraseñas
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 20. Que hay de nuevo en MySQL 5.0x Logo
Company
Ejemplo de registro de usuario.
./mysqlmanager --passwd >> /etc/mysqlmanager.passwd
Creating record for new user.
Enter user name: mike
Enter password: <password>
Re-type password: <password>
La siguiente línea se añade a /etc/mysqlmanager.passwd:
mike:*00A51F3F48415C7D4E8908980D443C29C69B60C9
Si no hay entradas en el fichero /etc/mysqlmanager.passw
no puede conectarse al IM.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 21. Que hay de nuevo en MySQL 5.0x Logo
Company
Matemáticas de precisión
La matemática de precisión se basa en dos cambios de i
mplementación:
La introducción de nuevos modos SQL en MySQL 5.0.2 que contr
olan lo estricto que es el servidor para aceptar o rechazar datos in
válidos.
La introducción en MySQL 5.0.3 de una biblioteca para aritmética
de punto fijo.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 22. Que hay de nuevo en MySQL 5.0x Logo
Company
Estos cambios tienen varias implicaciones para operacion
es numéricas:
Cálculos más precisos.
Para números exactos, los cálculos no introducen error en coma fl
otante.
otante
Comportamiento bien definido para el redondeo.
Independencia de plataforma mejorada.
Control sobre tratamiento de datos inválidos.
Desbordamiento y división por cero pueden detectarse y tratarse c
omo errores.
errores
Un resultado importante de estos cambios es que MySQL proporci
ona un mejor cumplimiento del estándar SQL.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 23. Que hay de nuevo en MySQL 5.0x Logo
Company
Cambios en el tipo de datos DECIMAL
Formato de almacenamiento
Las extensiones MySQL no estándar al rango superior de
columnas DECIMAL
l
El rango de valores para los argumentos de DECIMAL ha
cambiado.
cambiado
La extensión no estándard MySQL del rango superior de
columnas DECIMAL no se soporta
soporta.
Los carácteres precedentes '+' y '0' no se almacenan.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 24. Que hay de nuevo en MySQL 5.0x Logo
Company
Cursores
Se
S soportan cursores simples d t d procedimientos y
t i l dentro de di i t
funciones almacenadas.
Sirven para almacenar valores retornados por un
SELECT en procedimientos almacenados.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 25. Que hay de nuevo en MySQL 5.0x Logo
Company
Ejemplo de cursor
CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b INT
b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c; ;
IF NOT done THEN
IF b < c THEN
INSERT INTO test.t3 VALUES (a,b);
ELSE
INSERT INTO test.t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1; 1
CLOSE cur2;
END
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 26. Que hay de nuevo en MySQL 5.0x Logo
Company
Procedimientos almacenados y f
P di i t l d funciones
i
Un procedimiento almacenado es un conjunto de
comandos SQL que pueden almacenarse en el servidor.
d d l l id
Situaciones en las que los procedimientos almacenados pueden
ser muy útiles:
Cuando múltiples aplicaciones cliente se escriben en distintos
lenguajes o funcionan en distintas plataformas.
Cuando la seguridad es muy importante.
Pueden mejorar el rendimiento.
MySQL sigue la sintaxis SQL:2003 para procedimientos
almacenados, que también usa IBM DB2.
La implementación en MySQL aún está en progreso.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 27. Que hay de nuevo en MySQL 5.0x Logo
Company
Ejemplo de procedimiento
jp p
mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT param1
yq pp ( p
INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END
-> //
mysql> delimiter ;
yq
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 28. Que hay de nuevo en MySQL 5.0x Logo
Company
Ejecución:
mysql> CALL simpleproc(@a);
mysql> SELECT @a;
| @a |
+
+------+
+
|3 |
+
+------+
+
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 29. Que hay de nuevo en MySQL 5.0x Logo
Company
Ejemplo de función:
mysql> delimiter //
mysql> CREATE FUNCTION hello (s CHAR(20)) RETURN
S CHAR(50)
-> RETURN CONCAT('Hello, ',s,'!');
-> //
mysql> delimiter ;
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 30. Que hay de nuevo en MySQL 5.0x Logo
Company
Ejecución:
mysql> SELECT hello('world');
+
+------------------+
+
| hello('world') |
+------------------+
| Hello, world! |
+------------------+
+ +
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 31. Que hay de nuevo en MySQL 5.0x Logo
Company
ALTER PROCEDURE y ALTER FUNCTION
Este comando cambia las características de un
p
procedimiento o función almacenada.
DROP PROCEDURE y DROP FUNCTION
Este comando borrar un procedimiento o función
almacenado.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 32. Que hay de nuevo en MySQL 5.0x Logo
Company
SHOW CREATE PROCEDURE y SHOW CREATE
FUNCTION
Retorna la cadena exacta que puede usarse para recrear
la rutina nombrada.
SHOW PROCEDURE STATUS y SHOW FUNCTIO
N STATUS
Retorna características de rutinas como el nombre de la
rutinas,
base de datos, nombre, tipo, creador y fechas de creació
n y modificación.
También puede obtener información de rutinas almacena
das de la tabla ROUTINES en INFORMATION_SCHEMA.
_
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 33. Que hay de nuevo en MySQL 5.0x Logo
Company
Disparadores (triggers)
p ( gg )
A partir de MySQL 5.0.2 se incorporó el soporte básico
para disparadores (triggers).
Un disparador es un objeto con nombre dentro de una
base de datos el cual se asocia con una tabla y se activa
cuando ocurre en ésta un evento en particular.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 34. Que hay de nuevo en MySQL 5.0x Logo
Company
momento_disp es el momento en que el disparador entra
en acción. Puede ser BEFORE (antes) o AFTER (despues
acción
).
evento_disp
evento disp indica la clase de sentencia que activa al disp
arador. Puede ser INSERT, UPDATE, o DELETE. Por eje
mplo, un disparador BEFORE para sentencias INSERT po
p p p p
dría utilizarse para validar los valores a insertar.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 35. Que hay de nuevo en MySQL 5.0x Logo
Company
No puede haber dos disparadores en una misma tabla
que correspondan al mismo momento y evento.
sentencia_disp es la sentencia que se ejecuta cuando se
activa el disparador. Si se desean ejecutar múltiples
sentencias, deben colocarse entre BEGIN ... END, el
constructor de sentencias compuestas.
Antes d M SQL 5 0 10 l
At de MySQL 5.0.10, los di disparadores no podían
d dí
contener referencias directas a tablas por su nombre. A
partir de MySQL 5 0 10 se pueden escribir disparadores
5.0.10,
como el llamado testref, que se muestra en el siguiente e
jemplo:
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 36. Que hay de nuevo en MySQL 5.0x Logo
Company
DELIMITER |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END
|
DELIMITER ;
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 37. Que hay de nuevo en MySQL 5.0x Logo
Company
Las columnas de la tabla asociada con el disparador
pueden referenciarse empleando los alias OLD y NEW.
Actualmente, los disparadores no son activados por
acciones llevadas a cabo en cascada por las restricciones
de cla es e tranjeras
claves extranjeras
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 38. Que hay de nuevo en MySQL 5.0x Logo
Company
DROP TRIGGER
Elimina un disparador.
FOR EACH ROW
Define lo que se ejecutará cada vez que el disparador se
active,
active lo cual ocurre una vez por cada fila afectada por la
sentencia activadora.
OLD y NEW
El disparador no puede referirse a tablas directamente por
su nombre incluyendo la misma tabla a la que está
nombre,
asociado. Sin embargo, se pueden emplear las palabras
clave OLD y NEW.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 39. Que hay de nuevo en MySQL 5.0x Logo
Company
El disparador no puede invocar procedimientos
almacenados utilizando la sentencia CALL.
El didisparador no puede utilizar sentencias que
d d ili i
inicien o finalicen una transacción.
En un disparador para INSERT, solamente puede
utilizarse NEW.nom_col.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 40. Que hay de nuevo en MySQL 5.0x Logo
Company
En un disparador para DELETE sólo puede
p p p
emplearse OLD.nom_col.
En un disparador para UPDATE se puede emplear
OLD.nom_col y NEW.nom_col para referirse a las
columnas del registro luego de actualizarlo
actualizarlo.
Una columna precedida por OLD es de sólo lectura.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 41. Que hay de nuevo en MySQL 5.0x Logo
Company
Una columna precedida por NEW puede ser
referenciada si se tiene el privilegio SELECT sobre
ella. En un disparador BEFORE, también es posible
cambiar su valor con SET NEW.nombre_col = valor
si se tiene el privilegio de UPDATE sobre ella.
En un disparador BEFORE, el valor de NEW para
una columna AUTO_INCREMENT es 0.
_
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 42. Que hay de nuevo en MySQL 5.0x Logo
Company
Si falla es un disparador BEFORE, no se ejecuta la
operación en el correspondiente registro.
Un disparador AFTER se ejecuta solamente si el dis
parador BEFORE (de existir) y la operación se
ejecutaron exitosamente
exitosamente.
Un error durante la ejecución de un disparador
BEFORE o AFTER deri a en la falla de toda la
deriva
sentencia que provocó la invocación del disparador.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 43. Que hay de nuevo en MySQL 5.0x Logo
Company
En tablas transaccionales, la falla de un disparador
(y por lo tanto de toda la sentencia) debería causar
la cancelación (rollback) de todos los cambios
realizados por esa sentencia
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 44. Que hay de nuevo en MySQL 5.0x Logo
Company
Vistas (Views)
( )
Las vistas (incluyendo vistas actualizables) fueron introdu
cidas en la versión 5.0 del servidor de base de datos MyS
QL
Las vistas son útiles para permitir acceder a los usuarios a
un conjunto de relaciones (tablas) como si fueran una sola
, y limitar su acceso a las mismas.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 45. CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2
Que hay de nuevo en MySQL 5.0x
-> WITH CHECK OPTION;
Logo
Company
CREATE VIEW
Esta sentencia crea una vista nueva o reemplaza una existente si
se incluye la cláusula OR REPLACE
REPLACE.
Ejemplo
CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2 WITH
CHECK OPTION;
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 46. Que hay de nuevo en MySQL 5.0x Logo
Company
La definición de una vista está sujeta a las siguientes limitaciones:
La sentencia SELECT no puede contener una subconsulta en
su cláusula FROM.
La sentencia SELECT no puede hacer referencia a variables d
el sistema o del usuario.
La sentencia SELECT no puede hacer referencia a parámetro
s d sentencia preparados.
de t i d
Dentro de una rutina almacenada, la definición no puede hace
r referencia a parámetros de la rutina o a variables locales.
p
Cualquier tabla o vista referenciada por la definición debe exist
ir.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 47. Que hay de nuevo en MySQL 5.0x Logo
Company
Algunas vistas son actualizables.
La opcion WITH CHECK OPTION puede utilizarse en una vista act
ualizable para evitar inserciones o actualizaciones excepto en los r
egistros en q la cláusula WHERE de la sentencia_select se eval
g que
úe como true.
En la cláusula WITH CHECK OPTION de una vista actualizable, la
s palabras reservadas LOCAL y CASCADED determinan el alcanc
e de la verificación
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 48. Que hay de nuevo en MySQL 5.0x Logo
Company
ALTER VIEW
Esta sentencia modifica la definición de una vista existente
Esta sentencia se introdujo en MySQL 5.0.1.
501
DROP VIEW
Elimina una o más vistas de la base de datos
datos.
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved. 49. Que hay de nuevo en MySQL 5.0x Logo
Company
FIN
www.art-com.co.kr
Copyright © by ARTCOM PT All rights reserved.