Beruflich Dokumente
Kultur Dokumente
CONTENIDO
CONTENIDO.............................................................................................................................2
UNIDAD 1.................................................................................................................................4
INTRODUCCIÓN AL SISTEMA MANEJADOR DE BASE DE DATOS (DBMS)................................4
1.1 CONCEPTOS...................................................................................................................7
1.2 CARACTERÍSTICAS DE UN DBMS....................................................................................8
UNIDAD 2.................................................................................................................................9
LENGUAJE DE DEFINICIÓN DE DATOS...................................................................................9
2.1 CREACIÓN DE BASE DE DATOS....................................................................................10
2.2 CREACIÓN DE TABLAS..................................................................................................11
2.2.1 INTEGRIDAD..........................................................................................................12
2.2.2 INTEGRIDAD REFERENCIAL DECLARATIVA.............................................................13
2.2.3 CREACIÓN DE ÍNDICES..........................................................................................14
UNIDAD 3...............................................................................................................................15
CONSULTAS Y LENGUAJE DE MANIPULACIÓN DE DATOS....................................................15
3.1 INSTRUCCIONES INSERT, UPDATE, DELETE..................................................................15
3.2 CONSULTAS BÁSICAS SELECT, WHERE Y FUNCIONES A NIVEL DE REGISTRO................18
3.3 CONSULTAS SOBRE MÚLTIPLES TABLAS.......................................................................19
3.3.1 SUBCONSULTAS.....................................................................................................20
3.3.2 OPERADORES JOIN................................................................................................20
3.4 AGREGACIÓN GROUP BY, HAVING................................................................................22
4.1 PROPIEDAD DE UNA TRANSACCIÓN..............................................................................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 DEFINICIÓN Y OBJETIVO DE LAS VISTAS.......................................................................32
5.2 INSTRUCCIONES PARA LA ADMINISTRACIÓN DE VISTAS...............................................33
UNIDAD 6...............................................................................................................................33
SEGURIDAD........................................................................................................................33
6.1 ESQUEMAS DE AUTORIZACIÓN.....................................................................................34
6.2 INSTRUCCIONES GRANT Y REVOKE..............................................................................35
UNIDAD 7...............................................................................................................................36
INTRODUCCIÓN AL SQL PROCEDURAL................................................................................36
7.1 PROCEDIMIENTOS ALMACENADOS...............................................................................37
7.2 DISPARADORES (TRIGGERS).........................................................................................38
BIBLIOGRAFÍA........................................................................................................................39
3
INTRODUCCIÓN
UNIDAD 1
INTRODUCCIÓN AL SISTEMA MANEJADOR DE BASE DE
DATOS (DBMS)
El sistema manejador de bases de datos es la porción más importante del
software de un sistema de base de datos. Un DBMS es una colección de
numerosas rutinas de software interrelacionadas, cada una de las cuales es
responsable de alguna tarea específica.
Las funciones principales de un DBMS son:
1.1 CONCEPTOS
7
• MANTENIMIENTO DE LA INTEGRIDAD
La integridad de los datos es la que garantiza la precisión o exactitud de la
información contenida en una base de datos. Los datos interrelacionados
deben siempre representar información correcta a los usuarios.
• SEGURIDAD
La disponibilidad de los datos puede ser restringida a ciertos usuarios.
Según los privilegios que posea cada usuario de la base de datos, podrá
acceder a mayor información que otros.
9
• VELOCIDAD
Los sistemas DBMS modernos poseen altas velocidades de respuesta y
proceso.
UNIDAD 2
LENGUAJE DE DEFINICIÓN DE DATOS
Otras que se incluyen dentro del DDL, pero que su existencia depende de la
implementación del estándar 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 específicos o a un rol creado dentro de la base
de datos.
Una vez finalizado el diseño de una base de datos y escogido un SGBD para
su implementación, 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 separación estricta de
niveles, por lo que el administrador de la base de datos y los diseñadores
utilizan el mismo lenguaje para definir ambos esquemas, es el lenguaje de
definición de datos (LDD). El SGBD posee un compilador de LDD cuya
función consiste en procesar las sentencias del lenguaje para identificar las
10
La sintaxis empleada por PostgreSQL, pero también por las DBMS más
difundidas, es la siguiente:
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
carácter temporal (para gestionar un carrito de compra por ejemplo) o bien
permanente por necesidades concretas de nuestra aplicación.
En estos casos, podemos, a partir de una sentencia SQL, crear la tabla con
el formato que deseemos lo cual nos puede ahorrar más 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 características.
Además, puede ser necesario especificar cuáles de estos campos van a ser
índices y de qué tipo van a serlo.
12
Esta información será la que gestionen todos los demás 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 estarán colocados, etc…), con el fin de poder dar respuesta a todas
las cuestiones que se puedan plantear sobre el manejo de dicha
información.
Para crear una tabla debemos especificar diversos datos: El nombre que le
queremos asignar, los nombres de los campos y sus características.
Además, puede ser necesario especificar cuáles de estos campos van a ser
índices y de qué tipo van a serlo.
Sintaxis
2.2.1 INTEGRIDAD
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.
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 relación
entre el contenido y el número 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.
La regla básica es pues crear tus índices sobre aquellas columnas que vayas
a usar con una cláusula 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.
Tipos de índice
UNIDAD 3
16
La sintaxis para insertar datos en una tabla mediante una fila por vez es la
siguiente:
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 día, este
negocio tenía $900 dólares estadounidenses en ventas. Por lo tanto,
utilizaremos la siguiente escritura SQL:
17
La sintaxis es la siguiente:
Note que esta es la forma más simple. La instrucción entera puede contener
fácilmente cláusulas WHERE, GROUP BY, y HAVING, así como también
uniones y alias.
Ingresaremos:
UPDATE Store_Information
SET Sales = 500
WHERE store_name = "Los Angeles"
AND Date = "08-Jan-1999"
La tabla resultante ser vería
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 sólo una fila que satisface la condición en la cláusula
WHERE. Si hay múltiples filas que satisfacen la condición, todas ellas se
modificarán.
También es posible UPDATE múltiples columnas al mismo tiempo. La
sintaxis en este caso se vería como la siguiente:
UPDATE "nombre_tabla"
SET colonne 1 = [[valor1], colonne 2 = [valor2]
WHERE {condición}
Tabla Store_Information
store_na
Sales Date
me
Los 1500 05-Jan-
Angeles € 1999
07-Jan-
San Diego 250 €
1999
Los 08-Jan-
300 €
Angeles 1999
08-Jan-
Boston 700 €
1999
Resultado:
store_na
me
Los
Angeles
San Diego
Los
Angeles
Boston
Por ejemplo, para seleccionar todos los negocios con ventas mayores a
1.000€ en la Tabla Store_Information,
20
Tabla Store_Information
store_na
Sales Date
me
Los 1500 05-Jan-
Angeles € 1999
07-Jan-
San Diego 250 €
1999
Los 08-Jan-
300 €
Angeles 1999
08-Jan-
Boston 700 €
1999
Ingresamos:
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
Resultado:
store_name
Los Angeles
Una JOIN es una consulta que combina filas de dos o más tablas o vistas.
Las tablas de la JOIN deben aparecer en el FROM.
21
3.3.1 SUBCONSULTAS
La sintaxis es la siguiente:
SELECT "nombre1_columna"
FROM "nombre1_tabla"
WHERE "nombre2_columna" [Operador de Comparación]
(SELECT "nombre3_columna"
FROM "nombre2_tabla"
WHERE [Condición])
Una subconsulta es una sentencia select que aparece dentro de otra
sentencia select que llamaremos consulta principal.
Una subconsulta tiene la misma sintaxis que una sentencia select normal
exceptuando que aparece encerrada entre paréntesis, no puede contener la
cláusula order by, ni puede ser la unión de varias sentencias select, además
tiene algunas restricciones en cuanto a número de columnas según el lugar
donde aparece en la consulta principal.
Ejemplo:
SELECT numemp, nombre, (SELECT MIN(fechapedido) FROM pedidos WHERE
rep = numemp) FROM empleados;
Tabla Store_Information
store_na
Sales Date
me
Los 1500 05-Jan-
Angeles € 1999
07-Jan-
San Diego 250 €
1999
Los 08-Jan-
300 €
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 región. Vemos que la tabla Geography
incluye información sobre regiones y negocios, y la tabla Store_Information
contiene información de ventas para cada negocio. Para obtener la
información de ventas por región, debemos combinar la información de las
dos tablas. Al examinar las dos tablas, encontramos que están enlazadas a
través del campo común “nombre_negocio”
Resultado:
REGIÓ SALE
N S
East 700 €
2050
West
€
Las primeras dos líneas le indican a SQL que seleccione dos campos, el
primero es el campo "nombre_región" de la tabla Geography (denominado
REGIÓN), 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í: Geografía se denomina A1, e Información_Negocio se denomina
A2. Sin los alias, la primera línea sería
1999
Deseamos saber las ventas totales para cada negocio. Para hacerlo,
ingresaríamos,
SELECT PROFESOR,COUNT(*)
FROM DOCENCIA
GROUP BY PROFESOR
HAVING COUNT(*)>10;
Otra cosa que las personas pueden hacer es limitar el resultado según la
suma correspondiente (o cualquier otra función de agregado). Por ejemplo,
podríamos desear ver sólo los negocios con ventas mayores a 1 500 €. En
vez de utilizar la cláusula where en la instrucción sql, a pesar de que
necesitemos utilizar la cláusula having, que se reserva para funciones de
agregados. La cláusula having se coloca generalmente cerca del fin de la
instrucción sql, y la instrucción sql con la cláusula having.
Tabla store_information
store_na
Sales Date
me
Los 1500 05-Jan-
Angeles € 1999
07-Jan-
San Diego 250 €
1999
Los 08-Jan-
300 €
Angeles 1999
08-Jan-
Boston 700 €
1999
Ingresaríamos,
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
Todos los operadores, excepto avg y sum, pueden operar con números y
cadenas de caracteres. La función de agregación se coloca en la línea
select. La cláusula group by se utiliza cuando las funciones de agregación se
aplican a un grupo de conjuntos de tuplas, y la cláusula having se utiliza
para poner una condición a los grupos.
- MIN
- SUM
Tabla Store_Information
store_na
Sales Date
me
Los 1500 05-Jan-
Angeles € 1999
07-Jan-
San Diego 250 €
1999
Los 08-Jan-
300 €
Angeles 1999
08-Jan-
Boston 700 €
1999
Ingresaríamos
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 €.
Además de utilizar dichas funciones, también es posible utilizar SQL para
realizar tareas simples como suma (+) y resta (-). Para ingresar datos del
tipo caracter, hay también varias funciones de cadenas disponibles, tales
como funciones de concatenación, reducción 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
cómo se utilizan estas funciones.
Otra función aritmética es COUNT. Esto nos permite COUNT el número de
filas en una tabla determinada. La sintaxis es,
SELECT COUNT("nombre_columna")
FROM "nombre_columna"
Tabla Store_Information
store_na
Sales Date
me
Los 1500 05-Jan-
Angeles € 1999
07-Jan-
San Diego 250 €
1999
27
Los 08-Jan-
300 €
Angeles 1999
08-Jan-
Boston 700 €
1999
Ingresamos,
SELECT COUNT(store_name)
FROM Store_Information
Resultado:
Count(store_name)
4
COUNT y DISTINCT pueden utilizarse juntos en una instrucción para
determinar el número de las distintas entradas en una tabla. Por ejemplo, si
deseamos saber el número de los distintos negocios, ingresaríamos,
UNIDAD 4
CONTROL DE TRANSACCIONES
Una transacción que termina con éxito se dice que está comprometida
(commited), una transacción 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 transacción sólo puede
estar en uno de los siguientes estados.
Lectura sucia. Las sentencias SELECT son ejecutadas sin realizar bloqueos,
pero podría usarse una versión anterior de un registro. Por lo tanto, las
lecturas no son consistentes al usar este nivel de aislamiento.
Niveles de aislamiento:
32
Comportamiento permitido
Lectura
Nivel de aislamiento
Sucia No repetible Fantasma
Lectura no comprometida Sí Sí Sí
Lectura comprometida No Sí Sí
Lectura repetible No No Sí Según el estándar SQL,
SQL Server permite todos
Secuenciable No No No
estos niveles, Oracle sólo
permite la lectura
comprometida y secuenciable. Los niveles se pueden establecer en ambos
para cada transacción. Sin embargo esto no es necesariamente cierto.
El estándar SQL trataba de establecer los niveles de aislamiento que
permitirían 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
definición SQL estándar, 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 podría usarse una versión anterior de un registro. Por lo tanto, las
lecturas no son consistentes al usar este nivel de aislamiento.
COMMIT TRANSACTION
UNIDAD 5
VISTAS
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 través de una expresión de consulta (una
sentencia SELECT) que la calcula y que puede realizarse sobre una o más
tablas. Sobre un conjunto de tablas relacionales se puede trabajar con un
número cualquiera de vistas.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La
única diferencia es que sólo se almacena de ellas la definición, no los datos.
Los datos que se recuperan mediante una consulta a una vista se
presentarán 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 tienen la misma estructura que una tabla: filas y columnas. La
única diferencia es que sólo se almacena de ellas la definición, no los datos.
Los datos que se recuperan mediante una consulta a una vista se
presentarán 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
AS sentencia_select
UNIDAD 6
36
SEGURIDAD
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 quién tiene acceso al servidor y quién no,
y además gestionamos que roles va a desempeñar. Para que alguien pueda
acceder al servidor debe tener un inicio de sesión (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.
Análogamente, 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.
• Autorización de índices
Permite creación y borrado de índices
• Autorización de recursos
Permite la creación de relaciones nuevas
• Autorización de alternación
Permite el añadido o el borrado de atributos de las relaciones
• Autorización de eliminación
Permite el borrado de relaciones
• 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 abreviación para representar a todos los usuarios.
• GROUP group
Un grupo al que se otorgan privilegios. En la actual versión, el grupo debe
haber sido creado explícitamente como se describe más 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 acción 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
INTRODUCCIÓN AL SQL PROCEDURAL
Algunos afirman que las bases de datos deben ser utilizadas para el
almacenamiento de datos solamente, y que la lógica de negocio sólo
debería ser aplicada en la capa de negocio de código, a través de
aplicaciones cliente que deban acceder a los datos. Sin embargo, el uso de
procedimientos almacenados no se opone a la utilización de una capa de
negocio.
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 acompaña
del modificador WHEN, se establece una restricción; el trigger solo actuará,
sobre las filas que satisfagan la restricción.
BIBLIOGRAFÍA
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/