You are on page 1of 49

MySQL 5.

x
5x
Interplanet

24-10-2007
Hugo Alfonso Palma
Garca

MySQL 5.x

Company

Logo

Temario
Panormica
a o ca de
del ssistema
ste a de gest
gestin
de base de datos MySQL
ySQ
Las principales caractersticas de MySQL
Qu
Q hay
h d
de nuevo en M
MySQL
SQL 5
5.0x
0

Tipo de dato BIT


Ti
Tipo
d dato
de
d t VARCHAR
INFORMATIONS_SCHEME
El gestor de instancias
Matemticas de precisin
Cursores
Procedimientos almacenados y funciones
Disparadores
Vistas

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Panormica del sistema de gestin de base de datos MySQL


Company Logo

z
z
z

MySQL, es el sistema de gestin de bases de datos


SQL Open Source ms popular, lo desarrolla,
distribuye y soporta MySQL AB.
MySQL es un sistema de gestin de bases de datos
relacionales.
M SQL usa SQL estndar,
MySQL
t d llmese
ll
estndar
t d all
ms actual que es el 2003.
El servidor de base de datos MySQL es muy rpido,
fiable y fcil de usar.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Panormica del sistema de gestin de base de datos MySQL


Company Logo

z
z
z

MySQL Server se desarroll originalmente para


t t grandes
tratar
d
b
bases
d datos
de
d t
mucho
h ms
rpido
id
que soluciones existentes.
MySQL Server trabaja en entornos cliente/servidor o
incrustados.
Una gran cantidad de software de contribuciones
est disponible
p
para MySQL.
p
y
La forma oficial de pronunciar "MySQL" es "My Ess
Quiu Ell
Ell" (no "my
my sicuel
sicuel")).

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Las principales caractersticas de MySQL

Company

Logo

Interioridades y portabilidad
Escrito en C y en C++. Probado con un amplio
p rango
g de
compiladores diferentes
} Funciona en diferentes plataformas.
} Usa GNU Automake, Autoconf, y Libtool para portabilidad.
} APIs disponibles
p
para C, C++, Eiffel, Java, Perl, PHP,
p
Python, Ruby, y Tcl.
} Uso completo de multi-threaded mediante threads del
kernel.
} Proporciona sistemas de almacenamiento transaccionales
y no transaccionales.
t
i
l
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Las principales caractersticas de MySQL

Company

Logo

Usa tablas en disco B-tree (MyISAM) muy rpidas con


compresin de ndice.
ndice
} Relativamente sencillo de aadir otro sistema de almacen
amiento.
amiento
} Un sistema de reserva de memoria muy rpido basado en
threads.
} Joins muy rpidos usando un multi-join de un paso
p
optimizado.
} Tablas hash en memoria, que son usadas como tablas
temporales.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Las principales caractersticas de MySQL

Company

Logo

Las funciones SQL estn implementadas


p
usando una libre
ra altamente optimizada.
} Se prueba que el cdigo MySQL no ocasione prdida 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
autnomas.
autnomas
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Las principales caractersticas de MySQL

Company

Logo

Tipos
p de columnas
Diversos tipos de columnas.
} Registros
g
de longitud
g
fija
j y longitud
g
variable.
}

Seguridad
Un sistema de privilegios y contraseas que es muy
flexible y seguro, y que permite verificacin basada en el
host.
} Todo intercambio de informacin esta cifrada.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Las principales caractersticas de MySQL

Company

Logo

Escalabilidad y lmites
Soporte
p
ag
grandes bases de datos.
} 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.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Las principales caractersticas de MySQL

Company

Logo

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.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Las principales caractersticas de MySQL

Company

Logo

Localizacin
El servidor puede proporcionar mensajes de error en muc
hos idiomas.
} Soporte
S
t completo
l t para distintos
di ti t conjuntos
j t d
de caracteres.
t
} Todos los datos se guardan en el conjunto de caracteres
elegido.
elegido
} Todas las comparaciones para columnas normales de cad
enas de carcteres son case
case-insensitive.
insensitive
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Las principales caractersticas de MySQL

Company

Logo

Clientes y herramientas
MySQL
y
server tiene soporte
p
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 lnea.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Company

Logo

Nuevas bondades de
MySQL 5.0x

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Tipo de dato Bit


Tipo

Bytes

Valor Mnimo

Valor Mximo

BIT

64

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Tipo de datos VARCHAR


Soporte nativo VARCHAR.
} La longitud mxima de VARCHAR es 65,532
65 532 bytes.
bytes
} No se cortan espacios en blanco consecutivos
} Almacena los valores usando slo los carcteres
necesarios, ms un byte adicional para la longitud (dos
bytes
y
para columnas q
p
que se declaran con una longitud
g
superior a 255).
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

