Temas Varios SQL

Anuncio
SQL - Algunos Temas
Bases de Datos
Laboratorio de SQL
Vistas
●
Son relaciones pero de las cuales sólo almacenamos su
definición, no su conjunto de filas
CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ] [ ; ]
<view_attribute> ::=
{ [ ENCRYPTION ] [ SCHEMABINDING ][ VIEW_METADATA ]}
Vistas
CREATE VIEW [dbo].[titleview] AS
select title, au_ord, au_lname, price, ytd_sales, pub_id
from authors, titles, titleauthor
where authors.au_id = titleauthor.au_id
AND titles.title_id = titleauthor.title_id
Vistas Materializadas - indizada (SQL-Server)
●
Vistas Materializadas (indizada en SQL Server)
○
1 Índice cluster
CREATE VIEW [dbo].[employeeview] WITH SCHEMABINDING AS
SELECT dbo.employee.emp_id, dbo.employee.fname, dbo.
employee.lname, dbo.jobs.job_desc
FROM dbo.employee
INNER JOIN dbo.jobs ON dbo.employee.job_id = dbo.jobs.job_id
CREATE UNIQUE CLUSTERED INDEX idx_employeeview ON
employeeview(emp_id)
Triggers - SQL Server
●
Código almacenado en la DB que se ejecuta ante ciertos
eventos.
○
○
Evento: activa el trigger
Acción: código que se ejecuta si se dispara el trigger
CREATE TRIGGER nombre_trigger ON { tabla|vista }
[ WITH ENCRYPTION ]
{ AFTER | INSTEAD OF }{ INSERT, UPDATE, DELETE }
[ NOT FOR REPLICATION ] AS
Triggers - SQL SERVER
Usan dos tablas con la misma estructura que la que
desencadenó el trigger:
●
●
●
●
●
inserted (Insert y Update)
deleted (Delete y Update)
Función Update(campo) es verdadera si se actualizó ese
campo.
Rollback Transaction (anula la transacción completa)
Pueden ejecutarse bloques IF o IF ELSE enmarcados en
BEGIN y END.
triggers - Ejemplo
CREATE TABLE emp_audit ( emp_audit_id integer, up_date DATE, new_sal decimal, old_sal decimal);
CREATE TRIGGER [dbo].[audit_sal] ON [dbo].[empleados] AFTER UPDATE AS
BEGIN
SET NOCOUNT ON;
IF UPDATE(salario) -- Sólo si se actualiza salario
BEGIN
INSERT INTO emp_audit(emp_audit_id,up_date, new_sal, old_sal)
SELECT i.ecod, getdate(),i.salario, d.salario
FROM Inserted i INNER JOIN Deleted d ON i.ecod = d.ecod
END
END
División en SQL
División en SQL
Stored Procedures
●
●
●
●
●
●
●
Es una porción de código, que se almacena en el catálogo de la base de
datos y se puede invocar mediante una sentencia SQL.
Se ejecuta en el servidor de base de datos. Reduce el número de idas y
vueltas entre aplicaciones y el servidor de base de datos.
Encapsulan reglas de negocio fuertemente relacionadas con los datos de la
BD y sin interacción con el usuario.
No es obligatorio que estén escritos en SQL (Java, PL/SQL, PL/pgSQL,
Transact SQL)
○ SQLServer 2008: Transact SQL o CLR.
Cada RDBMS tiene su propio lenguaje de Stored Procedure, los cuales
incluyen sentencias de control, manejo de variables, etc.
Los stored Procedures, tienen un nombre, reciben parámetros y pueden
devolver resultados.
Permite reutilizar código entre diversas aplicaciones.
Stored Procedures
●
●
●
●
Velocidad de desarrollo más lenta.
Requiere habilidades especiales.
Es dificultoso manejar versiones y es más complejo
depurar.
Puede no ser portable entre diferentes sistemas de bases
de datos.
SQL Server - Stored Procedures
SQL Server -Stored Procedures
Parámetro de
entrada
SQL Server -Stored Procedures
Parámetro de
salida
Descargar