Laboratorio 7

Anuncio
Laboratorio 7
Profesora: Andrea Rodrı́guez
Ayudante: Daniel Campos
Bases de Datos I
Universidad de Concepción
8 de noviembre de 2013
Introducción a SQL - FUNCTIONS
CREATE OR REPLACE FUNCTION name (param, ...)
RETURN tipo_retorno
AS $$
DECLARE
variable1;
variable2;
BEGIN
sentencia;
sentencia;
RETURN retorno;
END;
$$
LANGUAGE 'plpgsql'
Introducción a SQL - FUNCTIONS - Ejemplo
CREATE FUNCTION add(integer, integer) RETURNS integer
AS 'select $1 + $2'
LANGUAGE SQL
IMMUTABLE
RETURNS NULL ON NULL INPUT
Introducción a SQL - FUNCTIONS - Ejemplo
CREATE OR REPLACE FUNCTION increment(i integer)
RETURNS integer AS $$
BEGIN
RETURN i + 1;
END;
$$ LANGUAGE plpgsql;
Introduccion a SQL - FUNCTIONS - Ejemplo
CREATE FUNCTION dup(int) RETURNS TABLE(f1 int, f2 text)
AS $$
SELECT $1, CAST($1 AS text) || ' is text'
$$
LANGUAGE SQL;
Introducción a SQL - CREATE TRIGGER
Los triggers son funciones que se ejecutan de forma automática
en respuesta a ciertos eventos (insert, update, delete).
CREATE OR REPLACE FUNCTION nombre_function(param, ...)
RETURNS trigger
AS $$
DECLARE
variable1;
variable2;
BEGIN
sentencia;
sentencia;
RETURN retorno;
END;
$$
LANGUAGE 'plpgsql';
Introducción a SQL - CREATE TRIGGER
CREATE OR REPLACE TRIGGER nombre_trigger
[AFTER|BEFORE] [INSERT|UPDATE|DELETE]
ON nombre_tabla
FOR EACH [ROW | STATEMENT]
EXECUTE PROCEDURE nombre_funcion();
Introducción a SQL - TRIGGER - Ejemplo
CREATE TRIGGER check_update
BEFORE UPDATE ON accounts
FOR EACH ROW
WHEN (OLD.balance IS DISTINCT FROM NEW.balance)
EXECUTE PROCEDURE check_account_update();
Introducción a SQL - CREATE VIEW
Una vista es una alternativa para mostrar datos de varias tablas.
Una vista es como una tabla virtual que almacena una consulta.
Los datos accesibles a través de la vista no están almacenados en
la base de datos como un objeto.
CREATE [OR REPLACE] [TEMP | TEMPORARY ]
VIEW name [( column name, ... )] AS "query"
CREATE VIEW perfil AS
SELECT nombre, apellido
FROM usuario;
Introducción a SQL - Vistas
I
Ocultan información: permitiendo el acceso a algunos datos y
manteniendo oculto el resto de la información que no se
incluye en la vista. El usuario solo puede consultar la vista.
I
Simplifican la administración de los permisos de usuario: se
pueden dar al usuario permisos para que solamente pueda
acceder a los datos a través de vistas, en lugar de concederle
permisos para acceder a ciertos campos, ası́ se protegen las
tablas base, de cambios en su estructura.
I
Mejoran el rendimiento: se puede evitar escribir instrucciones
repetidamente almacenando en una vista el resultado de una
consulta compleja que incluya información de varias tablas.
Introducción a SQL - CREATE INDEX
CREATE [UNIQUE] INDEX nombre ON nombre_tabla
[USING method] ({ column | expression }) [ASC | DESC]
[NULLS { FIRST | LAST }]
[WHERE predicado]
Introducción a SQL - Índices
Método (method)
B-Tree (btree)
hash
GiST
GIN
Caracterı́sticas
Por defecto en PostgreSQL. Permite
multiples columnas, ideal para operadores <, <=, =>, > y =
Ideal para operador =. No soporta IS
NULL
Permite multiples columnas
Permite multiples columnas
Introducción a SQL - INDEXES - Ejemplo
CREATE UNIQUE INDEX title_idx ON
publication (title);
CREATE INDEX despacho_idx ON despacho
USING btree (origen, destino);
CREATE INDEX ON films ((lower(title)));
CREATE INDEX afiliados_idx ON afiliados (monto_cuota)
WHERE monto_cuota >= 50;
Introducción a SQL - ASSERTIONS
Las ASSERTIONS no están implementadas en PostgreSQL, pero
pueden ser reemplazadas con otras estrategias, normalmente con
una combinación de las siguientes técnicas:
I
Triggers: Utilizar Triggers para comprobar los valores en las
tablas antes de insertar, y después de borrar. para corroborar
la correctitud de los datos almacenados.
I
Sentencias Check:
ALTER TABLE cliente
ADD CONSTRAINT credito_max CHECK (credito <= 1000);
Descargar