Tema05 SQL
Tema05 SQL
Tema05 SQL
2
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
5.1 Introduccin
SQL (Structured Query Laguage):
Se basa en una combinacin del lgebra relacional con constructores del clculo relacional. Aunque se define como un lenguaje de consultas es un lenguaje de bases de datos completo. Incluye caractersticas para definir la estructura de los datos, para la modificacin de los datos y para la especificacin de restricciones de integridad, seguridad y control de transacciones.
3
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
5.1 Introduccin
SQL
Lenguaje de Definicin de Datos Sublenguaje Bsico de Definicin de Datos Sublenguaje de Definicin de Vistas Sublenguaje de Control de Autorizaciones Lenguaje de Manipulacin de Datos Sublenguaje de Consultas Sublenguaje de Actualizaciones Sublenguaje de Control de Transacciones
5.1 Introduccin
Componentes del Lenguaje: Lenguaje de Definicin de Datos: Lenguaje de Manipulacin de Datos: Lenguaje de Definicin de Vistas: Lenguaje de Control de Transacciones:
El LDD de SQL proporciona rdenes para la definicin de esquemas de relacin, borrado de relaciones, creacin de ndices y modificacin de esquemas de relacin. El LMD de SQL incluye un lenguaje de consultas y rdenes para insertar, borrar y modificar tuplas de la base de datos. El LDD de SQL incluye rdenes para la definicin de vistas.
5.1 Introduccin
Componentes del Lenguaje:
SQL incluye rdenes para la especificacin de las restricciones de integridad que deben satisfacer los datos almacenados en la base de datos. Las actualizaciones que violen las restricciones de integridad se rechazan. SQL incluye rdenes para especificar derechos de acceso para las relaciones y vistas.
SQL dinmico e incorporado define cmo se pueden incorporar las instrucciones SQL en lenguajes de programacin de propsito general, tales como C, C++, Java, PL/I, Cobol y Pascal.
6
5.1 Introduccin
Evolucin del Lenguaje:
SQL 99 (SQL 3)
+
SQL 92 (SQL 2) + SQL 86-87 Interseccin de Implementaciones Existentes SQL 89 + Integridad Referencial Bsica Mejor tratamiento de restricciones Sintaxis de dominios Tablas temporales Nuevos tipos de datos L. manipulac. esquemas Combinacin externa SQL dinmico... Disparadores Leng. Procedimental Orientacin a Objetos TADs Encapsulamiento Jerarquas Herencia
7
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
Elementos
Dominios Esquemas Tablas Aserciones Vistas Indices
8
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
int: es un entero (un subconjunto finito de los enteros, que es dependiente de la mquina). Tambin se puede usar la palabra completa integer.
smallint: es un entero pequeo (un subconjunto del dominio de los enteros, tambin dependiente de la mquina). real, double: son respectivamente nmeros en coma flotante y nmeros en coma flotante de doble precisin, con precisin dependiente de la mquina.
9
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
date: es una fecha del calendario, que contiene un ao (de cuatro dgitos), un mes y un da del mes. (aaaa-mm-dd)
time: es la hora del da, expresada en horas, minutos y segundos. Se puede usar una variante, time(p), para especificar el nmero de dgitos decimales para los segundos (el nmero predeterminado es 0).(hh:mm:ss) timestamp: es una combinacin de date y time. Se puede usar una variante, timestamp(p), para especificar el nmero de dgitos decimales para los segundos (el nmero predeterminado es 6). (aaaa-mm-dd hh:mm:ss.ss)
10
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
CREATE DOMAIN domain_nombre AS CHAR(20) NOT NULL; CREATE DOMAIN domain_categoria INTEGER CHECK (VALUE BETWEEN 1 AND 5); CREATE DOMAIN domain_dedicacion CHAR(3) DEFAULT TC CONSTRAINT Dedicacion_Valida CHECK (VALUE IN (TCV,MT,TC,DEX));
11
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
<definicin de restriccin de tabla>::= [UNIQUE | PRIMARY KEY | DISTINCT (<columna> [,<columna>])] [FOREING KEY (<columna> [,<columna>]) REFERENCES ] [CHECK (condicin)]
12
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
CREATE UNIQUE INDEX index_pk ON "Empleado" USING btree ("Ficha") TABLESPACE pg_default;
15
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
16
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
17
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
18
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
ARTICULO(cod,fecha-pub, revista)
D:C/U:C
D:R/U:C
LIBRO(cod,ao-edic, editorial)
D:R/U:C
EDITORIAL(id, nombre)
Considere las siguientes restricciones: tipo de documento = (A:Artculo | L:Libro) not null idioma = (Espaol,Ingls,Francs,Portugues) ao de edicin >= 1900 Cree ndices adicionales para documento.ttulo, artculo.fecha-pub, libro.ao-edic, revista.nombre y editorial.nombre
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
19
Ejemplos:
INSERT INTO empleados (apellido, nombre, ficha, cedula,, dedicacion,, fechanac,sexo,condicion) VALUES(Gonzlez',Mara',03435','V-09424248,'TC, '1970-0412,F,A) INSERT INTO empleados VALUES(Garca',Luis',01250','V-07567567',2,MT',310, '1975-1005,M,A)
20
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
Ejemplos:
UPDATE empleados SET dpto = 310 WHERE ficha = 03435 UPDATE empleados SET dpto = (SELECT cod FROM departamentos WHERE nombre LIKE %Servicios%) WHERE ficha = 03435
21
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
Ejemplos:
DELETE FROM empleados WHERE ficha = 03435
a1,a2,,an (P (r1 r2 rm ))
(elimina los duplicados)
La clusula select corresponde a la operacin proyeccin del lgebra relacional. Se usa para listar los atributos deseados del resultado de una consulta. La clusula from corresponde a la operacin producto cartesiano del lgebra relacional. Lista las relaciones que deben ser analizadas en la evaluacin de la expresin.
La clusula where corresponde al predicado seleccin del lgebra relacional. Es un predicado que engloba a los atributos de las relaciones que aparecen en la clusula from.
23
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
Ejemplo:
SELECT * FROM empleados WHERE sexo = M
Apellido Garca Vielma Carreo Nombre Luis Jos Luis Ficha 01250 07777 08990 Cdula V07567567 V10987987 E80019299 FecNac 05/10/75 10/10/57 20/03/78 Cat 2 3 1 Ded MT TC TC Dpto 310 110 212 Sexo M M M Cond Act Jub Act
24
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
25
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
3
Apellido Vielma Carreo Gonzlez Garca Salazar Nombre Jos Luis Mara Luis Luisa Ficha 07777 08990 03435 01250 08888 Cdula V10987987 E80019299 V09424248 V07567567 V08888888 FecNac 10/10/57 20/03/78 12/04/70 05/10/75 10/10/1974 3 1 3 2 2
2
Cat Ded TC TC TC MT DEX
1
Dpto 110 212 310 310 310 Sexo M M F M F Cond Jub Act Act Act Ret
26
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
Condicin: Combinacin de una o ms expresiones que dan como resultado CIERTO, FALSO o DESCONOCIDO
Cat 2 4 5
Sexo M F M
27
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
JefeDpto
214
213
Hombre y Ambiente
Educacin
28
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
IN: Evalua sobre los valores de una lista o los valores devueltos por una subconsulta.
Ded TC
Dpto 212
Sexo M
Cond Act
SELECT * FROM empleados WHERE EXIST (SELECT * FROM cursosrealizados WHERE cursosrealizados.ficha = empleados.ficha)
29
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
30
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
Nombre, Sexo
(empleados)
Nombre
Mara Luis Jos
Sexo
F M M
31
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
(empleados) (docentes)
R1 R2
Apellido Gonzlez Garca Vielma Carreo Salazar Fermn Guilln Mora Nombre Mara Luis Jos Luis Jess Jos Luisa Fernando Sexo F M M M M M F M
SELECT apellido, nombre, sexo FROM empleados UNION SELECT apellido, nombre, sexo FROM docentes
32
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
Apellido, Nombre,Sexo
(empleados) )
Apellido, Nombre,Sexo
(docentes)
SELECT apellido, nombre, sexo INTO TEMP R1 FROM empleados WHERE cond = Act;
R1 - R2
Nombre Luis Sexo M
R2 R1
Apellido Salazar Fermn Guilln Mora Nombre Jess Jos Luisa Fernando Sexo M M F M
(empleados) (docentes)
R1 R2
SELECT apellido, nombre, sexo FROM empleados INTERSECT SELECT apellido, nombre, sexo FROM docentes
Sexo F M
35
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
SQL 87
SELECT * FROM R1, R2 WHERE R1.Dpto = R2.CodDpto;
Apellido
Gonzlez Garca Vielma Carreo
SQL 92
SELECT * FROM R1 JOIN R2 ON (R1.Dpto = R2.CodDpto);
Cat
3 2 3 1
Nombre
Mara Luis Jos Luis
Ded
TC MT TC TC
Dpto
310 310 110 212
CodDpto
310 310 110 212
NombreDpto
Servicios Servicios Informtica Gerencia
36
(departamentos)
CodDpto, NombreDpto
SQL 87
SELECT * FROM R1, R2 WHERE R1.Dpto = R2.Dpto;
Apellido
Gonzlez Garca Vielma Carreo
SQL 92
SELECT * FROM R1 NATURAL JOIN R2;
Cat
3 2 3 1
Nombre
Mara Luis Jos Luis
Ded
TC MT TC TC
Dpto
310 310 110 212
CodDpto
310 310 110 212
DesDpto
Servicios Servicios Informtica Gerencia
37
SELECT cod, nombre, COUNT(*) FROM departamentos, empleados WHERE departamentos.cod = empleados.dpto GROUP BY cod, nombre
Count 0 2 1 1 0 0
38
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
Vistas (Views):
Es una tabla virtual derivada de otras tablas (tablas fsicas u otras vistas), que slo existen a nivel externo de la base de datos.
Al ser tablas virtuales, sus registros no son almacenados fsicamente en la base de datos, sino que subyacen sobre el almacenamiento de las tablas base que originan la vista. Son utilizadas para especificar relaciones que son utilizadas con frecuencia o para restringir la vista que sobre una relacin un usuario o un grupo de usuarios pueden consultar o manipular.
39
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
Cat 2 3 1
Ded MT TC TC
Sexo M M M
40
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
En general, las vistas definidas sobre mltiples tablas por medio de reuniones no son actualizables.
Las vistas definidas mediante agrupacin y funciones agregadas no son actualizables.
41
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01
5.6 Ejercicios
1. Obtener la lista de empleados y docentes con dedicacin TC o DEX
2. Listar Ficha, Apellido, Nombre y los datos de los cursos realizados por cualquier docente.