Está en la página 1de 42

2

CONTENIDO
CONTENIDO.............................................................................................................................2
UNIDAD 1.................................................................................................................................4
INTRODUCCIN AL SISTEMA MANEJADOR DE BASE DE DATOS (DBMS)................................4
1.1 CONCEPTOS...................................................................................................................7
1.2 CARACTERSTICAS DE UN DBMS....................................................................................8
UNIDAD 2.................................................................................................................................9
LENGUAJE DE DEFINICIN DE DATOS...................................................................................9
2.1 CREACIN DE BASE DE DATOS....................................................................................10
2.2 CREACIN DE TABLAS..................................................................................................11
2.2.1 INTEGRIDAD..........................................................................................................12
2.2.2 INTEGRIDAD REFERENCIAL DECLARATIVA.............................................................13
2.2.3 CREACIN DE NDICES..........................................................................................14
UNIDAD 3...............................................................................................................................15
CONSULTAS Y LENGUAJE DE MANIPULACIN DE DATOS....................................................15
3.1 INSTRUCCIONES INSERT, UPDATE, DELETE..................................................................15
3.2 CONSULTAS BSICAS SELECT, WHERE Y FUNCIONES A NIVEL DE REGISTRO................18
3.3 CONSULTAS SOBRE MLTIPLES TABLAS.......................................................................19
3.3.1 SUBCONSULTAS.....................................................................................................20
3.3.2 OPERADORES JOIN................................................................................................20
3.4 AGREGACIN GROUP BY, HAVING................................................................................22
4.1 PROPIEDAD DE UNA TRANSACCIN..............................................................................27
4.2 GRADOS DE CONSISTENCIA.........................................................................................28
4.3 NIVELES DE AISLAMIENTO............................................................................................29
4.4 INSTRUCCIONES COMMIT Y ROLLBACK.........................................................................30
UNIDAD 5...............................................................................................................................31
VISTAS...............................................................................................................................31
5.1 DEFINICIN Y OBJETIVO DE LAS VISTAS.......................................................................32
5.2 INSTRUCCIONES PARA LA ADMINISTRACIN DE VISTAS...............................................33
UNIDAD 6...............................................................................................................................33
SEGURIDAD........................................................................................................................33
6.1 ESQUEMAS DE AUTORIZACIN.....................................................................................34
6.2 INSTRUCCIONES GRANT Y REVOKE..............................................................................35
UNIDAD 7...............................................................................................................................36
INTRODUCCIN AL SQL PROCEDURAL................................................................................36
7.1 PROCEDIMIENTOS ALMACENADOS...............................................................................37
7.2 DISPARADORES (TRIGGERS).........................................................................................38
BIBLIOGRAFA........................................................................................................................39

INTRODUCCIN

Una base de datos o banco de datos es un conjunto de datos pertenecientes


a un mismo contexto y almacenados sistemticamente para su posterior
uso. En este sentido, una biblioteca puede considerarse una base de datos
compuesta en su mayora por documentos y textos impresos en papel e
indexados para su consulta. En la actualidad, y debido al desarrollo
tecnolgico de campos como la informtica y la electrnica, la mayora de
las bases de datos estn en formato digital (electrnico), que ofrece un
amplio rango de soluciones al problema de almacenar datos.
Existen programas denominados sistemas gestores de bases de datos,
abreviados SGBD, que permiten almacenar y posteriormente acceder a los
datos de forma rpida y estructurada. Las propiedades de estos SGBD, as
como su utilizacin y administracin, se estudian dentro del mbito de la
informtica.
Las aplicaciones ms usuales son para la gestin de empresas e
instituciones pblicas. Tambin son ampliamente utilizadas en entornos
cientficos con el objeto de almacenar la informacin experimental.
Aunque las bases de datos pueden contener muchos tipos de datos, algunos
de ellos se encuentran protegidos por las leyes de varios pases. Por
ejemplo, en Espaa los datos personales se encuentran protegidos por la
Ley Orgnica de Proteccin de Datos de Carcter Personal (LOPD).

UNIDAD 1
INTRODUCCIN AL SISTEMA MANEJADOR DE BASE DE
DATOS (DBMS)
El sistema manejador de bases de datos es la porcin ms importante del
software de un sistema de base de datos. Un DBMS es una coleccin de
numerosas rutinas de software interrelacionadas, cada una de las cuales es
responsable de alguna tarea especfica.
Las funciones principales de un DBMS son:

Crear y organizar la Base de datos.


Manejar los datos de acuerdo a las peticiones de los usuarios.
Registrar el uso de las bases de datos.
Interaccin con el manejador de archivos.
Respaldo y recuperacin.
Control de concurrencia.
Seguridad e integridad.

Los Sistemas Gestores de Bases de Datos son un tipo de software muy


especfico, dedicado a servir de interfaz entre las bases de datos y las
aplicaciones que la utilizan. Se compone de un lenguaje de definicin de
datos, de un lenguaje de manipulacin de datos y de un lenguaje de
consulta. En los textos que tratan este tema, o temas relacionados, se
mencionan los trminos SGBD y DBMS, siendo ambos equivalentes, y
acrnimos, respectivamente, de Sistema Gestor de Bases de Datos y
DataBase Management System, su expresin inglesa.

Motor Ncleo DBMS: recibe los requerimientos lgicos de E/S y los


convierte en operaciones de lectura y escritura.
Lgicos: son cualquier tipo de consulta requerimiento de lectura con ingreso
de datos (requerimiento de estructura) es ayudado por el Sistema Operativo
para convertir estos requerimientos lgicos en fsicos que actan sobre
dispositivos de almacenamiento.
Herramientas de definicin: permite definir y modificar la estructura de la
Base de Datos, a este nivel definimos lo que se conoce como "Esquema "
que es la definicin total de Base de Datos, es que definimos la estructura
de la tabla, los tipos de campos, las restricciones para los campos.

Subesquema: manejo de vistas de datos, de niveles externos.

Esquema: manejo de niveles conceptuales.

Interface de Procesamiento: me provee de las facilidades de


actualizacin, despliegue y visualizacin de datos.
Desarrollo de Aplicaciones: me permite generar una aplicacin por
Diccionario de Datos: este es el componente al subsistema con el que
interactan directamente el DBA, le proporciona niveles de consulta y
reportes tiles para su trabajo de administracin. Es la descripcin de
la estructura de Base de Datos y relaciones entre datos, y programas.

DBMS
Caractersticas y Objetos:
Independencia de Datos: el DBMS me provee una independencia de
mis datos vs. las aplicaciones.
Cambio en datos no implica cambio en programas y viceversa
(Menor coste de mantenimiento).

Minimizar Redundancia (Datos repetidos): desperdicio de Espacio de


Almacenamiento.

Independencia de datos es proteger nuestro programa de aplicaciones


frente a las modificaciones en la estructura de datos y viceversa, ya sea en
forma fsica lgica.

6
Independencia Fsica: es proteccin a los programas de aplicacin debido a
cambios en la estructura de archivos, con cambios en las caractersticas de
los campos.

Independencia Lgica: proteccin a los programas de aplicacin


cuando se modifica el esquema.
Redundancia, datos repetidos y distribuidos en cualquier parte. El
efecto que ocasiona la redundancia es tener inconsistencia de datos y
desperdicio de espacio de almacenamiento.
Esta se presenta cuando se repiten innecesariamente datos en los archivos
que conforman la base de datos.
Inconsistencia de Datos: dato que esta en lugar con un valor y
encuentra en otro lugar con otro valor.
Ocurre cuando existe informacin contradictoria o incongruente en la base
de datos.

1.1 CONCEPTOS

7
Un sistema de administracin de bases de datos DBMS (Database
Management System, por sus siglas en ingls) es un sistema basado en
computador (software) que maneja una base de datos, o una coleccin de
bases de datos o archivos. La persona que administra un D0BMS es
conocida como el DBA (Database Administrator, por sus siglas en ingles).
Esta compuesto por:

DDL (Data Definition Language): Lenguaje de Definicin de Datos.


DML (Data Manipulation Language): Lenguaje de Manipulacin de
Datos.
SQL: Lenguaje de Consulta.

Los sistemas de administracin de bases de datos son usados para:

Permitir a los usuarios acceder y manipular la base de datos


proveyendo mtodos para construir sistemas de procesamiento de
datos para aplicaciones que requieran acceso a los datos.
Proveer a los administradores las herramientas que les permitan
ejecutar tareas de mantenimiento y administracin de los datos.

Algunas de las funciones de un DBMS son:

Definicin de la base de datos - como la informacin va a ser


almacenada y organizada.
Creacin de la base de datos - almacenamiento de datos en una base
de datos definida.
Recuperacin de los datos - consultas y reportes.
Actualizacin de los datos - cambiar los contenidos de la base de
datos.
Programacin de aplicaciones de para el desarrollo de software.
Control de la integridad de la base de datos.
Monitoreo del comportamiento de la base de datos.

1.2 CARACTERSTICAS DE UN DBMS


Las principales caractersticas de un manejador de base de datos son:
CONTROL DE LA REDUNDANCIA DE DATOS
Este consiste en lograr una mnima cantidad de espacio de
almacenamiento para almacenar los datos evitando la duplicacin de la
informacin.
MANTENIMIENTO DE LA INTEGRIDAD
La integridad de los datos es la que garantiza la precisin o exactitud de la
informacin contenida en una base de datos. Los datos interrelacionados
deben siempre representar informacin correcta a los usuarios.

SOPORTE PARA CONTROL DE TRANSACCIONES Y RECUPERACIN DE


