Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller de Base de Datos PDF
Taller de Base de Datos PDF
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
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:
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).
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.
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:
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.
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
12
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
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:
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
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
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"
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
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;
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)
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
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
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
27
Los
Angeles
Boston
08-Jan1999
08-Jan700
1999
300
Ingresamos,
SELECT COUNT(store_name)
FROM Store_Information
Resultado:
Count(store_name)
4
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.
29
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).
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.
31
32
Comportamiento permitido
Nivel de aislamiento
Lectura
Sucia No repetible Fantasma
Lectura no comprometida S
Lectura comprometida
No
Lectura repetible
No
No
33
Si se emite la instruccin ROLLBACK TRANSACTION en un 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:
35
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.
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:
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.
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
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.
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.
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/