Professional Documents
Culture Documents
Lenguaje de Consultas
SQL
Algebra relacional
2
Operaciones de Algebra relacional
Las operaciones del lgebra relacional han sido clasificadas segn
distintos criterios; de todos ellos indicamos los tres siguientes:
4
Operaciones de Algebra relacional
b) Operaciones especficamente relacionales: son el resto de
las operaciones; es decir, la seleccin, la proyeccin y la
combinacin.
5
Operaciones Conjuntista
Unin
6
Operaciones Conjuntista
Por ejemplo, se puede hacer la unin de las relaciones
EMPLEADOS_ADM y EMPLEADOS_PROD porque sus tuplas se
parecen. En cambio, no se podr hacer la unin de las relaciones
EMPLEADOS_ADM y DESPACHOS porque, como se observa en
las tablas, las tuplas respectivas son de tipo diferente.
7
Operaciones Conjuntista
8
Operaciones Conjuntista
9
Operaciones Conjuntista
Ejemplo de relaciones compatibles
11
Operaciones Conjuntista
Ejemplo de unin
R := EMPLEADOS_ADM EMPLEADOS_PROD.
12
Operaciones Conjuntista
13
Operaciones Conjuntista
Interseccin
14
Operaciones Conjuntista
Ejemplo de interseccin
R : = EMPLEADOS_ADM EMPLEADOS_PROD.
15
Operaciones Conjuntista
Diferencia
16
Operaciones Conjuntista
Ejemplo de diferencia
R := EMPLEADOS_ADM EMPLEADOS_PROD.
17
Operaciones Conjuntista
Producto Cartesiano
18
Operaciones Conjuntista
Ejemplo de producto cartesiano
EDIFICIOS(nombreedificio, supmediadesp) :=
EDICIOS_EMP(edificio, supmediadesp).
R := EDIFICIOS DESPACHOS.
19
Operaciones Conjuntista
20
Operaciones Especficamente Relacionales
Seleccin
21
Operaciones Especficamente Relacionales
Ejemplo de seleccin
22
Operaciones Especficamente Relacionales
Proyeccin
23
Operaciones Especficamente Relacionales
Ejemplo de proyeccin
R := EMPLEADOS_ADM[nombre, apellido].
24
Operaciones Especficamente Relacionales
Combinacin
25
Operaciones Especficamente Relacionales
Ejemplo de combinacin
EDIFICIOS(nombreeedficio,supmediadesp) :=
EDIFICIOS_EMP(edificio, supmediadesp),
26
Operaciones Especficamente Relacionales
27
Operaciones Especficamente Relacionales
Ejemplo de combinacin
Supongamos ahora que para obtener los datos de cada uno de los
empleados de administracin, junto con los datos del despacho
donde trabajan, utilizamos la siguiente combinacin:
28
Operaciones Especficamente Relacionales
29
Operaciones Especficamente Relacionales
Divisin
30
Operaciones Especficamente Relacionales
Ejemplo de divisin
31
Secuencia de operaciones del AR
En muchos casos, para formular una consulta en lgebra
relacional es preciso utilizar varias operaciones, que se aplican en
un cierto orden.
1) Utilizar una sola expresin del lgebra que incluya todas las
operaciones con los parntesis necesarios para indicar el orden de
aplicacin.
32
Secuencia de operaciones del AR
Ejemplo
33
Secuencia de operaciones del AR
En los casos en que una consulta requiere efectuar muchas
operaciones, resulta ms sencilla la segunda alternativa, porque
evita expresiones complejas.
34
Secuencia de operaciones del AR
2) Supongamos ahora que se desea obtener el nombre y el
apellido de todos los empleados (tanto de administracin como de
produccin) que estn asignados al despacho 120 del edificio
Marina. En este caso, podemos utilizar la siguiente secuencia:
A := EMPLEADOS_ADM EMPLEADOS_PROD;
B := A(edificiodesp = Marina y nmerodesp = 120);
R := B[nombre, apellido].
35
Lenguajes de Consulta SQL
36
SQL (Structured Query Language)
SQL (Structured Query Language) es un lenguaje para acceso a la
informacin almacenada en bases de datos relacionales.
37
SQL (Structured Query Language)
El procesamiento de las sentencias SQL lo realiza el SGDB
(Sistema de Gestin de Bases de Datos), ste las analiza, las
traduce a operaciones con ficheros fsicos, las ejecuta, y devuelve
el resultado al programa o usuario que realiz la peticin. El SGBD
se encarga de coordinar todas la peticiones asegurando la
integridad de los datos.
38
SQL (Structured Query Language)
En SQL se pueden distinguir tres tipos de sentencias:
39
SQL (Structured Query Language)
En SQL se pueden distinguir tres tipos de sentencias:
40
SQL (Structured Query Language)
41
Sentencias DDL
En general, un usuario o un programador acceder con el SQL a
los datos de unas tablas ya creadas por el DBA de la base de
datos.
42
Sentencias DDL
Las sentencias DDL son las siguientes:
CREATE
DROP
ALTER
43
Sentencias DDL CREATE
La ejecucin de esta sentencia permite almacenar en el catlogo
del SGBD la definicin y el nombre de una tabla para que luego
pueda ser referenciada.
Formato:
44
Sentencias DDL CREATE
Ejemplo:
Crear la tabla de empleados.
45
Sentencias DDL DROP
La sentencia DROP TABLE se utiliza para destruir una tabla.
Formato:
46
Sentencias DDL DROP
La informacin del catlogo es automticamente actualizada y
mantenida por el SGBD cada vez que se aade una nueva
tabla a la B/D o se modifica la descripcin de una ya existente.
Los programas y usuarios pueden tambin utilizar el lenguaje
SQL para acceder al Catlogo consultando estas
descripciones como si fueran datos de aplicaciones incluso
pueden combinarse en una misma consulta tablas del catlogo
con otras B/D, sin diferencia ninguna entre ellas.
Ejemplo:
47
Sentencias DDL ALTER
La sentencia ALTER TABLE sirve para modificar la estructura
de una tabla que ya existe. Mediante esta instruccin podemos
aadir columnas nuevas, eliminar columnas. Ten cuenta que
cuando eliminamos una columna se pierden todos los datos
almacenados en ella.
Formato (simplificado):
49
Sentencias DDL ALTER
Para aadir una nueva restriccin en la tabla podemos utilizar la
clusula ADD restriccion2 (ADD CONSTRAINT...).
Ejemplo:
50
Sentencias DDL ALTER
Para borrar una columna basta con utilizar la clusula DROP
COLUMN (COLUMN es opcional) y el nombre de la columna que
queremos borrar, se perdern todos los datos almacenados en la
columna.
Ejemplo:
51
Sentencias DDL ALTER
Para borrar una restriccin basta con utilizar la clusula DROP
CONSTRAINT y el nombre de la restriccin que queremos borrar, en
este caso slo se elimina la definicin de la restriccin pero los datos
almacenados no se modifican ni se pierden.
Ejemplo:
52
Sentencias DCL
Control de Acceso
GRANT
REVOKE
Control de Transacciones
COMMIT
ROLLBACK
53
Sentencias DCL GRANT
El propietario de una tabla puede usar esta sentencia SQL
para transmitir a otros sus autorizaciones sobre ella, pero
stos no pueden transmitirlas a su vez.
Formato (simplificado):
GRANT lista-privilegios
ON tabla
TO lista-usuarios
55
Sentencias DCL REVOKE
Es la sentencia que permite anular una autorizacin
previamente concedida.
Formato (simplificado):
REVOKE lista-privilegios
ON tabla
FROM lista-usuarios
56
Sentencias DCL REVOKE
Ejemplo
57
Sentencias DCL LOCK TABLE
Para garantizar la integridad de los datos tambin tenemos la
sentencia LOCK TABLE.
Formato:
LOCK TABLE tabla
IN SHARE /EXCLUSIVE MODE
58
Sentencias DCL LOCK TABLE
EXCLUSIVE: bloqueamos la tabla en modo exclusivo, de forma que
los dems usuarios no puedan acceder a los datos de esa tabla ni
siquiera para lectura.
59
Sentencias DML
Las sentencias de manipulacin de datos son cuatro y nos van a
permitir:
60
Sentencias DML SELECT
La sentencia SELECT simple nos permite consultar los datos
almacenados en una tabla de la base de datos.
Formato:
SELECT [DISTINCT] */<colum1,column2,...>
FROM <nombre-tabla>
[WHERE <condicin>]
[GROUP BY <colum1,colum2,...>]
[HAVING <condicin-selec-grupos>]
[ORDER BY <colum1[DESC],colum2[DESC]...>]
61
Sentencias DML SELECT
Clusula SELECT:
62
Sentencias DML SELECT
Clusula FROM:
En esta clusula se especifican la lista de los nombres de tablas
separados por comas.
Clusula WHERE:
Es una clusula opcional en la que se incluyen las condiciones de
filtrado de la consulta que se quiere realizar
Clusula HAVING:
Es una clusula opcional de la sentencia SELECT que sirve para
descartar los grupos de filas. Una vez separados las filas en uno o
varios grupos, se descartan aquellos que no satisfacen la condicin.
63
Sentencias DML SELECT
Clusula ORDER BY:
En esta clusula opcional se le indica a la sentencia el orden en que se
quiere recibir los datos. Las columnas por las que se quiera ordenar
tienen que estar en la clusula SELECT.
64
Sentencias DML SELECT
Ejemplo:
65
Sentencias DML SELECT
Funciones escalares sobre columnas:
66
Sentencias DML SELECT
Funciones escalares sobre columnas:
Ejemplo:
En este ejemplo se extrae de la tabla de empleados por cada
departamento el salario medio, mnimo, mximo y la media aritmtica
de estos.
SELECT NUMDE,AVG(SALAR),MIN(SALAR),MAX(SALAR)
(MIN(SALAR) + MAX(SALAR))/2
FROM TEMPLE
GROUP BY NUMDE
ORDER BY NUMDE
67
Sentencias DML SELECT
SUBSELECT:
68
Sentencias DML SELECT
CLUSULA UNION :
Con esta clusula y con UNION ALL se obtiene como resultado de la
consulta la unin de dos sentencias SELECT.
Si se escribe UNION o UNION ALL entre dos sentencias SELECT las
tablas resultantes de stas deben tener el mismo nmero de columnas,
y adems las columnas que estn en la misma posicin relativa deben
ser de igual tipo, es decir, ambas numricas, o alfanumricas, o tipo
fecha... Al unirlas se obtiene como resultado otra tabla con las mismas
columnas y tipos de datos que las que las unen.
Ejemplo:
Obtener por orden alfabtico los nombres de los empleados del
departamento 112, as como su sueldo total, es decir, incluyendo la
comisin en aquellos que la tengan.
SELECT NOMEM,SALAR
FROM TEMPLE WHERE COMIS IS NULLL AND NUMDE = 112
UNION
SELECT NOMEM,SALAR + COMIS
FROM TEMPLE WHERE COMIS IS NOT NULL AND NUMDE =
112
ORDER BY 1
70
Sentencias DML INSERT
La sentencia INSERT permite aadir una o ms filas completas a una
tabla.
Puede especificarse con uno de los dos Formatos siguientes:
Formato 1:
INSERT INTO tabla[(col-1, col-2, ...)]
VALUES (valor-1,valor-2,...)
Formato 2:
INSERT INTO tabla[(col-1, col-2, ...)]
Subselect
72
Sentencias DML INSERT
Ejemplo 2:
Supongamos que tenemos una tabla de empleados2 en la que
queremos meter los datos de los empleados que han ingresado en la
empresa despus de 1970.
73
Sentencias DML UPDATE
La sentencia UPDATE permite modificar o actualizar varias filas de una
tabla.
Formato:
74
Sentencias DML UPDATE
Ejemplo:
Cambiar la fecha de ingreso de Pedro Prez poniendo la del da
25/12/1999.
UPDATE TEMPLE
SET FECIN= 25/12/1999
WHERE NOMEM = PEDRO PEREZ
75
Sentencias DML DELETE
La sentencia DELETE permite borrar filas de una tabla.
Formato:
Ejemplo:
Borrar de la tabla de empleados a Pedro Prez.
77
Sentencias Avanzadas SELECT
Clusula DISTINCT / ALL
78
Sentencias Avanzadas SELECT
Clusula TOP
Otro ejemplo:
Lista el cdigo y nombre de 4
SELECT TOP 3 numemp, nombre
empleados. (3 y 4 fechas de
FROM empleado contrato son iguales)
ORDER BY contrato
79
Sentencias Avanzadas SELECT
Clusula TOP PERCENT
80
Sentencias Avanzadas SELECT
Alias de columna.
Ejemplo:
SELECT idfab AS fabricante, idproducto, descripcion
FROM productos
81