420 likes | 657 Views
MySQL 5.0. Milton Labanda 1000ton.lab@gmail.com UNIVERSIDAD NACIONAL DE LOJA Carrera de Ingeniería en Sistemas Enero 2006. Objetivos. Actualizar conocimientos relacionados al currículum. Revisar algunas novedades en la v 5.0 Explotar el uso de herramientas relacionadas.
E N D
MySQL 5.0 Milton Labanda 1000ton.lab@gmail.com UNIVERSIDAD NACIONAL DE LOJA Carrera de Ingeniería en Sistemas Enero 2006
Objetivos • Actualizar conocimientos relacionados al currículum. • Revisar algunas novedades en la v 5.0 • Explotar el uso de herramientas relacionadas
¿Ventajas de MySQL? • Es un Sistema Gestor de Bases de Datos disponible en la mayoría de plataformas. • El servidor de Bases de Datos Open Source más popular. • Liviano y rápido: adecuado para aplicaciones Web. • Cuenta con APIs disponibles para C, C++, Perl, PHP, Python, Java, .NET
Estado de MySQL • Anterior versión estable: • 4.0 y 4.1 • Actual versión estable: • 5.0 • Futura versión estable: • 5.1 • Se sigue utilizando las versiones 4.0 y 4.1
Novedades de la Versión 5.0 • Múltiples Instancias del Servidor • Stored Procedures (Procedimientos Almacenados) • Triggers (Disparadores) • Views (Vistas) • Acceso al Metadata de las BD
Configuración de Múltiples Instancias • Archivo ‘my.ini’ ####################################### # Servidor 1 # ###################################### [mysqld1] datadir = "C:/mydata1/" port = 3307 enable-named-pipe socket = pipe1 ####################################### # Servidor 2 # ####################################### [mysqld2] datadir = "c:/mydata2/" port = 3308 enable-named-pipe socket = pipe2
Configuración de Múltiples Instancias • Instalación de las instancias como servicios de windows: • mysqld-nt - -install mysqld1 • mysqld-nt - -install mysqld2 • Arranque de las Instancias del servidor: • NET START mysqld1 • NET START mysqld2
Stored Procedures Un procedimiento almacenado es una rutina (procedimiento o función) que es almacenada dentro de la base de datos. Sentencias: CREATE PROCEDURE/FUNCTION ALTER PROCEDURE/FUNCTION DROP PROCEDURE/FUNCTION
Stored Procedures: Sintaxis • Sintaxis de Creación: CREATE PROCEDURE nombre_proc ([parametro …]) [característica …] cuerpo_proc CREATE FUNCTION nombre_func ([parametro …]) RETURNS tipo_dato [característica …] cuerpo_func
Stored Procedures • Cuerpo de la Rutina • Especifica que es lo que hará la rutina • Puede contener una o más sentencias SQL • Puede incluir sentencias DECLARE • Sintaxis del cuerpo BEGIN [DECLARE variables, cursores, condiciones] [Sentencias SQL] END
Stored Procedures: Ejemplos CREATE PROCEDURE p1 () BEGIN DECLARE v1 INT DEFAULT 10; SET v1 = 5; INSERT INTO t VALUES (v1); END;
Stored Procedures: Ejemplos CREATE PROCEDURE copiar () BEGIN DECLARE var1 VARCHAR(34); DECLARE c1 CURSOR FOR SELECT name FROM test.t; OPEN c1; REPEAT FETH c1 INTO var1; …. END;
Stored Procedures CREATE FUNCTION saludar (nombre CHAR(20)) RETURNS CHAR (40) BEGIN DECLARE saludo CHAR(40); SET saludo = CONCAT('Hola, ‘ ,UPPER(nombre), ', como estas?'); RETURN saludo; END
Stored Procedures • Invocar a un Procedimiento almacenado: • call nombre_proc([params, …]) • Ejemplo: • CALL proc1( ); • Invocar a una función almacenada: • Generalmente: select nombre_func([params, …]) • Ejemplo: • SELECT saludar(‘Enrique’);
Stored Procedures: Sentencias de Control • IF – si <condicion> hacer <acción> • CASE – selección alternativa, dependiente • LOOP – hacer <acción> repetidamente • LEAVE – terminación de un bucle o bloque • ITERATE – reinicia un bucle • REPEAT – repetir <acción> hasta <condición> sea verdadera • WHILE – repetir <action> mientras <condición> sea verdadera
Stored Procedures • Ventajas: • Mejorar el Desempeño • Ahorrar tiempo, dinero y recursos
Triggers Un Trigger es una acción en cadena que empieza cuando un evento específico ocurre sobre una tabla específica.
Triggers: Sintaxis CREATE TRIGGER nombre_trigger {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON nombre_table FOR EACH ROW acción_trigger | sentencias SQL
Triggers: Usos • Registrar, auditar y monitorear la actividad de cambio de datos • Validar datos, cambiando o negando acciones como INSERT, UPDATE, DELETE en una tabla • Preservar la consistencia y claridad de los datos ejecutando acciones relacionadas en tablas relacionadas
Triggers: Ejemplos CREATE TRIGGER info AFTER INSERT ON test.t FOR EACH ROW SET @ultimo = NEW.id;
Triggers: Ejemplos CREATE TRIGGER update_check BEFORE UPDATE ON test.t FOR EACH ROW BEGIN IF LENGTH(NEW.name) = 0 THEN SET NEW.name = 'Nombres'; END IF; END;
Vistas • Una Vista es una tabla virtual • Provee otra manera de buscar en los datos existentes • No usan espacio extra en disco • La sintaxis de las Vistas MySQL son 100% compatibles con el SQL standard.
Vistas: Sintaxis CREATE [OR REPLACE] VIEW nombre_vista [(lista_columnas)] AS sentencia_select [WITH [CASCADED | LOCAL] CHECK OPTION]
Vistas: Ejemplos • WITH CHECK OPTION CREATE VIEW v1 AS SELECT col1 FROM t1 WHERE col1 <> 'A' WITH CHECK OPTION; mysql> UPDATE v1 SET col1 = 'A'; ERROR 1369 (HY000): CHECK OPTION failed ‘test.v1'
Vistas: Ejemplos • WITH LOCAL CHECK OPTION CREATE VIEW v2 AS SELECT * FROM v1 WHERE col1 <> 'B' WITH LOCAL CHECK OPTION; mysql> INSERT INTO v2 VALUES ('B'); ERROR 1369 (HY000): CHECK OPTION failed ‘test.v2' mysql> INSERT INTO v2 VALUES ('A'); Query OK, 1 row affected (0.01 sec)
Vistas: Ejemplos • WITH CASCADED CHECK OPTION CREATE VIEW v3 AS SELECT * FROM v2 WHERE col1 <> 'C' WITH CASCADED CHECK OPTION; mysql> INSERT INTO v3 VALUES ('B'); ERROR 1369 (HY000): CHECK OPTION failed ‘test.v3' -- porque las condiciones de v2 no permiten 'B' y v3 depende de v2 mysql> INSERT INTO v3 VALUES ('A'); ERROR 1369 (HY000): CHECK OPTION failed ‘test.v3' -- porque las condiciones de v1 no permiten 'A' and v3 depende de v1 y v2
Vistas: Actualización • Una Vista actualizable puede aceptar sentencias UPDATE, DELETE • Algunas vistas pueden permitir INSERT • Los cambios de los datos se propagan automáticamente a la tabla base.
Vistas: Usos • Las vistas pueden ser usadas en lugar de definir restricciones utilizando por ejemplo NOT NULL, BETWEEN, etc. • Pueden usarse en la reestructuración de tablas, ocultando o moviendo columnas. • Permiten implementar seguridad en los datos al ocultar registros.
INFORMATION_SCHEMA El Esquema de Información es la forma SQL standard para acceder el metadata de la base de datos. • Contiene una serie de tablas que describen los objetos de la base de datos • Es una base de datos virtual visible a través de sentencias SELECT
INFORMATION_SCHEMA • Ventajas: • Standarización del manejo del metadata, quedando atrás el uso de comandos SHOW específicos de MySQL • No se necesita aprender un nuevo conjunto de comandos para acceder el metadata.
INFORMATION_SCHEMA • Visualización:
INFORMATION_SCHEMA • Objetos mas importantes: • SCHEMATA • TABLES • VIEWS • ROUTINES • COLUMNS
INFORMATION_SCHEMA • Objetos mas importantes:
MySQL Tips • Mostrar resultados verticalmente: \G
MySQL Tips • Prevenir resultados inesperados al usar sentencias de modificación: Usar la opción -U al conectarse C:>mysql –u usuario –p –U Obliga a usar la cláusula WHERE al realizar un UPDATE O DELETE.
MySQL Tips • Cambiar la contraseña del superusuario ‘root’ y renombrar el usuario c:> mysqladmin -u root password ‘nueva_clave’ mysql> update mysql.user -> set user = ‘admin’ -> where user = ‘root’
MySQL Tips • Proteger el directorio de instalación del acceso de otros usuarios. • Apegarse al ANSI SQL si se requiere portabilidad • No mezclar el código de la interfaz del usuario con código de bases de datos. • Usar pool de conexiones en Servidores Web y Servidores a Aplicaciones
MySQL Tips • Ejecutar sentencias sin entrar al cliente mysql C:> mysql –u root –p –e “select * from test.t” • Exportar a XML C:> mysql –u user –p –e “sentencias” –X > archivo.xml • Exportar a HTML C:> mysql –u user –p –e “sentencias” –H > archivo.html