c1 procedimientos triggers vistas
TRANSCRIPT
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