24-10-2007 Interplanet MySQL 5.x Hugo Alfonso Palma García
Temario Panorámica del sistema de gestión de base de datos MySQL Las principales características de MySQL Qué hay de nuevo en MySQL 5.0x Tipo de dato BIT Tipo de dato VARCHAR INFORMATIONS_SCHEME El gestor de instancias Matemáticas de precisión Cursores Procedimientos almacenados y funciones Disparadores Vistas MySQL 5.x
Panorámica del sistema de gestión de base de datos MySQL 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. MySQL usa “SQL estándar”, llámese estándar al más actual que es el 2003. El servidor de base de datos MySQL es muy rápido, fiable y fácil de usar.
Panorámica del sistema de gestión de base de datos MySQL MySQL Server se desarrolló originalmente para tratar grandes bases de datos mucho más rápido que soluciones existentes. MySQL Server trabaja en entornos cliente/servidor o incrustados. Una gran cantidad de software de contribuciones está disponible para MySQL. La forma oficial de pronunciar "MySQL" es "My Ess Quiu Ell" (no "my sicuel").
Interioridades y portabilidad  Escrito en C y en C++. Probado con un amplio rango de  compiladores diferentes  Funciona en diferentes plataformas.  Usa GNU Automake, Autoconf, y Libtool para portabilidad.  APIs disponibles para C, C++, Eiffel, Java, Perl, PHP,  Python, Ruby, y Tcl.  Uso completo de multi-threaded mediante threads del  kernel.  Proporciona sistemas de almacenamiento transaccionales y no transaccionales.  Las principales características de MySQL
Usa tablas en disco B-tree ( MyISAM ) muy rápidas con  compresión de índice.  Relativamente sencillo de añadir otro sistema de almacenamiento.  Un sistema de reserva de memoria muy rápido basado en threads.  Joins muy rápidos usando un multi-join de un paso  optimizado.  Tablas hash en memoria, que son usadas como tablas  temporales.  Las principales características de MySQL
Las funciones SQL están implementadas usando una librerí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.  Las principales características de MySQL
Tipos de columnas  Diversos tipos de columnas.  Registros de longitud fija y longitud variable.  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. Las principales características de MySQL
Escalabilidad y límites  Soporte a 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 .  Las principales características de MySQL
Conectividad   Los clientes pueden conectar con el servidor MySQL usando sockets TCP/IP en cualquier plataforma.  La interfaz para el conector ODBC (MyODBC). La interfaz para el conector J MySQL.  Las principales características de MySQL
Localización  El servidor puede proporcionar mensajes de error en  muchos idiomas.  Soporte completo para distintos conjuntos de caracteres. Todos los datos se guardan en el conjunto de caracteres elegido.  Todas las comparaciones para columnas normales de  cadenas de carácteres son case-insensitive.  Las principales características de MySQL
Clientes y herramientas  MySQL server tiene soporte para comandos SQL para chequear, optimizar, y reparar tablas. Todos los programas MySQL pueden invocarse con las opciones  --help  o  -?  para obtener asistencia en línea.  Las principales características de MySQL
Nuevas bondades de  MySQL 5.0x
Que hay de nuevo en MySQL 5.0x Tipo de dato Bit Tipo Bytes Valor Mínimo Valor Máximo BIT 1 1 64
Que hay de nuevo en MySQL 5.0x Tipo de datos  VARCHAR Soporte nativo  VARCHAR .  La longitud máxima de  VARCHAR  es 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  superior a 255).
Que hay de nuevo en MySQL 5.0x INFORMATIONS_SCHEME El soporte para INFORMATION_SCHEMA está disponible en MySQL 5.0.2 y 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 más consistente de proporcionar acceso a la información  proporcionada por los comandos SHOW. Cumple las reglas de Codd.
Que hay de nuevo en MySQL 5.0x Nadie necesita aprender una nueva sintaxis. Conocen cómo  funciona SELECT, pero si aprender los nombres de los objetos.  El implementador no tiene que preocuparse de palabras clave.  Hay millones de variaciones de la salida, en lugar de sólo una.  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í.
Que hay de nuevo en MySQL 5.0x El gestor de instancias de MySQL. Este es el demonio que corre en el puerto TCP/IP. Está disponible para sistemas operativos basados en  Unix.  MySQL (IM) se incluye en las distribuciones de MySQL  desde la versión 5.0.3.
Que hay de nuevo en MySQL 5.0x 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.
Que hay de nuevo en MySQL 5.0x 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.
Que hay de nuevo en MySQL 5.0x Matemáticas de precisión La matemática de precisión se basa en dos cambios de  implementación:  La introducción de nuevos modos SQL en MySQL 5.0.2 que  controlan lo estricto que es el servidor para aceptar o rechazar  datos inválidos.  La introducción en MySQL 5.0.3 de una biblioteca para aritmética de punto fijo.
Que hay de nuevo en MySQL 5.0x Estos cambios tienen varias implicaciones para operaciones numéricas:  Cálculos más precisos.  Para números exactos, los cálculos no introducen error en coma flotante.  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 como errores.  Un resultado importante de estos cambios es que MySQL proporciona un mejor cumplimiento del estándar SQL.
Que hay de nuevo en MySQL 5.0x Cambios en el tipo de datos DECIMAL Formato de almacenamiento  Las extensiones MySQL no estándar al rango superior de columnas  DECIMAL   El rango de valores para los argumentos de DECIMAL ha cambiado.  La extensión no estándard MySQL del rango superior de  columnas  DECIMAL  no se soporta.  Los carácteres precedentes ' + ' y ' 0 ' no se almacenan.
Que hay de nuevo en MySQL 5.0x Cursores Se soportan cursores simples dentro de procedimientos y funciones almacenadas. Sirven para almacenar valores retornados por un  SELECT en procedimientos almacenados.
Que hay de nuevo en MySQL 5.0x Ejemplo de cursor CREATE PROCEDURE curdemo() BEGIN DECLARE done INT DEFAULT 0; DECLARE a CHAR(16); DECLARE 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; CLOSE cur2; END
Que hay de nuevo en MySQL 5.0x Procedimientos almacenados y funciones Un procedimiento almacenado es un conjunto de  comandos SQL que pueden almacenarse en el servidor.  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.
Que hay de nuevo en MySQL 5.0x Ejemplo de procedimiento mysql> delimiter // mysql> CREATE PROCEDURE simpleproc (OUT param1  INT) -> BEGIN ->  SELECT COUNT(*) INTO param1 FROM t; -> END -> // mysql> delimiter ;
Que hay de nuevo en MySQL 5.0x Ejecución: mysql> CALL simpleproc(@a); mysql> SELECT @a; | @a  | +------+ | 3  | +------+
Que hay de nuevo en MySQL 5.0x Ejemplo de función:  mysql> delimiter // mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) -> RETURN CONCAT('Hello, ',s,'!'); -> // mysql> delimiter ;
Que hay de nuevo en MySQL 5.0x Ejecución: mysql> SELECT hello('world'); +------------------+ | hello('world') | +------------------+ | Hello, world!  | +------------------+
Que hay de nuevo en MySQL 5.0x ALTER PROCEDURE y ALTER FUNCTION Este comando cambia las características de un  procedimiento o función almacenada.  DROP PROCEDURE y DROP FUNCTION Este comando borrar un procedimiento o función  almacenado.
Que hay de nuevo en MySQL 5.0x SHOW CREATE PROCEDURE y SHOW CREATE FUNCTION Retorna la cadena exacta que puede usarse para recrear la rutina nombrada.  SHOW PROCEDURE STATUS y SHOW FUNCTION STATUS Retorna características de rutinas, como el nombre de la base de datos, nombre, tipo, creador y fechas de creación y modificación.  También puede obtener información de rutinas almacenadas de la tabla  ROUTINES  en  INFORMATION_SCHEMA .
Que hay de nuevo en MySQL 5.0x Disparadores  (triggers) 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.
Que hay de nuevo en MySQL 5.0x momento_disp  es el momento en que el disparador entra en acción. Puede ser  BEFORE  (antes) o  AFTER  (despues).  evento_disp  indica la clase de sentencia que activa al disparador. Puede ser  INSERT ,  UPDATE , o  DELETE . Por ejemplo, un disparador  BEFORE  para sentencias  INSERT  podría utilizarse para validar los valores a insertar.
Que hay de nuevo en MySQL 5.0x 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 de MySQL 5.0.10, los disparadores no podían  contener referencias directas a tablas por su nombre. A  partir de MySQL 5.0.10, se pueden escribir disparadores  como el llamado  testref , que se muestra en el siguiente  ejemplo:
Que hay de nuevo en MySQL 5.0x 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 ;
Que hay de nuevo en MySQL 5.0x 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 extranjeras
Que hay de nuevo en MySQL 5.0x DROP TRIGGER Elimina un disparador.  FOR EACH ROW Define lo que se ejecutará cada vez que el disparador se 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á  asociado. Sin embargo, se pueden emplear las palabras  clave  OLD  y  NEW .
Que hay de nuevo en MySQL 5.0x El disparador no puede invocar procedimientos  almacenados utilizando la sentencia  CALL .  El disparador no puede utilizar sentencias que  inicien o finalicen una transacción. En un disparador para  INSERT , solamente puede  utilizarse  NEW. nom_col.
Que hay de nuevo en MySQL 5.0x En un disparador para  DELETE  sólo 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.  Una columna precedida por  OLD  es de sólo lectura.
Que hay de nuevo en MySQL 5.0x 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.
Que hay de nuevo en MySQL 5.0x Si falla es un disparador  BEFORE , no se ejecuta la operación en el correspondiente registro.  Un disparador  AFTER  se ejecuta solamente si el disparador  BEFORE  (de existir) y la operación se  ejecutaron exitosamente.  Un error durante la ejecución de un disparador  BEFORE  o  AFTER  deriva en la falla de toda la  sentencia que provocó la invocación del disparador.
Que hay de nuevo en MySQL 5.0x 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
Que hay de nuevo en MySQL 5.0x Vistas (Views) Las vistas (incluyendo vistas actualizables) fueron introducidas en la versión 5.0 del servidor de base de datos MySQL  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.
Que hay de nuevo en MySQL 5.0x CREATE VIEW Esta sentencia crea una vista nueva o reemplaza una existente si se incluye la cláusula  OR REPLACE. Ejemplo CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2 WITH CHECK OPTION; CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2 -> WITH CHECK OPTION;
Que hay de nuevo en MySQL 5.0x 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 del sistema o del usuario.  La sentencia  SELECT  no puede hacer referencia a parámetros de sentencia preparados.  Dentro de una rutina almacenada, la definición no puede hacer referencia a parámetros de la rutina o a variables locales.  Cualquier tabla o vista referenciada por la definición debe existir.
Que hay de nuevo en MySQL 5.0x Algunas vistas son actualizables. La opcion  WITH CHECK OPTION  puede utilizarse en una vista actualizable para evitar inserciones o actualizaciones excepto en los registros en que la cláusula  WHERE  de la  sentencia_select  se evalúe como true.  En la cláusula  WITH CHECK OPTION  de una vista actualizable, las palabras reservadas  LOCAL  y  CASCADED  determinan el alcance de la verificación
Que hay de nuevo en MySQL 5.0x ALTER VIEW Esta sentencia modifica la definición de una vista existente Esta sentencia se introdujo en MySQL 5.0.1.  DROP VIEW Elimina una o más vistas de la base de datos.
Que hay de nuevo en MySQL 5.0x FIN