INFORMATIONS SCHEME
INFORMATIONS_SCHEME
El soporte para INFORMATION_SCHEMA est disponible
en MySQL
y Q 5.0.2 y p
posterior.
} 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 ms consistente de proporcionar acceso a la informacin
proporcionada
i
d por los
l comandos
d SHOW.
SHOW
Cumple las reglas de Codd.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

z
z
z

Company

Logo

Nadie necesita aprender una nueva sintaxis. Conocen cmo


funciona SELECT,
SELECT pero si aprender los nombres de los objetos.
objetos
El implementador no tiene que preocuparse de palabras clave.
Hay
y millones de variaciones de la salida,, en lugar
g de slo una.
Esto proporciona flexibilidad a las aplicaciones con
requerimientos cambiantes acerca de los metadatos que
necesitan.
La migracin es ms fcil ya que todos los otros DBMS funcionan
as.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

El gestor de instancias de MySQL.


Este es el demonio q
que corre en el p
puerto TCP/IP.
} Est disponible para sistemas operativos basados en
Unix.
} MySQL (IM) se incluye en las distribuciones de MySQL
desde la versin 5.0.3.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Creacin de cuentas de usuario


El IM almacena su informacin de usuario en un fichero
de contraseas. La localizacin por defecto para el fichero
de contraseas es /etc/mysqlmanager.passwd
Las entradas para las contraseas se parecen a las
siguiente:
petr:*35110DC9B4D8140F5DE667E28C72DD2597B5C848
} Para generar una entrada as debe invocarse IM con la
opcin passwd y rediccionar la salida al archivo de las
contraseas.
contraseas
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x


z

Company

Logo

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 lnea se aade a /etc/mysqlmanager.passwd:
mike:*00A51F3F48415C7D4E8908980D443C29C69B60C9
Si no hay entradas en el fichero /etc/mysqlmanager.passw
no puede conectarse al IM.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Matemticas de precisin
}

La matemtica de precisin se basa en dos cambios de i


mplementacin:
z

La introduccin de nuevos modos SQL en MySQL 5.0.2 que contr


olan lo estricto que es el servidor para aceptar o rechazar datos in
vlidos.
La introduccin en MySQL 5.0.3 de una biblioteca para aritmtica
de punto fijo.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Estos cambios tienen varias implicaciones para operacion


es numricas:
z
z
z
z
z
z
z

Clculos ms precisos.
Para nmeros exactos, los clculos no introducen error en coma fl
otante.
otante
Comportamiento bien definido para el redondeo.
Independencia de plataforma mejorada.
Control sobre tratamiento de datos invlidos.
Desbordamiento y divisin 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 estndar SQL.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Cambios en el tipo de datos DECIMAL


Formato de almacenamiento
} Las extensiones MySQL no estndar al rango superior de
columnas
l
DECIMAL
} El rango de valores para los argumentos de DECIMAL ha
cambiado.
cambiado
} La extensin no estndard MySQL del rango superior de
columnas DECIMAL no se soporta.
soporta
} Los carcteres precedentes '+' y '0' no se almacenan.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Cursores
Se soportan
S
t cursores simples
i l dentro
d t de
d procedimientos
di i t y
funciones almacenadas.
} Sirven para almacenar valores retornados por un
SELECT en procedimientos almacenados.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x


z

Company

Logo

Ejemplo de cursor

CREATE PROCEDURE curdemo()


BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b
b,c INT
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
Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

P
Procedimientos
di i t almacenados
l
d y funciones
f
i
}

Un procedimiento almacenado es un conjunto de


comandos
d SQL que pueden
d almacenarse
l
en ell servidor.
id
z

Situaciones en las que los procedimientos almacenados pueden


ser muy tiles:
} Cuando mltiples 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 tambin usa IBM DB2.
} La implementacin en MySQL an est en progreso.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Ejemplo
j p de p
procedimiento
mysql> delimiter //
mysql>
y q CREATE PROCEDURE simpleproc
p p
((OUT p
param1
INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END
-> //
mysql>
y q delimiter ;

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Ejecucin:
mysql> CALL simpleproc(@a);
mysql> SELECT @a;
| @a |
+
+------+
+
|3
|
+
+------+
+
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Ejemplo de funcin:
mysql> delimiter //
mysql> CREATE FUNCTION hello (s CHAR(20)) RETURN
S CHAR(50)
-> RETURN CONCAT('Hello, ',s,'!');
-> //
mysql> delimiter ;

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Ejecucin:
mysql> SELECT hello('world');
+
+------------------+
+
| hello('world') |
+------------------+
| Hello, world! |
+
+------------------+
+

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Logo

ALTER PROCEDURE y ALTER FUNCTION


}

Company

Este comando cambia las caractersticas


procedimiento o funcin almacenada.
p

de

un

DROP PROCEDURE y DROP FUNCTION


}

Este comando borrar un procedimiento o funcin


almacenado.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Logo

SHOW CREATE PROCEDURE y SHOW CREATE


FUNCTION
}

Company

Retorna la cadena exacta que puede usarse para recrear


la rutina nombrada.

