38
 Diseño y Administración de Bases de Datos II Ing. Luis Reyes

c1 Procedimientos Triggers Vistas

Embed Size (px)

Citation preview

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 1/38

 

Diseño y Administración de Bases de Datos II

Ing. Luis Reyes

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 2/38

 

ObjetivosConsolidar los conceptos de los tres objetos de

las bases de datos mas importantes

Conocer características de MySQL Explotar el uso de herramientas relacionadas

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 3/38

 

¿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áspopular.

Liviano y rápido: adecuado para aplicaciones Web.

Cuenta con APIs disponibles para C, C++, Perl,PHP, Python, Java, .NET

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 4/38

 

Novedades de la Base de Datos Múltiples Instancias del Servidor

Stored Procedures (Procedimientos Almacenados)

Triggers (Disparadores) Views (Vistas)

 Acceso al Metadata de las BD

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 5/38

 

Configuración de Múltiples Instancias  Archivo ‘my.ini’

######################################## Servidor 1 #######################################

[mysqld1]datadir = "C:/mydata1/"port = 3307enable-named-pipesocket = pipe1

######################################## Servidor 2 #

#######################################[mysqld2]datadir = "c:/mydata2/"port = 3308enable-named-pipesocket = pipe2

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 6/38

 

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

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 7/38

Stored ProceduresUn procedimiento almacenado es una rutina(procedimiento o función) que es almacenadadentro de la base de datos.

Sentencias:

CREATE PROCEDURE/FUNCTION

 ALTER PROCEDURE/FUNCTIONDROP PROCEDURE/FUNCTION

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 8/38

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

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 9/38

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 cuerpoBEGIN

[DECLARE variables, cursores, condiciones][Sentencias SQL]

END

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 10/38

Stored Procedures: EjemplosCREATE PROCEDURE p1 ()

BEGIN

DECLARE v1 INT DEFAULT 10;SET v1 = 5;

INSERT INTO t VALUES (v1);

END;

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 11/38

Stored Procedures: EjemplosCREATE PROCEDURE copiar () BEGIN

DECLARE var1 VARCHAR(34);

DECLARE c1 CURSOR FOR SELECT name FROM test.t;

OPEN c1;REPEAT

FETH c1 INTO var1;

….

END;

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 12/38

Stored ProceduresCREATE FUNCTION saludar (nombre CHAR(20)) RETURNS

CHAR (40)

BEGIN

DECLARE saludo CHAR(40);SET saludo = CONCAT('Hola, ‘ ,UPPER(nombre), ', comoestas?');

RETURN saludo;

END

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 13/38

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’);

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 14/38

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

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 15/38

Stored Procedures Ventajas:

Mejorar el Desempeño

 Ahorrar tiempo, dinero y recursos

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 16/38

TriggersUn Trigger es una acción en cadena que empiezacuando un evento específico ocurre sobre unatabla específica.

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 17/38

Triggers: SintaxisCREATE TRIGGER nombre_trigger

{BEFORE | AFTER}

{INSERT | UPDATE | DELETE} ON nombre_tableFOR EACH ROW acción_trigger | sentencias SQL

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 18/38

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 tablasrelacionadas

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 19/38

Triggers: EjemplosCREATE TRIGGER info

 AFTER INSERT ON test.t

FOR EACH ROW SET @ultimo = NEW.id;

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 20/38

Triggers: EjemplosCREATE 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;

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 21/38

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% compatiblescon el SQL standard.

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 22/38

Vistas: SintaxisCREATE [OR REPLACE]

 VIEW nombre_vista

[(lista_columnas)]

 AS sentencia_select

[WITH [CASCADED | LOCAL] CHECK OPTION]

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 23/38

Vistas: Ejemplos

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 24/38

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'

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 25/38

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)

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 26/38

Vistas: Ejemplos  WITH CASCADED CHECK OPTION

CREATE VIEW v3 ASSELECT * 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

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 27/38

Vistas: Actualización Una Vista actualizable puede aceptar sentencias

UPDATE, DELETE

 Algunas vistas pueden permitir INSERT

Los cambios de los datos se propaganautomáticamente a la tabla base.

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 28/38

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.

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 29/38

INFORMATION_SCHEMAEl Esquema de Información es la forma SQLstandard para acceder el metadata de la base dedatos.

Contiene una serie de tablas que describen los objetos dela base de datos

Es una base de datos virtual visible a través de sentenciasSELECT

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 30/38

INFORMATION_SCHEMA Ventajas:

Standarización del manejo del metadata, quedandoatrás el uso de comandos SHOW específicos de MySQL

No se necesita aprender un nuevo conjunto decomandos para acceder el metadata.

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 31/38

INFORMATION_SCHEMA Visualización:

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 32/38

INFORMATION_SCHEMA Objetos mas importantes:

SCHEMA 

TABLES

 VIEWS

ROUTINES

COLUMNS

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 33/38

INFORMATION_SCHEMA Objetos mas importantes:

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 34/38

MySQL Tips Mostrar resultados verticalmente: \G

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 35/38

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 unUPDATE O DELETE.

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 36/38

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’

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 37/38

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

 

5/9/2018 c1 Procedimientos Triggers Vistas - slidepdf.com

http://slidepdf.com/reader/full/c1-procedimientos-triggers-vistas 38/38

MySQL Tips Ejecutar sentencias sin entrar al cliente mysql

C:> mysql –u root –p –e “select * from test.t”

Exportar a XMLC:> mysql –u user –p –e “sentencias” – X > archivo.xml

Exportar a HTML

C:> mysql –u user –p –e “sentencias” –H > archivo.html