FALLAS.
Se conoce como transaccin toda operacin que se haga sobre la base de
datos. Las transacciones deben por lo tanto ser controladas de manera que
no alteren la integridad de la base de datos. La recuperacin de fallas tiene
que ver con la capacidad de un sistema DBMS de recuperar la informacin
que se haya perdido durante una falla en el software o en el hardware.
INDEPENDENCIA DE LOS DATOS.
En las aplicaciones basadas en archivos, el programa de aplicacin debe
conocer tanto la organizacin de los datos como las tcnicas que el
permiten acceder a los datos. En los sistemas DBMS los programas de
aplicacin no necesitan conocer la organizacin de los datos en el disco
duro. Este totalmente independiente de ello.
SEGURIDAD
La disponibilidad de los datos puede ser restringida a ciertos usuarios.
Segn los privilegios que posea cada usuario de la base de datos, podr
acceder a mayor informacin que otros.

VELOCIDAD
Los sistemas DBMS modernos poseen altas velocidades de respuesta y
proceso.
INDEPENDENCIA DEL HARDWARE
La mayora de los sistemas DBMS estn disponibles para ser instalados en
mltiples plataformas de hardware.

UNIDAD 2
LENGUAJE DE DEFINICIN DE DATOS
Un lenguaje de definicin de datos (Data Definition Language, DDL por sus
siglas en ingls) es un lenguaje proporcionado por el sistema de gestin de
base de datos que permite a los usuarios de la misma llevar a cabo las
tareas de definicin de las estructuras que almacenarn los datos as como
de los procedimientos o funciones que permitan consultarlos.
El lenguaje de programacin SQL, el ms difundido entre los gestores de
bases de datos, admite las siguientes sentencias de definicin: CREATE,
DROP y ALTER, cada una de las cuales se puede aplicar a las tablas, vistas,
procedimientos almacenados y triggers de la base de datos.
Otras que se incluyen dentro del DDL, pero que su existencia depende de la
implementacin del estndar SQL que lleve a cabo el gestor de base de
datos son GRANT y REVOKE, los cuales sirven para otorgar permisos o
quitarlos, ya sea a usuarios especficos o a un rol creado dentro de la base
de datos.
Una vez finalizado el diseo de una base de datos y escogido un SGBD para
su implementacin, el primer paso consiste en especificar el esquema
conceptual y el esquema interno de la base de datos, y la correspondencia
entre ambos. En muchos SGBD no se mantiene una separacin estricta de
niveles, por lo que el administrador de la base de datos y los diseadores
utilizan el mismo lenguaje para definir ambos esquemas, es el lenguaje de
definicin de datos (LDD). El SGBD posee un compilador de LDD cuya
funcin consiste en procesar las sentencias del lenguaje para identificar las

10
descripciones de los distintos elementos de los esquemas y almacenar la
descripcin del esquema en el catlogo o diccionario de datos.

2.1 CREACIN DE BASE DE DATOS


Una base de datos en un sistema relacional est compuesta por un conjunto
de tablas, que corresponden a las relaciones del modelo relacional. En la
terminologa usada en SQL no se alude a las relaciones, del mismo modo
que no se usa el trmino atributo, pero s la palabra columna, y no se habla
de tupla, sino de lnea. A continuacin se usarn indistintamente ambas
terminologas, por lo que tabla estar en lugar de relacin, columna en el de
atributo y lnea en el de tupla, y viceversa. Antes de poder proceder a la
creacin de las tablas, normalmente hay que crear la base de datos, lo que
a menudo significa definir un espacio de nombres separado para cada
conjunto de tablas. De esta manera, para una DBMS se pueden gestionar
diferentes bases de datos independientes al mismo tiempo sin que se den
conflictos con los nombres que se usan en cada una de ellas.
Para crear una base de datos por ejemplo en Mysql debes de utilizar la
instruccin CREATE DATABASE nombre_base_datos que es similar en los
otros manejadores de bases de datos
Prcticamente, la creacin de la base de datos consiste en la creacin de las
tablas que la componen. En realidad, antes de poder proceder a la creacin
de las tablas, normalmente hay que crear la base de datos, lo que a
menudo significa definir un espacio de nombres separado para cada
conjunto de tablas. De esta manera, para una DBMS se pueden gestionar
diferentes bases de datos independientes al mismo tiempo sin que se den
conflictos con los nombres que se usan en cada una de ellas. El sistema
previsto por el estndar para crear los espacios separados de nombres
consiste en usar las instrucciones SQL "CREATE SCHEMA". A menudo, dicho

11
sistema no se usa pero cada DBMS prev un procedimiento propietario para
crear una base de datos. Normalmente, se ampla el lenguaje SQL
introduciendo una instruccin no prevista en el estndar: "CREATE
DATABASE".
La sintaxis empleada por PostgreSQL, pero tambin por las DBMS ms
difundidas, es la siguiente:
CREATE DATABASE nombre_base de datos

2.2 CREACIN DE TABLAS


En general, la mayora de las bases de datos poseen potentes editores de
bases que permiten la creacin rpida y sencilla de cualquier tipo de tabla
con cualquier tipo de formato.
Sin embargo, una vez la base de datos est alojada en el servidor, puede
darse el caso de que queramos introducir una nueva tabla ya sea con
carcter temporal (para gestionar un carrito de compra por ejemplo) o bien
permanente por necesidades concretas de nuestra aplicacin.
En estos casos, podemos, a partir de una sentencia SQL, crear la tabla con
el formato que deseemos lo cual nos puede ahorrar ms de un quebradero
de cabeza.
Este tipo de sentencias son especialmente tiles para bases de datos como
Mysql, las cuales trabajan directamente con comandos SQL y no por medio
de editores.
Para crear una tabla debemos especificar diversos datos: El nombre que le
queremos asignar, los nombres de los campos y sus caractersticas.
Adems, puede ser necesario especificar cules de estos campos van a ser
ndices y de qu tipo van a serlo.

12

La sintaxis de creacin puede variar ligeramente de una base de datos a


