Top Banner
SQL Data Definition Language
26
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Sql3

SQL

Data Definition Language

Page 2: Sql3

Objetivos

• Índices• Triggers• Stored Procedures

Page 3: Sql3

Índices

• A veces queremos obtener registros especificando los valores en uno o más registros, ej.,–Encontrar todos los estudiantes en el

departamento de “computación”–Encontrar todos los estudiantes con un

prom > 3

Page 4: Sql3

Índice

• Es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla.

• Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se hagan frecuentes búsquedas.

Page 5: Sql3

Índice

• Tiene un funcionamiento similar al índice de un libro, guardando parejas de elementos: el elemento que se desea indexar y su posición en la base de datos.

• Para buscar un elemento que esté indexado, sólo hay que buscar en el índice dicho elemento para, una vez encontrado, devolver el registro que se encuentre en la posición marcada por el índice.

Page 6: Sql3

Índice

• Los índices pueden ser creados usando una o más columnas, proporcionando la base tanto para búsquedas rápidas al azar como de un ordenado acceso a registros eficiente.

• Los índices son construidos sobre árboles B, B+, B* o sobre una mezcla de ellos, funciones de cálculo u otros métodos.

Page 7: Sql3

• El espacio en disco requerido para almacenar el índice es típicamente menor que el espacio de almacenamiento de la tabla

• Los índices generalmente contienen solamente los campos clave de acuerdo con los que la tabla será ordenada, y excluyen el resto de los detalles de la tabla.

Page 8: Sql3

Pregunta sobre índices

• Que clase de selects soportan?– Selecciones de igualdad (op es =)– Selecciones de rango (op es <, >, <=, >=, BETWEEN)– Más selecciones exóticas:

• Rangos de 2-dimensiones (“oeste de Boston y este de Brighton y Norte de South Boston y Sur de Summerville”)– O n-dimensiones

• Distancias de 2-dimensiones (“dentro de 2 millas del edificio de la FIEC”)– O n-dimensiones

• Ranking de queries (“10 restaurantes más cercanos a la ESPOL”)

Page 9: Sql3

Clasificación de índices

• Representación de entradas de datos en los índices– ej., qué tipo de información está guardando el

índice?– Hay 3 alternativas

• Índices Primarios vs. Secundarios• Índices Clustered vs. Unclustered• Índices Llave Simple vs. Compuestos• Basados en arbol, hash, otros

Page 10: Sql3

Cuándo utilizar índices?

• Campos que se hacen queries seguidos• Campo con alta cardinalidad• Registros pequeños y tamaños fijos son

preferidos.(Obs: La mayoría de los DBMSs indexan

automáticamente el PK)

Page 11: Sql3

Create Index command

• Create index <iNombre> on <nombre_tabla> (<col_nombre>);

• Create index ieid on estudiantes(eid);

Page 12: Sql3

Indexes (Defaults)

• Cada vez que un PK es creado, un índice es automáticamente creado.

• Cada vez que el tipo de índice no se especifica, el tipo de índice creado es unB-Trees.

Page 13: Sql3

Índices B+ Tree

Las páginas de hojas contienen entradas de datos, encadenadas(prev & next) Las páginas de no hojas tienen entradas de índices; solo usadas para búsquedas directas:

P0 K 1 P 1 K 2 P 2 K m P m

Entrada de índice

Páginas

De No Hojas

De Hojas(Ordenadas por la llave de búsqueda)

Páginas

Page 14: Sql3

1717

Ejemplo B+ Tree

• Encuentre 28*? 29*? Todos los > 15* y< 30*• Ingresar/borrar: Encontrar los datos de

entradas en la hoja, luego cambiarlos. A veces se necesita a justar el padre.

2* 3*

Raiz

17

30

14* 16* 33* 34* 38* 39*

135

7*5* 8* 22* 24*

27

27* 29*

Entradas<= 17 Entradas> 17

Note how data entriesin leaf level are sorted

Punteros a las páginas de datos(rid)

Page 15: Sql3

Índices Hash

• Bueno para las selecciones de igualdad. • El Índice es una colección de cubos. – Cubo= página primaria más cero o más páginas

overflow. – Cubos contienen entradas de datos.

• Función Hashing: h(r) = cubo en el cual (la entrada de dato) para el registro r pertenece.

Page 16: Sql3

Tabla Hash

Page 17: Sql3

Clasificación de índices

• Primarios vs. Secundarios: Si la clave de búsqueda contiene una clave primaria entonces se llama índice primario.– Único índice: La clave de búsqueda contiene una

clave candidata.

Page 18: Sql3

Clasificación de índices

• Clustered vs. unclustered: Si el orden de los registros de datos es lo mismo, o parecido al orden de los registros de datos de índices, entonces se llama índice clustered.– Un archivo puede ser clustered en al menos una

clave de búsqueda.– El costo de seleccionar registros de datos a través

de índices varia mucho si un índice es clustered o no!

Page 19: Sql3

Clustered vs. Unclustered

Index entries

Data entries

direct search for

(Index File)(Data file)

Data Records

data entries

Data entries

Data Records

CLUSTERED UNCLUSTERED

Page 20: Sql3

Unclustered vs. Clustered

• Clustered Pros– Eficiente para búsquedas de rango– Se puede hacer algún tipo de compresión– Beneficios de localidad(datos relacionados?)

• Clustered Cons– Caro de mantener

Page 21: Sql3

Triggers

• Es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación de inserción (INSERT), actualización (UPDATE) o borrado (DELETE).

• Son usados para mejorar la administración de la Base de datos, sin necesidad de contar con que el usuario ejecute la sentencia de SQL.

• Además, pueden generar valores de columnas, previene errores de datos, sincroniza tablas, modifica valores de una vista, etc.

Page 22: Sql3

La estructura básica de un trigger es:

• Llamada de activación: es la sentencia que permite "disparar" el código a ejecutar.

• Restricción: es la condición necesaria para realizar el código. Esta restricción puede ser de tipo condicional o de tipo nulidad.

• Acción a ejecutar: es la secuencia de instrucciones a ejecutar una vez que se han cumplido las condiciones iniciales.

Page 23: Sql3

Tipos de triggers

• Row Triggers (o Disparadores de fila): son aquellas que se ejecutaran n-veces si se llama n-veces desde la tabla asociada al trigger

• Statement Triggers (o Disparadores de secuencia): son áquellos que sin importar la cantidad de veces que se cumpla con la condición, su ejecución es única.

Page 24: Sql3

DELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON test1 FOR EACH ROW BEGIN INSERT INTO test2 SET a2 = NEW.a1; DELETE FROM test3 WHERE a3 = NEW.a1; UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; END|DELIMITER ;

Page 25: Sql3

Stored Procedure

• Es un programa (o procedimiento) el cual es almacenado físicamente en una base de datos.

• La ventaja es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado.

• Como tal, posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes.

Page 26: Sql3

Stored ProcedureCREATE PROCEDURE addtupla1(i IN NUMBER) AS BEGIN

INSERT INTO tabla VALUES(i, 'xxx'); END addtupla1;

create or replace procedure display(eno in integer,nombre out varchar2,trabajo out varchar2, salario out integer, locacion out varchar2)isbeginselect enombre,trabajo,sal,loc into nombre,trabajo,salario,locacion from emp e, dept dwhere e.deptno=d.deptno AND empno=eno;end;