SHOW PROCEDURE STATUS y SHOW FUNCTIO


N STATUS
Retorna caractersticas de rutinas
rutinas, como el nombre de la
base de datos, nombre, tipo, creador y fechas de creaci
n y modificacin.
} Tambin puede obtener informacin de rutinas almacena
_
das de la tabla ROUTINES en INFORMATION_SCHEMA.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Disparadores
p
((triggers)
gg )
A partir de MySQL 5.0.2 se incorpor el soporte bsico
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.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

momento_disp es el momento en que el disparador entra

en accin.
accin Puede ser BEFORE (antes) o AFTER (despues
).
} evento_disp
evento disp indica la clase de sentencia que activa al disp
arador. Puede ser INSERT, UPDATE, o DELETE. Por eje
mplo,
p un disparador
p
BEFORE p
para sentencias INSERT p
po
dra utilizarse para validar los valores a insertar.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

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 mltiples
sentencias, deben colocarse entre BEGIN ... END, el
constructor de sentencias compuestas.
} Antes
A t
d MySQL
de
M SQL 5.0.10,
5 0 10 los
l
di
disparadores
d
no podan
d
contener referencias directas a tablas por su nombre. A
partir de MySQL 5.0.10,
5 0 10 se pueden escribir disparadores
como el llamado testref, que se muestra en el siguiente e
jemplo:
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

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 ;
Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

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 claves
cla es extranjeras
e tranjeras
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Elimina un disparador.

FOR EACH ROW


}

Logo

DROP TRIGGER
}

Company

Define lo que se ejecutar cada vez que el disparador se


active lo cual ocurre una vez por cada fila afectada por la
active,
sentencia activadora.

OLD y NEW
}

El disparador no puede referirse a tablas directamente por


su nombre,
nombre incluyendo la misma tabla a la que est
asociado. Sin embargo, se pueden emplear las palabras
clave OLD y NEW.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

z
z
z

Company

Logo

El disparador no puede invocar procedimientos


almacenados utilizando la sentencia CALL.
El disparador
di
d
no puede
d utilizar
ili
sentencias
i
que
inicien o finalicen una transaccin.
En un disparador para INSERT, solamente puede
utilizarse NEW.nom_col.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

z
z

Company

Logo

En un disparador
p
para DELETE slo p
p
puede
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 slo lectura.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Una columna precedida por NEW puede ser


referenciada si se tiene el privilegio SELECT sobre
ella. En un disparador BEFORE, tambin 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.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

z
z

Company

Logo

Si falla es un disparador BEFORE, no se ejecuta la


operacin en el correspondiente registro.
Un disparador AFTER se ejecuta solamente si el dis
parador BEFORE (de existir) y la operacin se
ejecutaron exitosamente.
exitosamente
Un error durante la ejecucin de un disparador
BEFORE o AFTER deriva
deri a en la falla de toda la
sentencia que provoc la invocacin del disparador.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

En tablas transaccionales, la falla de un disparador


(y por lo tanto de toda la sentencia) debera causar
la cancelacin (rollback) de todos los cambios
realizados por esa sentencia

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Vistas (Views)
(
)
Las vistas (incluyendo vistas actualizables) fueron introdu
cidas en la versin 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.
}

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2


-> WITH CHECK OPTION;

Que hay de nuevo en MySQL 5.0x

Company

Logo

CREATE VIEW
z
z

Esta sentencia crea una vista nueva o reemplaza una existente si


se incluye la clusula OR REPLACE
REPLACE.
Ejemplo
CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2 WITH
CHECK OPTION;

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

La definicin de una vista est sujeta a las siguientes limitaciones:


} La sentencia SELECT no puede contener una subconsulta en
su clusula FROM.
} La sentencia SELECT no puede hacer referencia a variables d
el sistema o del usuario.
} La sentencia SELECT no puede hacer referencia a parmetro
s de
d sentencia
t
i preparados.
d
} Dentro de una rutina almacenada, la definicin no puede hace
r referencia a p
parmetros de la rutina o a variables locales.
} Cualquier tabla o vista referenciada por la definicin debe exist
ir.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

Algunas vistas son actualizables.


z

La opcion WITH CHECK OPTION puede utilizarse en una vista act


ualizable para evitar inserciones o actualizaciones excepto en los r
egistros
g
en q
que la clusula WHERE de la sentencia_select se eval
e como true.
En la clusula WITH CHECK OPTION de una vista actualizable, la
s palabras reservadas LOCAL y CASCADED determinan el alcanc
e de la verificacin

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Logo

ALTER VIEW
z
z

Company

Esta sentencia modifica la definicin de una vista existente


Esta sentencia se introdujo en MySQL 5.0.1.
501

DROP VIEW
z

Elimina una o ms vistas de la base de datos


datos.

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

Que hay de nuevo en MySQL 5.0x

Company

Logo

zFIN

Copyright by ARTCOM PT All rights reserved.

www.art-com.co.kr

You might also like