otra ya que los tipos de campo aceptados no estn completamente
estandarizados.
Tras la creacin de la base de datos el siguiente paso que se debe realizar
es la creacin de la tabla, o tablas, que almacenarn la informacin. Los
datos de los clientes, de los pedidos, de los socios, etc.
Esta informacin ser la que gestionen todos los dems objetos de la base
de datos (consultas, formularios, etc.), por lo que es muy importante
planificar bien la estructura que van a tener los datos (como van a estar
dispuestos en la tabla, de que naturaleza o tipo va a ser cada uno, en que
orden estarn colocados, etc), con el fin de poder dar respuesta a todas
las cuestiones que se puedan plantear sobre el manejo de dicha
informacin.
Para crear una tabla debemos especificar diversos datos: El nombre que le
queremos asignar, los nombres de los campos y sus caractersticas.
Adems, puede ser necesario especificar cules de estos campos van a ser
ndices y de qu tipo van a serlo.
La sintaxis de creacin puede variar ligeramente de una base de datos a
otra ya que los tipos de campo aceptados no estn completamente
estandarizados.
A continuacin os explicamos someramente la sintaxis de esta sentencia y
os proponemos una serie de ejemplos prcticos:
Sintaxis
Create Table nombre_tabla
(nombre_campo_1 tipo_1
nombre_campo_2 tipo_2
nombre_campo_n tipo_n
Key(campo_x,...)

2.2.1 INTEGRIDAD
El trmino integridad de datos se refiere a la correccin y completitud de los
datos en una base de datos. Cuando los contenidos se modifican con
sentencias INSERT, DELETE o UPDATE, la integridad de los datos
almacenados puede perderse de muchas maneras diferentes. Pueden
aadirse datos no vlidos a la base de datos, tales como un pedido que
especifica un producto no existente.
Pueden modificarse datos existentes tomando un valor incorrecto, como por
ejemplo si se reasigna un vendedor a una oficina no existente. Los cambios
en la base de datos pueden perderse debido a un error del sistema o a un
fallo en el suministro de energa. Los cambios pueden ser aplicados
parcialmente, como por ejemplo si se aade un pedido de un producto sin
ajustar la cantidad disponible para vender.
Una de las funciones importantes de un DBMS relacional es preservar la
integridad de sus datos almacenados en la mayor medida posible.

13

Tipos de restricciones de integridad


Datos Requeridos: establece que una columna tenga un valor no NULL. Se
define efectuando la declaracin de una columna es NOT NULL cuando la
tabla que contiene las columnas se crea por primera vez, como parte de la
sentencia CREATE TABLE.
Chequeo de Validez: cuando se crea una tabla cada columna tiene un
tipo de datos y el DBMS asegura que solamente los datos del tipo
especificado sean ingresados en la tabla.
Integridad de entidad: establece que la clave primaria de una tabla
debe tener un valor nico para cada fila de la tabla; si no, la base de
datos perder su integridad. Se especifica en la sentencia CREATE
TABLE. El DBMS comprueba automticamente la unicidad del valor de
la clave primaria con cada sentencia INSERT Y UPDATE. Un intento de
insertar o actualizar una fila con un valor de la clave primaria ya
existente fallar.
Integridad referencial: asegura la integridad entre las claves ajenas y
primarias (relaciones padre/hijo). Existen cuatro actualizaciones de la
base de datos que pueden corromper la integridad referencial:
La insercin de una fila hijo se produce cuando no
coincide la clave ajena con la clave primaria del padre.
La actualizacin en la clave ajena de la fila hijo, donde se
produce una actualizacin en la clave ajena de la fila hijo
con una sentencia UPDATE y la misma no coincide con
ninguna clave primaria.
La supresin de una fila padre, con la que, si una fila
padre -que tiene uno o ms hijos- se suprime, las filas
hijos quedarn hurfanas.
La actualizacin de la clave primaria de una fila padre,
donde si en una fila padre, que tiene uno o ms hijos se
actualiza su clave primaria, las filas hijos quedarn
hurfanas.

2.2.2 INTEGRIDAD REFERENCIAL DECLARATIVA


La integridad de los datos es la propiedad que asegura que informacin
dada es correcta, al cumplir ciertas aserciones.
Las restricciones de integridad aseguran que la informacin contenida en
una base de datos es correcta.
Las restricciones de integridad son propiedades de la base de datos que se
deben satisfacer en cualquier momento.
Las restricciones de integridad aseguran que la informacin contenida en la
base de datos cumple ciertas restricciones para los diferentes estados.

14
La integridad referencial es una propiedad deseable en las bases de datos.
Gracias a la integridad referencial se garantiza que una entidad (fila o
registro) siempre se relaciona con otras entidades vlidas, es decir, que
existen en la base de datos. Implica que en todo momento dichos datos
sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones
mal resueltas.
Todas las bases de datos relacionales gozan de esta propiedad gracias a
que el software gestor de base de datos vela por su cumplimiento. En
cambio, las bases de datos jerrquicas requieren que los programadores se
aseguren de mantener tal propiedad en sus programas.

Ejemplo:
Supongamos una base de datos con las entidades Persona y Factura. Toda
factura corresponde a una persona y solamente una. Implica que en todo
momento dichos datos sean correctos, sin repeticiones innecesarias, datos
perdidos y relaciones mal resueltas.
Supongamos que una persona se identifica por su atributo DNI (Documento
nacional de identidad). Tambin tendr otros atributos como el nombre y la
direccin. La entidad Factura debe tener un atributo DNI_cliente que
identifique a quin pertenece la factura.
Por sentido comn es evidente que todo valor de DNI_cliente debe
corresponder con algn valor existente del atributo DNI de la entidad
Persona. Esta es la idea intuitiva de la integridad referencial.
Existen tres tipos de integridad referencial:

Integridad referencial dbil: si en una tupla de R todos los valores de


los atributos de K tienen un valor que no es el nulo, entonces debe
existir una tupla en S que tome esos mismos valores en los atributos
de J;
Integridad referencial parcial: si en una tupla de R algn atributo de K
toma el valor nulo, entonces debe existir una tupla en S que tome en
los atributos de J los mismos valores que los atributos de K con valor
no nulo; y
Integridad referencial completa: en una tupla de R todos los atributos
de K deben tener el valor nulo o bien todos tienen un valor que no es
el nulo y entonces debe existir una tupla en S que tome en los
atributos de J los mismos valores que toman los de K.

2.2.3 CREACIN DE NDICES


Un ndice (o KEY, o INDEX) es un grupo de datos que MySQL asocia con una
o varias columnas de la tabla. En este grupo de datos aparece la relacin
entre el contenido y el nmero de fila donde est ubicado.

15
Los ndices -como los ndices de los libros- sirven para agilizar las consultas
a las tablas, evitando que mysql tenga que revisar todos los datos
disponibles para devolver el resultado.
Podemos crear el ndice a la vez que creamos la tabla, usando la palabra
INDEX seguida del nombre del ndice a crear y columnas a indexar (que
pueden ser varias):
INDEX nombre_indice (columna_indexada, columna_indexada2...)
La sintaxis es ligeramente distinta segun la clase de ndice:
PRIMARY KEY (nombre_columna_1 [,nombre_columna2...])
UNIQUE INDEX nombre_indice (columna_indexada1
[,columna_indexada2 ...])
INDEX nombre_index (columna_indexada1 [,columna_indexada2...])
Podemos tambin aadirlos a una tabla despus de creada:
ALTER TABLE nombre_tabla ADD INDEX nombre_indice (columna_indexada);
Si queremos eliminar un ndice: ALTER TABLE tabla_nombre DROP INDEX
nombre_indice
Los index permiten mayor rpidez en la ejecucin de las consultas a la base
de datos tipo SELECT ... WHERE
La regla bsica es pues crear tus ndices sobre aquellas columnas que vayas
a usar con una clusula WHERE, y no crearlos con aquellas columnas que
vayan a ser objeto de un SELECT: SELECT texto from tabla_libros WHERE
autor = Vazquez; En este ejemplo, la de autor es una columna buena
candidata a un indice; la de texto, no.
Otra regla bsica es que son mejores candidatas a indexar aquellas
columnas que presentan muchos valores distintos, mientras que no son
buenas candidatas las que tienen muchos valores idnticos, como por
ejemplo sexo (masculino y femenino) porque cada consulta implicar
siempre recorrer prcticamente la mitad del ndice.
Tipos de ndice
En algunas bases de datos existen diferencias entre KEY e INDEX. No as en
MySQL donde son sinnimos.
Un ndice que s es especial es el llamado PRIMARY KEY. Se trata de un
ndice diseado para consultas especialmente rpidas. Todos sus campos
deben ser UNICOS y no admite NULL
Un indice UNIQUE es aquel que no permite almacenar dos valores iguales.
Los indices FULL TEXT permiten realizar bsquedas de palabras. Puedes
crear indices FULLTEXT sobre columnas tipo CHAR, VARCHAR o TEXT.

UNIDAD 3

16

CONSULTAS
DATOS

LENGUAJE

DE

MANIPULACIN

DE

Un Lenguaje de Manipulacin de Datos (Data Manipulation Language, DML)


es un lenguaje proporcionado por el sistema de gestin de base de datos
que permite a los usuarios de la misma llevar a cabo las tareas de consulta
o manipulacin de los datos, organizados por el modelo de datos adecuado.
El lenguaje de manipulacin de datos ms popular hoy da es SQL, usado
para recuperar y manipular datos en una base de datos relacional. Otros
ejemplos de DML son los usados por bases de datos IMS/DL1, CODASYL u
otras.
Clasificacin del lenguaje de manipulacin de datos:
Son DML: Select Insert Delete Update
Se clasifican en dos grandes grupos:
Lenguajes de consulta procedimentales
Lenguajes procedimentales. En este tipo de lenguaje el usuario da
instrucciones al sistema para que realice una serie de procedimientos u
operaciones en la base de datos para calcular un resultado final.
lenguajes de consulta no procedimentales
En los lenguajes no procedimentales el usuario describe la informacin
deseada sin un procedimiento especfico para obtener esa informacin.

3.1 INSTRUCCIONES INSERT, UPDATE, DELETE


En SQL, hay fundamental y bsicamente dos formas para insertar datos en
una tabla: Una es insertar una fila por vez, y la otra es insertar filas
mltiples por vez. Primero observemos como podemos insertamos datos a
travs de una fila por vez:
La sintaxis para insertar datos en una tabla mediante una fila por vez es la
siguiente:
INSERT INTO "nombre_tabla" ("columna1", "columna2", ...)
VALUES ("valor1", "valor2", ...)
Suponiendo que tenemos una taba con la siguiente estructura,

Tabla Store_Information
Column Name Data Type
store_name
char(50)
Sales
float
Date
datetime
Y ahora deseamos insertar una fila adicional en la tabla que represente los
datos de ventas para Los ngeles el 10 de enero de 1999. En ese da, este
negocio tena $900 dlares estadounidenses en ventas. Por lo tanto,
utilizaremos la siguiente escritura SQL:

17
INSERT INTO Store_Information (store_name, Sales, Date)
VALUES ('Los Angeles', 900, '10-Jan-1999')
El segundo tipo de INSERT INTO nos permite insertar filas mltiples en una
tabla. A diferencia del ejemplo anterior, donde insertamos una nica fila al
especificar sus valores para todas las columnas, ahora utilizamos la
instruccin SELECT para especificar los datos que deseamos insertar en la
tabla. Si est pensando si esto significa que est utilizando informacin de
otra tabla, est en lo correcto.
La sintaxis es la siguiente:
INSERT INTO "tabla1" ("columna1", "columna2", ...)
SELECT "columna3", "columna4", ...
FROM "tabla2"
Note que esta es la forma ms simple. La instruccin entera puede contener
fcilmente clusulas WHERE, GROUP BY, y HAVING, as como tambin
uniones y alias.
Entonces por ejemplo, si deseamos tener una tabla Store_Information, que
recolecte la informacin de ventas para el ao 1998, y ya conoce en donde
reside la fuente de datos en tabla Sales_Information table,
Ingresaremos:
INSERT INTO Store_Information (store_name, Sales, Date)
SELECT store_name, Sales, Date
FROM Sales_Information
WHERE Year(Date) = 1998
Aqu hemos utilizado la sintaxis de Servidor SQL para extraer la informacin
anual por medio de una fecha. Otras bases de datos relacionales pueden
tener sintaxis diferentes. Por ejemplo, en Oracle, utilizar to_char
(date,'yyyy')=1998.
Una vez que hay datos en la tabla, podramos tener la necesidad de
modificar los mismos. Para hacerlo, utilizamos el comando UPDATE. La
sintaxis para esto es,

UPDATE "nombre_tabla"
SET "columna_1" = [nuevo valor]
WHERE {condicin}
Por ejemplo, digamos que actualmente tenemos la tabla a continuacin:

Tabla Store_Information
store_name Sales Date
Los Angeles 1500 05-Jan-1999
San Diego
250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston
700 08-Jan-1999
Y notamos que las ventas para Los Angeles el 08/01/1999 es realmente de
500 en vez de 300 dlares estadounidenses, y que esa entrada en
particular necesita actualizarse.
Para hacerlo, utilizamos el siguiente SQL:

18

UPDATE Store_Information
SET Sales = 500
WHERE store_name = "Los Angeles"
AND Date = "08-Jan-1999"
La tabla resultante ser vera
Tabla Store_Information

store_name Sales Date


Los Angeles 1500 05-Jan-1999
San Diego
250 07-Jan-1999
Los Angeles 500 08-Jan-1999
Boston
700 08-Jan-1999
En este caso, hay slo una fila que satisface la condicin en la clusula
WHERE. Si hay mltiples filas que satisfacen la condicin, todas ellas se
modificarn.
Tambin es posible UPDATE mltiples columnas al mismo tiempo. La
sintaxis en este caso se vera como la siguiente:
UPDATE "nombre_tabla"
SET colonne 1 = [[valor1], colonne 2 = [valor2]
WHERE {condicin}
A veces podemos desear deshacernos de los registros de una tabla. Para
ello, utilizamos el comando DELETE FROM. La sintaxis para esto es,
DELETE FROM "nombre_tabla"
WHERE {condicin}
Es ms fcil utilizar un ejemplo. Por ejemplo, digamos que actualmente
tenemos la siguiente tabla:

Tabla Store_Information
store_name Sales Date
Los Angeles 1500 05-Jan-1999
San Diego
250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston
700 08-Jan-1999
Y decidimos no mantener ninguna informacin sobre Los ngeles en esta
tabla. Para lograrlo, ingresamos el siguiente SQL:
DELETE FROM Store_Information
WHERE store_name = "Los Angeles"

store_name Sales Date


San Diego 250 07-Jan-1999
Boston
700 08-Jan-1999

3.2 CONSULTAS BSICAS SELECT, WHERE Y FUNCIONES A


NIVEL DE REGISTRO.
Para qu utilizamos los comandos SQL El uso comn es la seleccin de
datos desde tablas ubicadas en una base de datos. Inmediatamente, vemos

19
dos palabras claves: necesitamos SELECT la informacin FROM una tabla.
(Note que la tabla es un contenedor que reside en la base de datos donde
se almacena la informacin. Para obtener ms informacin acerca de cmo
manipular tablas. Por lo tanto tenemos la estructura SQL ms bsica:
SELECT "nombre_columna" FROM "nombre_tabla"
Para ilustrar el ejemplo anterior, suponga que tenemos la siguiente tabla:
Tabla Store_Information
store_na
Sales Date
me
Los
1500 05-JanAngeles
1999
07-JanSan Diego 250
1999
Los
08-Jan300
Angeles
1999
08-JanBoston
700
1999
Podemos utilizar esta tabla como ejemplo a lo largo de la gua de referencia
(esta tabla aparecer en todas las secciones). Para seleccionar todos los
negocios en esta tabla, ingresamos:
SELECT store_name FROM Store_Information
Resultado:
store_na
me
Los
Angeles
San Diego
Los
Angeles
Boston
Pueden seleccionarse los nombres de columnas mltiples, as como tambin
los nombres de tablas mltiples.
Luego, podramos desear seleccionar condicionalmente los datos de una
tabla. Por ejemplo, podramos desear slo recuperar los negocios con ventas
mayores a $1.000 dlares. Para ello, utilizamos la palabra clave WHERE. La
sintaxis es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condicin"

Por ejemplo, para seleccionar todos los negocios con ventas mayores a
1.000 en la Tabla Store_Information,

20

Tabla Store_Information
store_na
me
Los
Angeles

Sales Date

1500 05-Jan
1999
07-JanSan Diego 250
1999
Los
08-Jan300
Angeles
1999
08-JanBoston
700
1999
Ingresamos:
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
Resultado:
store_name
Los Angeles

3.3 CONSULTAS SOBRE MLTIPLES TABLAS


En una base de datos relacional, la informacin est distribuida entre
diferentes tablas relacionadas. Las clusulas obligatorias en unaconsulta
son:
SELECT. Lista de la informacin (columnas, expresiones, funciones, ) que
debe visualizarse
FROM. Detalla de que tablas o vistas debe obtenerse la informacin
Para obtener informacin de ms de una tabla, es necesario identificar las
columnas comunes entre cada par de tablas relacionadas. En la clusula
WHERE se definen las relaciones entre las tablas listadas en la clusula
FROM. La SELECT puede tener columnas o expresiones de una o ms de
estas tablas.
Una JOIN es una consulta que combina filas de dos o ms tablas o vistas.
Las tablas de la JOIN deben aparecer en el FROM.

21

3.3.1 SUBCONSULTAS
Es posible incorporar una instruccin SQL dentro de otra. Cuando esto se
hace en las instrucciones where o having, tenemos una construccin de
subconsulta.
La sintaxis es la siguiente:
SELECT "nombre1_columna"
FROM "nombre1_tabla"
WHERE "nombre2_columna" [Operador de Comparacin]
(SELECT "nombre3_columna"
FROM "nombre2_tabla"
WHERE [Condicin])
Una subconsulta es una sentencia select que aparece dentro de otra
sentencia select que llamaremos consulta principal.
Se puede encontrar en la lista de seleccin, en la clusula where o en la
clusula having de la consulta principal.
Una subconsulta tiene la misma sintaxis que una sentencia select normal
exceptuando que aparece encerrada entre parntesis, no puede contener la
clusula order by, ni puede ser la unin de varias sentencias select, adems
tiene algunas restricciones en cuanto a nmero de columnas segn el lugar
donde aparece en la consulta principal.
A menudo, es necesario, dentro del cuerpo de una subconsulta, hacer
referencia al valor de una columna en la fila actual de la consulta principal,
ese nombre de columna se denomina referencia externa. Una referencia
externa es un nombre de columna que estando en la subconsulta, no se
refiere a ninguna columna de las tablas designadas en la from de la
subconsulta sino a una columna de las tablas designadas en la from de la
consulta principal.
Ejemplo:
SELECT numemp, nombre, (SELECT MIN(fechapedido) FROM pedidos WHERE
rep = numemp) FROM empleados;

3.3.2 OPERADORES JOIN


Ahora miremos las uniones. Para realizar uniones en SQL se requieren
mucho de los elementos que ya hemos presentado. Digamos que tenemos
las siguientes dos tablas:
Tabla Store_Information
store_na
Sales Date
me
Los
1500 05-JanAngeles
1999
07-JanSan Diego 250
1999
Los
08-Jan300
Angeles
1999
Boston
700 08-Jan-

22
1999

Tabla Geography
region_na store_na
me
me
East
Boston
East
New York
Los
West
Angeles
West
San Diego
Y queremos saber las ventas por regin. Vemos que la tabla Geography
incluye informacin sobre regiones y negocios, y la tabla Store_Information
contiene informacin de ventas para cada negocio. Para obtener la
informacin de ventas por regin, debemos combinar la informacin de las
dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a
travs del campo comn nombre_negocio
Primero presentaremos la instruccin SQL y explicaremos el uso de cada
segmento despus:
SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name
Resultado:
REGI SALE
N
S
East
700
2050
West

Las primeras dos lneas le indican a SQL que seleccione dos campos, el
primero es el campo "nombre_regin" de la tabla Geography (denominado
REGIN), y el segundo es la suma del campo "Sales" de la tabla
Store_Information (denominado SALES). Note como se utilizan los alias de
tabla aqu: Geografa se denomina A1, e Informacin_Negocio se denomina
A2. Sin los alias, la primera lnea sera
SELECT
SALES

Geography.region_name

REGION,

SUM(Store_Information.Sales)

Que es mucho ms problemtica. En esencia, los alias de tabla facilitan el


entendimiento de la totalidad de la instruccin SQL, especialmente cuando
se incluyen tablas mltiples.
Luego, pongamos nuestra atencin en la lnea 2, la instruccin WHERE. Aqu
es donde se especifica la condicin de la unin. En este caso, queremos

23
asegurarnos que el contenido en nombre_negocio en la tabla Geografa
concuerde con la tabla Store_Information, y la forma de hacerlo es
igualarlos. Esta instruccin WHEREes esencial para asegurarse de que
obtenga el resultado correcto. Sin la correcta instruccin WHERE se
producir una Unin Cartesiana. Las uniones cartesianas darn por
resultado que de la consulta se arroje toda combinacin posible de las dos
tablas (o cualquiera que sea el nmero de tablas en la instruccin FROM).
En este caso, una unin cartesiana resultara en un total de 4x4 = Se
presenta un resultado de16 filas.

3.4

AGREGACIN GROUP BY, HAVING

Las funciones de agrupacin operan sobre conjuntos de filas para dar un


resultado por grupo. As tenemos para atributos numricos.
Las funciones de agrupacin ignoran los valores NULL en las consultas,
aunque se puede utilizar NVL (en Oracle) para forzar a que considere a NULL
como un valor determinado.
La clusula GROUP BY seguida de una lista de atributos permite agrupar las
tuplas en
Grupos que tengan los mismos valores en todos los atributos de esa lista
Ejemplo:
Obtener el nmero de profesores de cada rea
SELECT COUNT(*) ,AREA
FROM PROFESORES
GROUP BY AREA;
Si quisiramos calcular el total de ventas para cada negocio entonces,
necesitamos hacer dos cosas: Primero, necesitamos asegurarnos de que
hayamos seleccionado el nombre del negocio as como tambin las ventas
totales. Segundo, debemos asegurarnos de que todas las sumas de las
ventas estn group by negocios. La sintaxis SQL correspondiente es,
SELECT "nombre1_columna", SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1-columna"
Ilustremos utilizando la siguiente tabla,
Tabla Store_Information
store_na
Sales Date
me
Los
1500 05-JanAngeles
1999
07-JanSan Diego 250
1999
Los
08-Jan300
Angeles
1999
Boston
700 08-Jan-

24
1999
Deseamos saber las ventas totales para cada negocio. Para hacerlo,
ingresaramos,
SELECT store_name, SUM(Sales)
FROM Store_Information
GROUP BY store_name
Resultado:
store_na SUM(Sale
me
s)
Los
1800
Angeles
San
250
Diego
700
Boston>
La palabra clave group by se utiliza cuando estamos seleccionado columnas
mltiples desde una tabla (o tablas) y aparece al menos un operador
aritmtico en la instruccin select. Cuando esto sucede, necesitamos group
by todas las otras columnas seleccionadas, es decir, todas las columnas
excepto aquella(s) que se operan por un operador aritmtico.
La clusula HAVING permite establecer una condicin sobre los grupos de
manera que
Slo se seleccionan aquellos grupos que la cumplen
listar los profesores y el n de clases que imparten, pero slo de aquellos
profesores que
Imparten ms de 10 clases
SELECT PROFESOR,COUNT(*)
FROM DOCENCIA
GROUP BY PROFESOR
HAVING COUNT(*)>10;
Otra cosa que las personas pueden hacer es limitar el resultado segn la
suma correspondiente (o cualquier otra funcin de agregado). Por ejemplo,
podramos desear ver slo los negocios con ventas mayores a 1 500 . En
vez de utilizar la clusula where en la instruccin sql, a pesar de que
necesitemos utilizar la clusula having, que se reserva para funciones de
agregados. La clusula having se coloca generalmente cerca del fin de la
instruccin sql, y la instruccin sql con la clusula having.
Puede o no incluir la clusula group by sintaxis para having es,
Select "nombre1_columna", sum("nombre2_columna")
from "nombre_tabla"
group by "nombre1_columna"
having (condicin de funcin aritmtica)
Nota: la clusula group by es opcional.
En nuestro ejemplo, tabla store_information,

25
Tabla store_information
store_na
Sales Date
me
Los
1500 05-JanAngeles
1999
07-JanSan Diego 250
1999
Los
08-Jan300
Angeles
1999
08-JanBoston
700
1999
Ingresaramos,
SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
Resultado:
store_na SUM(Sale
me
s)
Los
1800
Angeles

3.5 FUNCIONES DE CONJUNTO DE REGISTROS COUNT,


SUM, AVG, MAX, MIN
Funciones de agregacin Son funciones que toman una coleccin de valores
como entrada y producen un nico valor de salida. SQL proporciona cinco
funciones de agregacin primitivas:
avg: media aritmtica de un atributo o una expresin numrica
min: mnimo de un atributo o expresin numrica
max: mximo de un atributo o expresin numrica
sum: suma total de atributos o expresiones numricas
count (*): contador de tuplas count (distinct): contador de tuplas
parcial, no tiene en cuenta
Todos los operadores, excepto avg y sum, pueden operar con nmeros y
cadenas de caracteres. La funcin de agregacin se coloca en la lnea
select. La clusula group by se utiliza cuando las funciones de agregacin se
aplican a un grupo de conjuntos de tuplas, y la clusula having se utiliza
para poner una condicin a los grupos.
SQL tiene varias funciones aritmticas, y estas son:
- AVG
- COUNT
- MAX

26
- MIN
- SUM
La sintaxis para el uso de funciones es,
SELECT "tipo de funcin"("nombre_columna")
FROM "nombre_tabla"
Por ejemplo, si deseamos obtener la sumatoria de todas las ventas de la
siguiente tabla,
Tabla Store_Information
store_na
Sales Date
me
Los
1500 05-JanAngeles
1999
07-JanSan Diego 250
1999
Los
08-Jan300
Angeles
1999
08-JanBoston
700
1999
Ingresaramos
SELECT SUM(Sales) FROM Store_Information
Resultado:
SUM(Sales)
2750

2 750 representa la suma de todas las entradas de Ventas: 1500 + 250


+ 300 + 700 .
Adems de utilizar dichas funciones, tambin es posible utilizar SQL para
realizar tareas simples como suma (+) y resta (-). Para ingresar datos del
tipo caracter, hay tambin varias funciones de cadenas disponibles, tales
como funciones de concatenacin, reduccin y subcadena. Los diferentes
proveedores RDBMS tienen diferentes implementaciones de funciones de
cadenas, y es mejor consultar las referencias para sus RDBMS a fin de ver
cmo se utilizan estas funciones.
Otra funcin aritmtica es COUNT. Esto nos permite COUNT el nmero de
filas en una tabla determinada. La sintaxis es,
SELECT COUNT("nombre_columna")
FROM "nombre_columna"
Por ejemplo, si deseamos encontrar el nmero de entradas de negocios en
nuestra tabla,
Tabla Store_Information
store_na
Sales Date
me
Los
1500 05-JanAngeles
1999
07-JanSan Diego 250
1999

27
Los
Angeles
Boston

08-Jan1999
08-Jan700
1999
300

Ingresamos,
SELECT COUNT(store_name)
FROM Store_Information
Resultado:
Count(store_name)
4

COUNT y DISTINCT pueden utilizarse juntos en una instruccin para


determinar el nmero de las distintas entradas en una tabla. Por ejemplo, si
deseamos saber el nmero de los distintos negocios, ingresaramos,
SELECT COUNT(DISTINCT store_name)
FROM Store_Information
Resultado:
Count(DISTINCT store_name)
3

UNIDAD 4
CONTROL DE TRANSACCIONES
Los sistemas que tratan el problema de control de concurrencia permiten
que sus usuarios asuman que cada una de sus aplicaciones se ejecuta
atmicamente, como si no existieran otras aplicaciones ejecutndose
concurrentemente.
Esta abstraccin de una ejecucin atmica y confiable de una aplicacin se
conoce como una transaccin.
Un algoritmo de control de concurrencia asegura que las transacciones se
ejecuten atmicamente controlando la intercalacin de transacciones

28
concurrentes, para dar la ilusin de que las transacciones se ejecutan
serialmente, una despus de la otra, sin ninguna intercalacin. Las
ejecuciones intercaladas cuyos efectos son los mismos que las ejecuciones
seriales son denominadas serializables y son correctos ya que soportan la
ilusin de la atomicidad de las transacciones.
El concepto principal es el de transaccin. Informalmente, una transaccin
es la ejecucin de ciertas instrucciones que accedan a una base de datos
compartida. El objetivo del control de concurrencia y recuperacin es
asegurar que dichas transacciones se ejecuten atmicamente, es decir:
Cada transaccin accede a informacin compartida sin interferir con otras
transacciones, y si una transaccin termina normalmente, todos sus efectos
son permanentes, en caso contrario no tiene afecto alguno.
Una transaccin es la ejecucin de ciertas instrucciones que accedan a una
base de datos compartida. El objetivo del control de concurrencia y
recuperacin es asegurar que dichas transacciones se ejecuten
atmicamente, es decir:
Cada transaccin accede a informacin compartida sin interferir con otras
transacciones, y si una transaccin termina normalmente, todos sus efectos
son permanentes, en caso contrario no tiene afecto alguno.
Una base de datos est en un estado consistente si obedece todas las
restricciones de integridad (significa que cuando un registro en una tabla
haga referencia a un registro en otra tabla, el registro correspondientes
debe existir) definidas sobre ella.
Los cambios de estado ocurren debido a actualizaciones, inserciones y
supresiones de informacin. Por supuesto, se quiere asegurar que la base
de datos nunca entre en un estado de inconsistencia.

4.1 PROPIEDAD DE UNA TRANSACCIN


PROPIEDADES FUNDAMENTALES DE UNA TRANSACCIN:

Atomicidad Se refiere al hecho de que una transaccin se trata como


una unidad de operacin. Por lo tanto, o todas las acciones de la
transaccin se realizan o ninguna de ellas se lleva a cabo. La
atomicidad requiere que si una transaccin se interrumpe por una
falla, sus resultados parciales sean anulados.
Consistencia La consistencia de una transaccin es simplemente su
correctitud. En otras palabras, una transaccin es un programa
correcto que lleva a la base de datos de un estado consistente a otro

29

con la misma caracterstica. Debido a esto, las transacciones no


violan las restricciones de integridad de una base de datos.
Aislamiento Una transaccin en ejecucin no puede revelar sus
resultados a otras transacciones concurrentes antes de finalizar. Ms
an, si varias transacciones se ejecutan concurrentemente, los
resultados deben ser los mismos que si ellas se hubieran ejecutado
de manera secuencial.
Permanencia Es la propiedad de las transacciones que asegura que
una vez que una transaccin finaliza exitosamente, sus resultados
son permanentes y no pueden ser borrados de la base de datos por
alguna falla posterior. Por lo tanto, los sistemas manejadores de base
de datos aseguran que los resultados de una transaccin sobrevivirn
a fallas del sistema. Esta propiedad motiva el aspecto de
recuperacin de base de datos, el cual trata sobre cmo recuperar la
base de datos a un estado consistente donde todas las acciones que
han finalizado con xito queden reflejadas en la base.
En esencia, lo que se persigue con el procesamiento de transacciones
es, por una parte obtener una transparencia adecuada de las
acciones concurrentes a una base de datos y por otra, manejar
adecuadamente las fallas que se puedan presentar en una base de
datos. La mayora de medianas y grandes compaas modernas
utilizan el procesamiento de transacciones para sus sistemas de
produccin, y es tan imprescindible que las organizaciones no
pueden funcionar en ausencia de l.

El procesamiento de transacciones representa una enorme y significativa


porcin del mercado de los sistemas informticos (ms de cincuenta
billones de dlares al ao) y es, probablemente, la aplicacin simple ms
amplia de las computadoras.
Adems, se ha convertido en el elemento que facilita el comercio
electrnico.

Como puede percibirse, el procesamiento de transacciones es una de


las tareas ms importantes dentro de un sistema de base de datos,
pero a la vez, es una de las ms difciles de manejar debido a
diversos aspectos, tales como:

Confiabilidad Puesto que los sistemas de base de datos en lnea no


pueden fallar.
Disponibilidad Debido a que los sistemas de base de datos en lnea
deben estar actualizados correctamente todo el tiempo.
Tiempos de Respuesta En sistemas de este tipo, el tiempo de
respuesta de las transacciones no debe ser mayor a doce segundos.
hroughput Los sistemas de base de datos en lnea requieren procesar
miles de transacciones por segundo.
Atomicidad En el procesamiento de transacciones no se aceptan
resultados parciales.
Permanencia No se permite la eliminacin en la base de datos de los
efectos de una transaccin que ha culminado con xito

4.2 GRADOS DE CONSISTENCIA


Consistencia es un trmino ms amplio que el de integridad. Podra definirse
como la coherencia entre todos los datos de la base de datos. Cuando se

30
pierde la integridad tambin se pierde la consistencia. Pero la consistencia
tambin puede perderse por razones de funcionamiento.
Una transaccin finalizada (confirmada parcialmente) puede no confirmarse
definitivamente (consistencia).

Si se confirma definitivamente el sistema asegura la persistencia de


los cambios que ha efectuado en la base de datos.
Si se anula los cambios que ha efectuado son deshechos.

La ejecucin de una transaccin debe conducir a un estado de la base de


datos consistente (que cumple todas las restricciones de integridad
definidas).

Si se confirma definitivamente el sistema asegura la persistencia de


los cambios que ha efectuado en la base de datos.
Si se anula los cambios que ha efectuado son deshechos.

Una transaccin que termina con xito se dice que est comprometida
(commited), una transaccin que haya sido comprometida llevar a la base
de datos a un nuevo estado consistente que debe permanecer incluso si hay
un fallo en el sistema. En cualquier momento una transaccin slo puede
estar en uno de los siguientes estados.

Activa (Active): el estado inicial; la transaccin permanece en este


estado durante su ejecucin.
Parcialmente comprometida (Uncommited): Despus de ejecutarse la
ltima transaccin.
Fallida (Failed): tras descubrir que no se puede continuar la ejecucin
normal.
Abortada (Rolled Back): despus de haber retrocedido la transaccin
y restablecido la base de datos a su estado anterior al comienzo de la
transaccin.
Comprometida (Commited): tras completarse con xito.

Aspectos relacionados al procesamiento de transacciones


Los siguientes son los aspectos ms importantes relacionados con el
procesamiento de transacciones:
Modelo de estructura de transacciones. Es importante considerar si
las transacciones son planas o pueden estar anidadas.
Consistencia de la base de datos interna. Los algoritmos de control de
datos semntico tienen que satisfacer siempre las restricciones de
integridad cuando una transaccin pretende hacer un commit.
Protocolos de confiabilidad. En transacciones distribuidas es
necesario introducir medios de comunicacin entre los diferentes
nodos de una red para garantizar la atomicidad y durabilidad de las
transacciones. As tambin, se requieren protocolos para la
recuperacin local y para efectuar los compromisos (commit)
globales.
Algoritmos de control de concurrencia. Los algoritmos de control de
concurrencia deben sincronizar la ejecucin de transacciones
concurrentes bajo el criterio de correctitud. La consistencia entre
transacciones se garantiza mediante el aislamiento de las mismas.

4.3 NIVELES DE AISLAMIENTO

31

Las transacciones especifican un nivel de aislamiento que define el grado en


que se debe aislar una transaccin de las modificaciones de recursos o
datos realizadas por otras transacciones. Los niveles de aislamiento se
describen en cuanto a los efectos secundarios de la simultaneidad que se
permiten, como las lecturas desfasadas o ficticias.
Control de los niveles de aislamiento de transaccin:
Controla si se realizan bloqueos cuando se leen los datos y qu tipos
de bloqueos se solicitan.
Duracin de los bloqueos de lectura.
Si una operacin de lectura que hace referencia a filas modificadas
por otra transaccin:
Se bloquea hasta que se libera el bloqueo exclusivo de la fila.
Recupera la versin confirmada de la fila que exista en el
momento en el que empez la instruccin o la transaccin.
Lee la modificacin de los datos no confirmados.
El estndar ANSI/ISO SQL define cuatro niveles de aislamiento transaccional
en funcin de tres eventos que son permitidos o no dependiendo del nivel
de aislamiento. Estos eventos son:
Lectura sucia. Las sentencias SELECT son ejecutadas sin realizar bloqueos,
pero podra usarse una versin anterior de un registro. Por lo tanto, las
lecturas no son consistentes al usar este nivel de aislamiento.

Lectura no repetible. Una transaccin vuelve a leer datos que


previamente haba ledo y encuentra que han sido modificados o
eliminados por una transaccin cursada.
Lectura fantasma. Una transaccin vuelve a ejecutar una consulta,
devolviendo un conjunto de registros que satisfacen una condicin de
bsqueda y encuentra que otros registro que satisfacen la condicin
han sido insertadas por otra transaccin cursada.

Los niveles de aislamiento SQL son definidos basados en si ellos permiten a


cada uno de los eventos definidos anteriormente. Es interesante notar que
el estndar SQL no impone un esquema de cierre especfico o confiere por
mandato comportamientos particulares, pero ms bien describe estos
niveles de aislamiento en trminos de estos teniendo muchos mecanismos
de cierre/coincidencia, que dependen del evento de lectura.
Niveles de aislamiento:

32

Comportamiento permitido
Nivel de aislamiento

Lectura
Sucia No repetible Fantasma

Lectura no comprometida S

Lectura comprometida

No

Lectura repetible

No

No

Segn el estndar SQL,


SQL Server permite todos
Secuenciable
No
No
No
estos niveles, Oracle slo
permite
la
lectura
comprometida y secuenciable. Los niveles se pueden establecer en ambos
para cada transaccin. Sin embargo esto no es necesariamente cierto.
El estndar SQL trataba de establecer los niveles de aislamiento que
permitiran a varios grados de consistencia para querys ejecutadas en cada
nivel de aislamiento. Las lecturas repetibles "REPEATABLE READ" es el nivel
de aislamiento que garantiza que un query un resultado consistente. En la
definicin SQL estndar, la lectura comprometida "READ COMMITTED" no
regresa resultados consistentes, en la lectura no comprometida "READ
UNCOMMITTED" las sentencias SELECT son ejecutadas sin realizar bloqueos,
pero podra usarse una versin anterior de un registro. Por lo tanto, las
lecturas no son consistentes al usar este nivel de aislamiento.
A mayor grado de aislamiento, mayor precisin, pero a costa de menor
concurrencia.
El nivel de aislamiento para una sesin SQL establece el comportamiento de
los bloqueos para las instrucciones SQL.

4.4 INSTRUCCIONES COMMIT Y ROLLBACK


Rollback transaction sin savepoint_name o transaction_name revierte todas
las instrucciones hasta el principio de la transaccin. Cuando se trata de
transacciones anidadas, esta misma instruccin revierte todas las
transacciones internas hasta la instruccin begin transaction ms externa.
En ambos casos, rollback transaction disminuye la funcin del sistema
@@trancount a 0, mientras que rollback transaction con savepoint_name no
disminuye @@trancount.
Una instruccin rollback transaction que especifica un savepoint_name no
libera ningn bloqueo.
Rollback transaction no puede hacer referencia a un savepoint_name en
transacciones distribuidas que se iniciaron explcitamente con begin
distributed transaction o que se escalaron a partir de una transaccin local.
Una transaccin no se puede revertir despus de ejecutar una instruccin
commit transaction.
En una transaccin se permiten nombres de puntos de almacenamiento
duplicados, pero una instruccin rollback transaction que utilice este
nombre slo revierte las transacciones realizadas hasta la instruccin save
transaction ms reciente que tambin utilice este nombre.

33
Si se emite la instruccin ROLLBACK TRANSACTION en un desencadenador:

Se revierten todas las modificaciones de datos realizadas hasta ese


punto de la transaccin actual, incluidas las que realiz el
desencadenador.
El desencadenador contina la ejecucin del resto de las
instrucciones despus de la instruccin ROLLBACK. Si alguna de estas
instrucciones modifica datos, no se revierten las modificaciones. La
ejecucin de las instrucciones restantes no activa ningn
desencadenador anidado.
Tampoco se ejecutan las instrucciones del lote despus de la
instruccin que activ el desencadenador.

COMMIT TRANSACTION
Si la transaccin que se ha confirmado era una transaccin Transact-SQL
distribuida, COMMIT TRANSACTION hace que MS DTC utilice el protocolo de
confirmacin en dos fases para confirmar los servidores involucrados en la
transaccin. Si una transaccin local afecta a dos o ms bases de datos de
la misma instancia del Database Engine (Motor de base de datos), la
instancia utiliza una confirmacin interna en dos fases para confirmar todas
las bases de datos involucradas en la transaccin.
Cuando se utiliza en transacciones anidadas, las confirmaciones de las
transacciones anidadas no liberan recursos ni hacen permanentes sus
modificaciones. Las modificaciones sobre los datos slo quedan
permanentes y se liberan los recursos cuando se confirma la transaccin
ms externa. Cada commit transaction que se ejecute cuando @@trancount
sea mayor que 1 slo reduce @@trancount en 1. Cuando @@trancount llega
a 0, se confirma la transaccin externa entera. Como database engine
(motor de base de datos) omite transaction_name, la ejecucin de una
instruccin commit transaction que haga referencia al nombre de una
transaccin externa cuando haya transacciones internas pendientes slo
reduce @@trancount en 1.

UNIDAD 5
VISTAS
Una vista de base de datos es un resultado de una consulta SQL de una o
varias tablas; tambin se le puede considerar una tabla virtual.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La
nica diferencia es que slo se almacena de ellas la definicin, no los datos.
Los datos que se recuperan mediante una consulta a una vista se
presentarn igual que los de una tabla. De hecho, si no se sabe que se est

34
trabajando con una vista, nada hace suponer que es as. Al igual que sucede
con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en
una vista. Aunque siempre es posible seleccionar datos de una vista, en
algunas condiciones existen restricciones para realizar el resto de las
operaciones sobre vistas.
Una vista se especifica a travs de una expresin de consulta (una
sentencia SELECT) que la calcula y que puede realizarse sobre una o ms
tablas. Sobre un conjunto de tablas relacionales se puede trabajar con un
nmero cualquiera de vistas.
Una vista se caracteriza porque:

Se considera que forma parte del esquema externo.


Una vista es una tabla virtual (no tiene una correspondencia a nivel
fsico)
Se puede consultar como cualquier tabla bsica.
Las actualizaciones se transfieren a la/s tabla/s original/es (con
ciertas limitaciones).

5.1 DEFINICIN Y OBJETIVO DE LAS VISTAS


Una vista en SQL es el resultado de una consulta de varias tablas que te
aparece como una sola tabla.
Una vista es como una ventana a travs de la cual se puede consultar o
cambiar informacin de la tabla a la que est asociada.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La
nica diferencia es que slo se almacena de ellas la definicin, no los datos.
Los datos que se recuperan mediante una consulta a una vista se
presentarn igual que los de una tabla. De hecho, si no se sabe que se est
trabajando con una vista, nada hace suponer que es as. Al igual que sucede
con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en
una vista. Aunque siempre es posible seleccionar datos de una vista, en
algunas condiciones existen restricciones para realizar el resto de las
operaciones sobre vistas.

Las vistas pueden proporcionar un nivel adicional de seguridad. Por


ejemplo, en la tabla de empleados, cada responsable de
departamento slo tendr acceso a la informacin de sus empleados.
La siguiente sentencia produce la creacin de la vista de los
empleados del departamento de administracin (cod_dep=100).
Las vistas permiten ocultar la complejidad de los datos. Una BD se
compone de muchas tablas. La informacin de dos o ms tablas
puede recperarse utilizando una combinacin de dos o ms tablas, y
estas combinaciones pueden llegar a ser muy confusas. Creando una

35

vista como resultado de la combinacin se puede ocultar la


complejidad al usuario.
Las vistas ayudan a mantener unos nombres razonables.

Las vistas tienen la misma estructura que una tabla: filas y columnas. La
nica diferencia es que slo se almacena de ellas la definicin, no los datos.
Los datos que se recuperan mediante una consulta a una vista se
presentarn igual que los de una tabla. De hecho, si no se sabe que se est
trabajando con una vista, nada hace suponer que es as. Al igual que sucede
con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en
una vista. Aunque siempre es posible seleccionar datos de una vista, en
algunas condiciones existen restricciones para
Las vistas son tiles:
Proporcionan un poderoso mecanismo de seguridad, ocultando partes
de la base de datos a ciertos usuarios. El usuario no sabr que existen
aquellos atributos que se han omitido al definir una vista.

5.2 INSTRUCCIONES PARA LA ADMINISTRACIN DE


VISTAS
Muchas bases de datos relacionales que se utilizan en aplicaciones del
mundo real tienen esquemas complejos y formados por muchas tablas. En
ocasiones, es conveniente que algunos grupos o perfiles de usuarios tengan
una vista parcial de ese esquema, o que tengan una visin de la misma con
una estructura diferente a la del esquema que realmente est almacenado.
Precisamente para estos casos, el lenguaje SQL permite definir vistas.
Una vista es esencialmente una consulta almacenada que devuelve un
conjunto de resultados y a la que se le pone un nombre. Una vista es una
tabla virtual, aparece como una tabla ms del esquema, aunque
realmente no lo es.
Sintaxis
La sintaxis general para crear una vista es la siguiente:
CREATE VIEW view_name [(column_list)]
AS sentencia_select

UNIDAD 6

36

SEGURIDAD
La ejecucin de una operacin en los datos de la base de datos por parte de
un usuario est supeditada a la posesin por parte del usuario de los
privilegios necesarios para la operacin concreta ejecutada en el conjunto
de datos especfico.
En general, los privilegios se asignan del siguiente modo:

Un usuario que crea una tabla o cualquier otro objeto de la base de


datos es el propietario y se le garantizan automticamente todos los
privilegios aplicables a dicho objeto, con la posibilidad de darles
tambin a otros usuarios dichos privilegios (privilegio de concesin).

Un usario que tenga un privilegio y posea adems sobre l el


privilegio de concesin puede asignarle tal pricilegio a otro usuario y
pasarle tambin el privilegio de concesin.

Los privilegios los concede quien tiene el permiso (es decir el


propietario del objeto y quien tiene el privilegio de concesin)
mediante la orden GRANT, y los revoca mediante la orden REVOKE.

En SQL Server nos encontramos con tres niveles o capas en los cuales
podemos gestionar la seguridad. El primero de ellos se encuentra a nivel de
servidor, en l podemos gestionar quin tiene acceso al servidor y quin no,
y adems gestionamos que roles va a desempear. Para que alguien pueda
acceder al servidor debe tener un inicio de sesin (login) asignado, y a ste
se asignaremos los roles o funciones que puede realizar sobre el servidor.
El que alguien tenga acceso al servidor no quiere decir que pueda acceder a
las bases de datos que se encuentran en l. Para ello hay que tener acceso
a la siguiente barrera de seguridad, que es a nivel de base de dato. Para
que un login tenga acceso a una base de datos, tenemos que crear en ella
un usuario (user). Deberemos crear un usuario en cada una de las bases de
datos a las que queramos que acceda un login.
Anlogamente, el que un usuario tenga acceso a una base de datos no
quiere decir que tenga acceso a todo su contenido, ni a cada uno de los
objetos que la componen. Para que esto ocurra tendremos que irle
concediendo o denegando permisos sobre cada uno de los objetos que la
componen.

6.1 ESQUEMAS DE AUTORIZACIN


Un esquema SQL se identifica con un nombre de esquema, y consta de un
identificador de autorizacin que indica el usuario o la cuenta propietaria del
esquema, adems de los descriptores de cada elemento del esquema. Los
elementos del esquema comprenden tablas, restricciones, vistas, dominios
y otros integrantes (como concesiones de autorizacin) que describen el
esquema.
Un esquema se crea mediante la sentencia CREATE SCHEMA, que puede
contener todas las definiciones de elementos del esquema. Como
alternativa, podemos asignar un nombre y un identificador de autorizacin
de esquema y definir dichos elementos ms adelante.

37
Adems del concepto de esquema, SQL2 emplea el concepto de catlogo o
diccionario de datos DD (coleccin nombrada de esquemas). Un catlogo
siempre contiene un esquema especial llamado INFORMATION_SCHEMA, que
proporciona a los usuarios autorizados informacin sobre todos los
descriptores de elementos de todos los esquemas del catlogo. Se pueden
definir restricciones de integridad entre relaciones, como la integridad
referencial, slo si dichas relaciones existen en esquemas dentro del mismo
catlogo. Adems, los esquemas del mismo catlogo pueden compartir
ciertos elementos, como las definiciones de dominio.
Tipos de Autorizacin para la modificacin del esquema de datos:
Autorizacin de ndices
Permite creacin y borrado de ndices
Autorizacin de recursos
Permite la creacin de relaciones nuevas
Autorizacin de alternacin
Permite el aadido o el borrado de atributos de las relaciones
Autorizacin de eliminacin
Permite el borrado de relaciones

6.2 INSTRUCCIONES GRANT Y REVOKE


Los comandos GRANT y REVOKE permiten a los administradores de sistemas
crear cuentas de usuario MySQL y darles permisos y quitarlos de las
cuentas.
La informacin de cuenta de MySQL se almacena en las tablas de la base de
datos mysql . Esta base de datos y el sistema de control de acceso se
discuten extensivamente en que puede consultar para ms detalles.
Si las tablas de permisos tienen registros de permisos que contienen
nombres de tablas o bases de datos con maysculas y minsculas y la
variable de sistema lower_case_table_names est activa, REVOKE no puede
usarse para quitar los permisos. Es necesario manipular las tablas de
permisos directamente.
Grant permite al creador de un objeto el dar permisos especficos a todos
los usuarios (public) o a un cierto usuario o grupo. Usuarios distintos al

38
creador pueden no tener permisos de acceso a menos que el creador se los
conceda, una vez que el objeto ha sido creado. Una vez que un usuario
tiene privilegios sobre un objeto, tiene posibilidad de ejecutar ese privilegio.
No hay necesidad de conceder privilegios al creador de un objeto; el creador
obtiene automticamente todos los privilegios, y puede tambin eliminar el
objeto. Privilege los posibles privilegios son: select acceso a todas las
columnas de una tabla/vista especfica. Insert inserta datos en todas las
columnas de una tabla especfica. Update actualiza todas las columnas de
una tabla especfica. Delete elimina filas de una tabla especfica.
RULE
Define las reglas de la tabla(vista (cer sentencia CREATE RULE).
ALL
Otorga todos los privilegios object
El nombre de un objeto al que se quiere conceder el acceso. Los posibles
objetos son: tabla vista secuencia indice

PUBLIC
Una abreviacin para representar a todos los usuarios.

GROUP group
Un grupo al que se otorgan privilegios. En la actual versin, el grupo debe
haber sido creado explcitamente como se describe ms adelante.

username
El nombre de un usuario al que se quiere conceder privilegios. PUBLIC es
una abreviatura para representar a todos los usuarios.

CHANGE
Mensaje devuelto se la accin se ha realizado satisfactoriamente.
ERROR: Change Acl: class object not found
Mensaje devuelto si el objeto especificado no est disponible o si es
imposible dar los provilegios a grupo o usuarios especificado.

UNIDAD 7
INTRODUCCIN AL SQL PROCEDURAL
El SQL PL es, en realidad, un subconjunto del SQL que proporciona
construcciones de procedimiento que se pueden utilizar para implementar la
lgica alrededor de las sentencias de SQL tradicionales. El SQL PL es un
lenguaje de programacin de alto nivel con una sintaxis sencilla y
sentencias habituales de control de programacin, que incluyen las
sentencias IF, ELSE, WHILE, FOR, ITERATE y GOTO, as como otras
sentencias.
Procedimientos de SQL PL y de SQL.
Los procedimientos de SQL PL pueden contener parmetros, variables,
sentencias de asignacin, sentencias de control de SQL PL y sentencias de
SQL compuestas. Los procedimientos de SQL PL tambin dan soporte a un

39
potente mecanismo de manejo de errores y condiciones, a las llamadas
anidadas y repetitivas y a la devolucin de varios conjuntos de resultados al
llamante o a la aplicacin cliente. Para conocer el conjunto completo de
elementos del lenguaje soportado en los procedimientos de SQL PL, vea la
sentencia CREATE PROCEDURE (SQL) en la Consulta de SQL.
Funciones, activador y sentencias dinmicas compuestas de SQL PL en lnea
y de SQL
A partir de DB2 Versin 7.2, est soportado un subconjunto de SQL PL en los
cuerpos de los activadores y las funciones de SQL. Este subconjunto de SQL
PL se conoce como SQL PL en lnea. La palabra en lnea hace resaltar una
diferencia importante entre el SQL PL en lnea y el lenguaje SQL PL
completo. Mientras que un procedimiento de SQL PL se implementa
compilando estticamente sus consultas de SQL individuales en secciones
de un paquete, una funcin de SQL PL en lnea se implementa, como su
nombre sugiere, colocando en lnea el cuerpo de la funcin en la consulta
que la utiliza. De esta diferencia, surgen algunas consideraciones relativas
al rendimiento y se deben tener en cuenta cuando planifique si ha de
implementar la lgica de procedimiento en SQL PL en un procedimiento o
utilizar el SQL PL en lnea.
Una sentencia dinmica compuesta es una sentencia que, en realidad, le
permite agrupar varias sentencias de SQL en un bloque lgico atmico
pequeo, en el cual puede declarar variables y elementos para el manejo de
condiciones. DB2 compila estas sentencias como una sola sentencia de SQL,
y pueden contener elementos de SQL PL. Dentro de una sentencia dinmica
compuesta, es posible incluir el subconjunto de SQL PL conocido como SQL
PL en lnea y tan slo un pequeo conjunto de sentencias de SQL bsicas.
Las sentencias dinmicas compuestas son tiles para crear scripts reducidos
que realicen pequeas unidades de trabajo lgico con un mnimo flujo de
control, pero con un flujo de datos significativo. Si le interesa una lgica ms
compleja que requiera parmetros, pase de conjuntos de resultados u otros
elementos de procedimiento ms avanzados, pueden convenirle ms los
procedimientos y las funciones de SQL.

7.1 PROCEDIMIENTOS ALMACENADOS


Un procedimiento almacenado (stored procedure en ingls) es un programa
(o procedimiento) el cual es almacenado fsicamente en una base de datos.
Su implementacin vara de un manejador de bases de datos a otro. La
ventaja de un procedimiento almacenado es que al ser ejecutado, en
respuesta a una peticin 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 slo necesita
enviar sus resultados de regreso al usuario, deshacindose de la sobrecarga
resultante de comunicar grandes cantidades de datos salientes y entrantes.

40
Usos tpicos para procedimientos almacenados incluyen la validacin de
datos siendo integrados a la estructura de base de datos (los
procedimientos almacenados utilizados para este propsito a menudo son
llamados disparadores; triggers en ingls), o encapsular un proceso grande
y complejo. El ltimo ejemplo generalmente ejecutar ms rpido como un
procedimiento almacenado que de haber sido implementado como, por
ejemplo, un programa corriendo en el sistema cliente y comunicndose con
la base de datos mediante el envo de consultas SQL y recibiendo sus
resultados.
Los procedimientos pueden ser ventajosos: Cuando una base de datos es
manipulada desde muchos programas externos. Al incluir la lgica de la
aplicacin en la base de datos utilizando procedimientos almacenados, la
necesidad de embeber la misma lgica en todos los programas que acceden
a los datos es reducida. Esto puede simplificar la creacin y,
particularmente, el mantenimiento de los programas involucrados.
Podemos ver un claro ejemplo de estos procedimientos cuando requerimos
realizar una misma operacin en un servidor dentro de algunas o todas las
bases de datos y a la vez dentro de todas o algunas de las tablas de las
bases de datos del mismo. Para ello podemos utilizar a los Procedimientos
almacenados auto creable que es una forma de generar ciclos redundantes
a travs de los procedimientos almacenados.
Estos procedimientos, se usan a menudo, pero no siempre, para realizar
consultas SQL sobre los objetos del banco de datos de una manera
abstracta, desde el punto de vista del cliente de la aplicacin. Un
procedimiento almacenado permite agrupar en forma exclusiva parte de
algo especfico que se desee realizar o, mejor dicho, el SQL apropiado para
dicha accin.
Los usos 'tpicos' de los procedimientos almacenados se aplican en la
validacin de datos, integrados dentro de la estructura del banco de datos.
Los procedimientos almacenados usados con tal propsito se llaman
comnmente disparadores, o triggers. Otro uso comn es la 'encapsulacin'
de un API para un proceso complejo o grande que podra requerir la
'ejecucin' de varias consultas SQL, tales como la manipulacin de un
'dataset' enorme para producir un resultado resumido.
Tambin pueden ser usados para el control de gestin de operaciones, y
ejecutar procedimientos almacenados dentro de una transaccin de tal
manera que las transacciones sean efectivamente transparentes para ellos.
La ventaja de un procedimiento almacenado, en respuesta a una peticin de
usuario, est directamente bajo el control del motor del manejador de bases
de datos, lo cual corre generalmente en un servidor separado de manejador
de bases de datos aumentando con ello, la rapidez de procesamiento de
requerimientos del manejador de bases de datos. El servidor de la base de
datos tiene acceso directo a los datos necesarios para manipular y slo
necesita enviar el resultado final al usuario. Los procedimientos
almacenados pueden permitir que la lgica del negocio se encuentre como
un API en la base de datos, que pueden simplificar la gestin de datos y
reducir la necesidad de codificar la lgica en el resto de los programas
cliente. Esto puede reducir la probabilidad de que los datos sean
corrompidos por el uso de programas clientes defectuosos o errneos. De
este modo, el motor de base de datos puede asegurar la integridad de los
datos y la consistencia, con la ayuda de procedimientos almacenados.

41
Algunos afirman que las bases de datos deben ser utilizadas para el
almacenamiento de datos solamente, y que la lgica de negocio slo
debera ser aplicada en la capa de negocio de cdigo, a travs de
aplicaciones cliente que deban acceder a los datos. Sin embargo, el uso de
procedimientos almacenados no se opone a la utilizacin de una capa de
negocio.

7.2 DISPARADORES (TRIGGERS)


Un trigger (o disparador) en una Base de datos, es un procedimiento que se
ejecuta cuando se cumple una condicin establecida al realizar una
operacin de insercin (INSERT), actualizacin (UPDATE) o borrado
(DELETE).
Son usados para mejorar la administracin de la Base de datos, sin
necesidad de contar con que el usuario ejecute la sentencia de SQL.
Adems, pueden generar valores de columnas, previene errores de datos,
sincroniza tablas, modifica valores de una vista, etc.
Permite implementar programas basados en paradigma lgico (sistemas
expertos, deduccin).
Un trigger es un bloque PL/SQL asociado a una tabla, que se ejecuta cuando
una determinada instruccin en SQL se va a ejecutar sobre dicha tabla.
La sintaxis para crear un trigger es la siguiente:
CREATE [OR REPLACE] TRIGGER
{BEFORE|AFTER} {DELETE|INSERT|UPDATE [OF col1, col2, . . ., colN]
[OR {DELETE|INSERT|UPDATE [OF col1, col2, . . ., colN]. . .]}
ON table
[REFERENCING OLD AS oldname, NEW as newname]
[FOR EACH ROW [WHEN (condition)]]
pl/sql_block
El uso de OR REPLACE permite sobreescribir un trigger existente. Si se
omite, y el trigger existe, se producir, un error.
El modificador FOR EACH ROW indica que el trigger se disparar cada vez
que se desee hacer operaciones sobre una fila de la tabla. Si se acompaa
del modificador WHEN, se establece una restriccin; el trigger solo actuar,
sobre las filas que satisfagan la restriccin.

BIBLIOGRAFA
http://www.programatium.com/tutoriales/cursos/oracle/11.htm
http://tallerbd.hostoi.com/index.php?
option=com_content&view=article&id=70&Itemid=91
http://sql.1keydata.com/es/sitemap.php
http://www.paginasprodigy.com.mx/evaristopacheco/taller

42
http://es.wikipedia.org/wiki/

También podría gustarte