Exposicion Mysql

  • 1.
    24-10-2007 Interplanet MySQL5.x Hugo Alfonso Palma García
  • 2.
    Temario Panorámica delsistema de gestión de base de datos MySQL Las principales características de MySQL Qué hay de nuevo en MySQL 5.0x Tipo de dato BIT Tipo de dato VARCHAR INFORMATIONS_SCHEME El gestor de instancias Matemáticas de precisión Cursores Procedimientos almacenados y funciones Disparadores Vistas MySQL 5.x
  • 3.
    Panorámica del sistemade gestión de base de datos MySQL 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. MySQL usa “SQL estándar”, llámese estándar al más actual que es el 2003. El servidor de base de datos MySQL es muy rápido, fiable y fácil de usar.
  • 4.
    Panorámica del sistemade gestión de base de datos MySQL MySQL Server se desarrolló originalmente para tratar grandes bases de datos mucho más rápido que soluciones existentes. MySQL Server trabaja en entornos cliente/servidor o incrustados. Una gran cantidad de software de contribuciones está disponible para MySQL. La forma oficial de pronunciar &quot;MySQL&quot; es &quot;My Ess Quiu Ell&quot; (no &quot;my sicuel&quot;).
  • 5.
    Interioridades y portabilidad Escrito en C y en C++. Probado con un amplio rango de compiladores diferentes Funciona en diferentes plataformas. Usa GNU Automake, Autoconf, y Libtool para portabilidad. APIs disponibles para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, y Tcl. Uso completo de multi-threaded mediante threads del kernel. Proporciona sistemas de almacenamiento transaccionales y no transaccionales. Las principales características de MySQL
  • 6.
    Usa tablas endisco B-tree ( MyISAM ) muy rápidas con compresión de índice. Relativamente sencillo de añadir otro sistema de almacenamiento. Un sistema de reserva de memoria muy rápido basado en threads. Joins muy rápidos usando un multi-join de un paso optimizado. Tablas hash en memoria, que son usadas como tablas temporales. Las principales características de MySQL
  • 7.
    Las funciones SQLestán implementadas usando una librerí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. Las principales características de MySQL
  • 8.
    Tipos de columnas Diversos tipos de columnas. Registros de longitud fija y longitud variable. 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. Las principales características de MySQL
  • 9.
    Escalabilidad y límites Soporte a 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 . Las principales características de MySQL
  • 10.
    Conectividad Los clientes pueden conectar con el servidor MySQL usando sockets TCP/IP en cualquier plataforma. La interfaz para el conector ODBC (MyODBC). La interfaz para el conector J MySQL. Las principales características de MySQL
  • 11.
    Localización Elservidor puede proporcionar mensajes de error en muchos idiomas. Soporte completo para distintos conjuntos de caracteres. Todos los datos se guardan en el conjunto de caracteres elegido. Todas las comparaciones para columnas normales de cadenas de carácteres son case-insensitive. Las principales características de MySQL
  • 12.
    Clientes y herramientas MySQL server tiene soporte para comandos SQL para chequear, optimizar, y reparar tablas. Todos los programas MySQL pueden invocarse con las opciones --help o -? para obtener asistencia en línea. Las principales características de MySQL
  • 13.
    Nuevas bondades de MySQL 5.0x
  • 14.
    Que hay denuevo en MySQL 5.0x Tipo de dato Bit Tipo Bytes Valor Mínimo Valor Máximo BIT 1 1 64
  • 15.
    Que hay denuevo en MySQL 5.0x Tipo de datos VARCHAR Soporte nativo VARCHAR . La longitud máxima de VARCHAR es 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 superior a 255).
  • 16.
    Que hay denuevo en MySQL 5.0x INFORMATIONS_SCHEME El soporte para INFORMATION_SCHEMA está disponible en MySQL 5.0.2 y 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 más consistente de proporcionar acceso a la información proporcionada por los comandos SHOW. Cumple las reglas de Codd.
  • 17.
    Que hay denuevo en MySQL 5.0x Nadie necesita aprender una nueva sintaxis. Conocen cómo funciona SELECT, pero si aprender los nombres de los objetos. El implementador no tiene que preocuparse de palabras clave. Hay millones de variaciones de la salida, en lugar de sólo una. 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í.
  • 18.
    Que hay denuevo en MySQL 5.0x El gestor de instancias de MySQL. Este es el demonio que corre en el puerto TCP/IP. Está disponible para sistemas operativos basados en Unix. MySQL (IM) se incluye en las distribuciones de MySQL desde la versión 5.0.3.
  • 19.
    Que hay denuevo en MySQL 5.0x 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.
  • 20.
    Que hay denuevo en MySQL 5.0x 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.
  • 21.
    Que hay denuevo en MySQL 5.0x Matemáticas de precisión La matemática de precisión se basa en dos cambios de implementación: La introducción de nuevos modos SQL en MySQL 5.0.2 que controlan lo estricto que es el servidor para aceptar o rechazar datos inválidos. La introducción en MySQL 5.0.3 de una biblioteca para aritmética de punto fijo.
  • 22.
    Que hay denuevo en MySQL 5.0x Estos cambios tienen varias implicaciones para operaciones numéricas: Cálculos más precisos. Para números exactos, los cálculos no introducen error en coma flotante. 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 como errores. Un resultado importante de estos cambios es que MySQL proporciona un mejor cumplimiento del estándar SQL.
  • 23.
    Que hay denuevo en MySQL 5.0x Cambios en el tipo de datos DECIMAL Formato de almacenamiento Las extensiones MySQL no estándar al rango superior de columnas DECIMAL El rango de valores para los argumentos de DECIMAL ha cambiado. La extensión no estándard MySQL del rango superior de columnas DECIMAL no se soporta. Los carácteres precedentes ' + ' y ' 0 ' no se almacenan.
  • 24.
    Que hay denuevo en MySQL 5.0x Cursores Se soportan cursores simples dentro de procedimientos y funciones almacenadas. Sirven para almacenar valores retornados por un SELECT en procedimientos almacenados.
  • 25.
    Que hay denuevo en MySQL 5.0x Ejemplo de cursor CREATE PROCEDURE curdemo() BEGIN DECLARE done INT DEFAULT 0; DECLARE a CHAR(16); DECLARE 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; CLOSE cur2; END
  • 26.
    Que hay denuevo en MySQL 5.0x Procedimientos almacenados y funciones Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse en el servidor. 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.
  • 27.
    Que hay denuevo en MySQL 5.0x Ejemplo de procedimiento mysql> delimiter // mysql> CREATE PROCEDURE simpleproc (OUT param1 INT) -> BEGIN -> SELECT COUNT(*) INTO param1 FROM t; -> END -> // mysql> delimiter ;
  • 28.
    Que hay denuevo en MySQL 5.0x Ejecución: mysql> CALL simpleproc(@a); mysql> SELECT @a; | @a | +------+ | 3 | +------+
  • 29.
    Que hay denuevo en MySQL 5.0x Ejemplo de función: mysql> delimiter // mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) -> RETURN CONCAT('Hello, ',s,'!'); -> // mysql> delimiter ;
  • 30.
    Que hay denuevo en MySQL 5.0x Ejecución: mysql> SELECT hello('world'); +------------------+ | hello('world') | +------------------+ | Hello, world! | +------------------+
  • 31.
    Que hay denuevo en MySQL 5.0x ALTER PROCEDURE y ALTER FUNCTION Este comando cambia las características de un procedimiento o función almacenada. DROP PROCEDURE y DROP FUNCTION Este comando borrar un procedimiento o función almacenado.
  • 32.
    Que hay denuevo en MySQL 5.0x SHOW CREATE PROCEDURE y SHOW CREATE FUNCTION Retorna la cadena exacta que puede usarse para recrear la rutina nombrada. SHOW PROCEDURE STATUS y SHOW FUNCTION STATUS Retorna características de rutinas, como el nombre de la base de datos, nombre, tipo, creador y fechas de creación y modificación. También puede obtener información de rutinas almacenadas de la tabla ROUTINES en INFORMATION_SCHEMA .
  • 33.
    Que hay denuevo en MySQL 5.0x Disparadores (triggers) 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.
  • 34.
    Que hay denuevo en MySQL 5.0x momento_disp es el momento en que el disparador entra en acción. Puede ser BEFORE (antes) o AFTER (despues). evento_disp indica la clase de sentencia que activa al disparador. Puede ser INSERT , UPDATE , o DELETE . Por ejemplo, un disparador BEFORE para sentencias INSERT podría utilizarse para validar los valores a insertar.
  • 35.
    Que hay denuevo en MySQL 5.0x 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 de MySQL 5.0.10, los disparadores no podían contener referencias directas a tablas por su nombre. A partir de MySQL 5.0.10, se pueden escribir disparadores como el llamado testref , que se muestra en el siguiente ejemplo:
  • 36.
    Que hay denuevo en MySQL 5.0x 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 ;
  • 37.
    Que hay denuevo en MySQL 5.0x 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 extranjeras
  • 38.
    Que hay denuevo en MySQL 5.0x DROP TRIGGER Elimina un disparador. FOR EACH ROW Define lo que se ejecutará cada vez que el disparador se 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á asociado. Sin embargo, se pueden emplear las palabras clave OLD y NEW .
  • 39.
    Que hay denuevo en MySQL 5.0x El disparador no puede invocar procedimientos almacenados utilizando la sentencia CALL . El disparador no puede utilizar sentencias que inicien o finalicen una transacción. En un disparador para INSERT , solamente puede utilizarse NEW. nom_col.
  • 40.
    Que hay denuevo en MySQL 5.0x En un disparador para DELETE sólo 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. Una columna precedida por OLD es de sólo lectura.
  • 41.
    Que hay denuevo en MySQL 5.0x 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.
  • 42.
    Que hay denuevo en MySQL 5.0x Si falla es un disparador BEFORE , no se ejecuta la operación en el correspondiente registro. Un disparador AFTER se ejecuta solamente si el disparador BEFORE (de existir) y la operación se ejecutaron exitosamente. Un error durante la ejecución de un disparador BEFORE o AFTER deriva en la falla de toda la sentencia que provocó la invocación del disparador.
  • 43.
    Que hay denuevo en MySQL 5.0x 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
  • 44.
    Que hay denuevo en MySQL 5.0x Vistas (Views) Las vistas (incluyendo vistas actualizables) fueron introducidas en la versión 5.0 del servidor de base de datos MySQL 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.
  • 45.
    Que hay denuevo en MySQL 5.0x CREATE VIEW Esta sentencia crea una vista nueva o reemplaza una existente si se incluye la cláusula OR REPLACE. Ejemplo CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2 WITH CHECK OPTION; CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2 -> WITH CHECK OPTION;
  • 46.
    Que hay denuevo en MySQL 5.0x 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 del sistema o del usuario. La sentencia SELECT no puede hacer referencia a parámetros de sentencia preparados. Dentro de una rutina almacenada, la definición no puede hacer referencia a parámetros de la rutina o a variables locales. Cualquier tabla o vista referenciada por la definición debe existir.
  • 47.
    Que hay denuevo en MySQL 5.0x Algunas vistas son actualizables. La opcion WITH CHECK OPTION puede utilizarse en una vista actualizable para evitar inserciones o actualizaciones excepto en los registros en que la cláusula WHERE de la sentencia_select se evalúe como true. En la cláusula WITH CHECK OPTION de una vista actualizable, las palabras reservadas LOCAL y CASCADED determinan el alcance de la verificación
  • 48.
    Que hay denuevo en MySQL 5.0x ALTER VIEW Esta sentencia modifica la definición de una vista existente Esta sentencia se introdujo en MySQL 5.0.1. DROP VIEW Elimina una o más vistas de la base de datos.
  • 49.
    Que hay denuevo en MySQL 5.0x FIN