Este documento describe varios conceptos clave de bases de datos relacionales en SQL Server 2008, incluyendo sentencias para crear, modificar y eliminar bases de datos, tablas, vistas, índices y disparadores. También explica procedimientos almacenados, sus ventajas y desventajas.
2. GRUPO #3
INTEGRANTES
I. LETICIA TORRES
II. KARINA SAAVEDRA
III. SERGIO PEREZ
CURSO
S4L
DOCENTE
ING.ROSSANA LUCIN
PERIODO-LECTIVO
2016-2017
3. I. MANEJO DE SENTENCIAS DE DEFINICION
Para poder trabajar con base de datos relacionales, lo primero que tenemos que hacer es definirla.
Veremos las órdenes del estándar SQL server 2008 para crear y borrar una base de datos
relacional y para insertar, borra y modificar las diferentes tablas que la componen.
En este apartado también veremos cómo se definen los dominios, las aserciones (restricciones)
y las vistas.
La sencillez y la homogeneidad del SQL server 2008 hacen que:
Para crear base de datos, tablas, dominios, aserciones y vistas se utilice la sentencia
CREATE.
Sintaxis:
Créate table nombre_table (
Campo1 tipo dato [NULL/NOT NULL] check (expresión_logica )[default expresión_contstante];
Campo2 tipo dato [NULL/NOT NULL] check (expresión_logica )[default expresión_contstante];
Campo –N
Primary key (campo llave);
Foreign Key (campo llave) referencie tabla2 (campo_llave-table2)
Para modificar las tablas y dominios se utiliza la sentencia ALTER
Añadir una definición de la columna de una tabla puede crearse valores nulos o valores
Sintaxis:
Alter table nombre_tabla
ADD nombre_column tipo _dato NULL
[contraint nombre_nuevaRestirccion CHECK/DEFAULT]
4. Ejemplo:
Alter table T1
Add a6 [varchar(50) NULL]
Eliminar una columna de la tabla. Pero antes de su eliminación deben ser eliminados por
ALTER TABLE todas las restricciones que estén definidas sobre la columna.
Ejemplo:
Alter table T1
Drop column a4
Eliminación de la llave promaria, foreana o restrincciones de ligaduras de integridad
(CHECK), existente para una tabla. Esto es elimina cualquier ligadura de integridad
tratada en el tema. Para verficar nuevamente SP_help nombre_table en el resultado ya no
sale constraint_type nombre de la llave primaria
Sintaxis:
Alter table T1
Drop Constraint Pk_T1_dbo.numero_asigna
Para borrar base de datos, tablas, dominios, aserciones y vistas se utilice la sentencia
DROP
Sintaxis:
Select * from nombre_table
TABLAS
Tipos de modelados de
datos.
Las tablas se compone de dos estructuras:
Campo.- corresponde al nombre de la columna. Debe ser único y además de tener un tipo
de dato asociado
Registro.- corresponde a cada fila que compone la tabla
5. VISTAS
El tipo más simples de vista a crear es uno que hace referencia solo a una tabla y recupera los
datos de columnas dentro de una tabla sin modificar esos datos. Entre más complicada es la
vista, más complicada es la expresión de consulta en la que se basa la vista.
Sintaxis:
Créate view<nombre_vista>[(nombre_column)] as <expresión_columna>[with check option]
7. Créate view con_emp As select ID_empleado, AÑO_1999, AÑO_2000
From comisiones_empleado
Where AÑO_1999>100,
----***Eliminación de vista de la base de datos.-------***
Sintaxis:
Drop view <nombre_table>
Drop view con_emp;
INDICES
Un índice es una estructura de disco asociada con una tabla o una vista que acelera la
recuperación de filas de la tabla o de la vista. Un índice contiene claves generadas a partir de una
o varias columnas de la tabla o la vista. Dichas claves están almacenadas en una estructura (árbol
b) que permite que SQL Server busque de forma rápida y eficiente la fila o filas asociadas a los
valores de cada clave.
Una tabla o una vista puede contener los siguientes tipos de índices:
Agrupado
Los índices agrupados ordenan y almacenan las filas de los datos de la tabla o vista de acuerdo
con los valores de la clave del índice. Son columnas incluidas en la definición del índice. Sólo
puede haber un índice clúster por cada tabla, porque las filas de datos sólo pueden estar
ordenadas de una forma.
La única ocasión en la que las filas de datos de una tabla están ordenadas es cuando la tabla
contiene un índice clúster. Cuando una tabla tiene un índice clúster, la tabla se denomina tabla
agrupada. Si una tabla no tiene un índice clúster, sus filas de datos están almacenadas en una
estructura sin ordenar denominada montón.
No agrupado
Los índices no agrupados tienen una estructura separada de las filas de datos. Un índice no
agrupado contiene los valores de clave de índice no agrupado y cada entrada de valor de clave
tiene un puntero a la fila de datos que contiene el valor clave.
8. El puntero de una fila de índice no agrupado hacia una fila de datos se denomina localizador de
fila. La estructura del localizador de filas depende de si las páginas de datos están almacenadas
en un montón o en una tabla agrupada. Si están en un montón, el localizador de filas es un
puntero hacia la fila. Si están en una tabla agrupada, el localizador de fila es la clave de índice
agrupada.
Puede agregar columnas sin clave al nivel hoja de un índice no agrupado con el fin de eludir los
límites existentes para las claves de índice, 900 bytes y columnas de 16 claves, así como para
ejecutar consultas indizadas y totalmente cubiertas.
DISPARADORES
Un disparador llamado Trigger es una clase especial de procedimiento almacenado, el cual se
ejecuta automáticamente cuando se produce un evento en el servidor de base de datos.
Uso de los disparadores
Evitar la ejecución de transacción inválida.
Garantizar el cumplimiento de restricciones de integridad y de reglas de negocio.
Generar automáticamente valores de columnas derivadas.
Se puede anidar
Se puede deshabilitar
No admite parámetros
Ventajas
Seguridad de los datos mejorados-Chequeos de seguridad basada en valores
Integridad de los datos mejorados-fuerzan restricciones dinámicas de integridad de datos
e integridad referencial
Ofrecen un mayor control sobre la BD
Desventajas
Solo se pueden aplicar una tabla específica, es decir un disparador no se puede usar más
de una tabla.
Efectos y características
9. No aceptan parámetros o argumentos (pero podrían almacenar los datos afectados en
tablas temporales)
No pueden ejecutar las operaciones COMMIT o ROLLBACK porque estas son parte de la
sentencia SQL del disparador (únicamente a través de transacciones autónomas)
Pueden causar errores de mutaciones en las tablas, si se han escrito de manera deficiente.
Tipos
Existen dos tipos de disparadores que se clasifican según la cantidad de ejecuciones a realizar:
Row Triggers (o Disparadores de fila): son aquellas que se ejecutaran cada vez que se llama al
disparador desde la tabla asociada al trigger
Statement Triggers (o Disparadores de secuencia): son aquellos que sin importar la cantidad de
veces que se cumpla con la condición, su ejecución es única.
Pueden ser de sesión y almacenados; pero no son recomendables.
Ejemplo
Un sencillo ejemplo (para SQL Server) sería crear un Trigger para insertar un pedido de algún
producto cuando la cantidad de éste, en nuestro almacén, sea inferior a un valor dado.
CREATE TRIGGER TR_ARTICULO ON ARTICULOS AFTER UPDATE AS BEGIN INSERT INTO
HCO_ARTICULO (IDARTICULO, STOCK, FECHA) SELECT ID_ARTICULO, STOCK, GETDATE() FROM
INSERTED END
INSERT INTO ARTICULOS VALUES (1, 'MEMORIA', 12, '12/03/2014')
SELECT * FROM ARTICULOS
UPDATE ARTICULOS SET STOCK = STOCK - 20 WHERE ID_ARTICULO = 1
SELECT * FROM HCO_ARTICULO
CREATE TRIGGER ver_salario
BEFORE UPDATE ON empleados
REFERENCING NEW ROW AS n, OLD ROW AS o
FOR EACH ROW
IF n.salario <> o.salario THEN
END IF;
10. PROCEDIMIENTOS ALMACENADOS
Un procedimiento almacenado es un conjunto de sentencia de SQL y de control de flujo
Procedimiento almacenados definidos por el usuario son procedimientos definidos por el usuario
que se debe llamar explícitamente.
Los procedimientos almacenados son un conjunto pre compilado de instrucciones transact-SQL
almacenadas bajo de un solo nombre y procesada como una unidad.
Características
Una vez creado el procedimiento almacenado, se puede invocar directamente desde una
aplicación o sustituir el nombre de una tabla o vista el nombre del procedimiento le da una
clausulas llamada select.
Ventajas
Simplifica la ejecución de tareas repetitivas
Reduce el tráfico a través de la red
Permite el desarrollo modular de aplicaciones
Ayuda a proveer la seguridad
Desventajas
Esclavitud:- los procedimientos almacenados nos esclavizan al motor de la base de datos
Realiza algoritmos complejos ejemplo: algoritmo geográfico de mapeo realiza cálculos
de ingeniería.