Sie sind auf Seite 1von 38

Diseo y Administracin de Bases de Datos II Ing.

Luis Reyes

Objetivos
Consolidar los conceptos de los tres objetos de las bases de datos mas importantes
Conocer caractersticas de MySQL

Explotar el uso de herramientas relacionadas

Ventajas de MySQL?
Es un Sistema Gestor de Bases de Datos disponible en la mayora de plataformas.
El servidor de Bases de Datos Open Source ms popular. Liviano y rpido: adecuado para aplicaciones Web. Cuenta con APIs disponibles para C, C++, Perl, PHP, Python, Java, .NET

Novedades de la Base de Datos


Mltiples Instancias del Servidor
Stored Procedures (Procedimientos Almacenados) Triggers (Disparadores) Views (Vistas) Acceso al Metadata de las BD

Configuracin de Mltiples 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

Configuracin de Mltiples Instancias


Instalacin 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 funcin) que es almacenada dentro de la base de datos. Sentencias: CREATE PROCEDURE/FUNCTION ALTER PROCEDURE/FUNCTION DROP PROCEDURE/FUNCTION

Stored Procedures: Sintaxis


Sintaxis de Creacin:

CREATE PROCEDURE nombre_proc ([parametro ]) [caracterstica ] cuerpo_proc CREATE FUNCTION nombre_func ([parametro ]) RETURNS tipo_dato [caracterstica ] cuerpo_func

Stored Procedures
Cuerpo de la Rutina
Especifica que es lo que har la rutina Puede contener una o ms 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 funcin almacenada:


Generalmente: select nombre_func([params, ]) Ejemplo:

SELECT saludar(Enrique);

Stored Procedures: Sentencias de Control


IF si <condicion> hacer <accin> CASE seleccin alternativa, dependiente LOOP hacer <accin> repetidamente LEAVE terminacin de un bucle o bloque ITERATE reinicia un bucle REPEAT repetir <accin> hasta <condicin> sea verdadera WHILE repetir <action> mientras <condicin> sea verdadera

Stored Procedures
Ventajas: Mejorar el Desempeo Ahorrar tiempo, dinero y recursos

Triggers
Un Trigger es una accin en cadena que empieza cuando un evento especfico ocurre sobre una tabla especfica.

Triggers: Sintaxis
CREATE TRIGGER nombre_trigger {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON FOR EACH ROW accin_trigger |
nombre_table 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

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: Actualizacin
Una Vista actualizable puede aceptar sentencias

UPDATE, DELETE Algunas vistas pueden permitir INSERT Los cambios de los datos se automticamente a la tabla base.

propagan

Vistas: Usos
Las vistas pueden ser usadas en lugar de definir

restricciones utilizando por ejemplo NOT NULL, BETWEEN, etc. Pueden usarse en la reestructuracin de tablas, ocultando o moviendo columnas. Permiten implementar seguridad en los datos al ocultar registros.

INFORMATION_SCHEMA
El Esquema de Informacin 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 travs de sentencias SELECT

INFORMATION_SCHEMA
Ventajas: Standarizacin del manejo del metadata, quedando atrs el uso de comandos SHOW especficos de MySQL No se necesita aprender un nuevo conjunto de comandos para acceder el metadata.

INFORMATION_SCHEMA
Visualizacin:

INFORMATION_SCHEMA
Objetos mas importantes: SCHEMA TABLES VIEWS ROUTINES COLUMNS

INFORMATION_SCHEMA

Objetos mas importantes:

MySQL Tips
Mostrar resultados verticalmente: \G

MySQL Tips
Prevenir resultados inesperados al usar sentencias de modificacin: Usar la opcin -U al conectarse

C:>mysql u usuario p U Obliga a usar la clusula WHERE al realizar un UPDATE O DELETE.

MySQL Tips
Cambiar la contrasea 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 instalacin del acceso de otros usuarios.
Apegarse al ANSI SQL si se requiere portabilidad No mezclar el cdigo de la interfaz del usuario con cdigo 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