Tema05 SQL

Descargar como ppt, pdf o txt
Descargar como ppt, pdf o txt
Está en la página 1de 42

Tema 5: El Lenguaje SQL

SELECT * FROM departamentos WHERE jefedpto IS NULL

Profesor: Franklin Bello C Email:fbello@uneg.edu.ve


1
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

Tema 5: El Lenguaje SQL


Contenido: 5.1 Introduccin 5.2 El Lenguaje de Definicin de Datos 5.3 El Lenguaje de Manipulacin de Datos: Actualizacin

5.4 El Lenguaje de Manipulacin de Datos: Consultas


5.5 El Lenguaje de Control 5.6 Ejercicios

2
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.1 Introduccin
SQL (Structured Query Laguage):

Lenguaje Estructurado de Consulta para bases de datos relacionales.


Evolucin de SEQUEL de IBM para el prototipo System R

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

Sublenguaje de Control de Integridad SQL Incorporado y SQL Dinmico


4
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

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.

SQL incluye rdenes para la especificacin del comienzo y final de transacciones.


5

Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.1 Introduccin
Componentes del Lenguaje:

Lenguaje de Control de Integridad:


Lenguaje de Control de Autorizaciones: SQL Incorporado y SQL dinmico:

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

Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

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

5.2 LDD: Lenguaje de Definicin de Datos


Clasificacin de las clusulas:
Definicin del Esquema Creacin CREATE DOMAIN CREATE SCHEMA CREATE TABLE CREATE ASSERTION CREATE VIEW CREATE INDEX ALTER TABLE Evolucin del Esquema Modificacin ALTER DOMAIN Eliminacin DROP DOMAIN DROP SCHEMA DROP TABLE DROP ASSERTION DROP VIEW DROP INDEX

Elementos
Dominios Esquemas Tablas Aserciones Vistas Indices

8
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.2 LDD: Lenguaje de Definicin de Datos


Tipos de Dominios en SQL:
char (n) : es una cadena de caracteres de longitud fija, con una longitud n especificada por el usuario. Tambin se puede utilizar la palabra completa character. varchar (n) : es una cadena de caracteres de longitud variable, con una longitud n especificada por el usuario.

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

5.2 LDD: Lenguaje de Definicin de Datos


Tipos de Dominios en SQL:
numeric (p,d) : es un nmero en coma flotante, cuya precisin la especifica el usuario. El nmero est formado por p dgitos (ms el signo), y de esos p dgitos, d pertenecen a la parte decimal. float (n) : es un nmero en coma flotante, cuya precisin es de al menos n dgitos.

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

5.2 LDD: Lenguaje de Definicin de Datos


Definicin de Dominios en SQL:
CREATE DOMAIN <nombre de dominio> [ AS ] <tipo de datos> [ DEFAULT <opcin por defecto> ] [ <restriccin de dominio> ] literal, funcin de tiempo o fecha, o bien [CONSTRAINT <nombre de restriccin> ] USER, SYSTEM USER o [CHECK ( <condicin>)]
NULL

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

5.2 LDD: Lenguaje de Definicin de Datos


Definicin de Tablas en SQL:
CREATE [TEMPORARY] TABLE <nombre de tabla> (<elemento de tabla> [, <elemento de tabla>, ]) <elemento de tabla> ::= <definicin de columna> | <definicin de restriccin de tabla> <definicin de columna>::= <nombre de columna> {<tipo de datos> | <nombre de dominio>} [DEFAULT {<literal>|<NULL>}] [NOT NULL] [UNIQUE] [PRIMARY KEY] [CHECK (<condicin>)] [REFERENCES <nombre-tabla>.<nombrecolumna> [ACTION]] [CONSTRAINT <nombre-constraint> [opciones-constraint]]

<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

5.2 LDD: Lenguaje de Definicin de Datos


Definicin de Tablas en SQL:
CREATE TABLE empleados ( apellido character varying(30) NOT NULL, nombre character varying(30) NOT NULL, ficha character(5) NOT NULL, cedula character(10) NOT NULL, categoria smallint DEFAULT 1, dedicacion character(3), fechanac date, dpto character(3), sexo character(1), condicion character(1) NOT NULL DEFAULT 'A', PRIMARY KEY (ficha), CHECK (categoria >= 1 AND categoria <= 5), CONSTRAINT check_dedicacion CHECK (dedicacion in ('TCV', 'MT', 'TC', 'DED')) );
13
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.2 LDD: Lenguaje de Definicin de Datos


Definicin de Tablas en SQL:
CREATE TABLE docentes ( apellido domain_nombre, nombre domain_nombre, ficha character(5) NOT NULL, cedula character(10) NOT NULL, categoria domain_categoria, dedicacion domain_dedicacion, fechanac date, dpto character(3), sexo domain_sexo, condicion domain_condicion, PRIMARY KEY (ficha), FOREIGN KEY (dpto) REFERENCES departamento (coddpto) ON UPDATE CASCADE ON DELETE SET NULL );
14
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.2 LDD: Lenguaje de Definicin de Datos


Definicin de Indices en SQL:
CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ] ( { column | ( expression ) } [ opclass ] [, ...] ) [ WITH ( storage_parameter = value [, ... ] ) ] [ TABLESPACE tablespace ] [ WHERE predicate ]

CREATE UNIQUE INDEX index_pk ON "Empleado" USING btree ("Ficha") TABLESPACE pg_default;

CREATE INDEX index_nombres ON "Empleado" ("Apellido", "Nombre");

15
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.2 LDD: Lenguaje de Definicin de Datos


Modificacin de Tablas en SQL:
ALTER TABLE name ADD [ COLUMN ] column type [ column_constraint [ ... ] ] DROP [ COLUMN ] column [ RESTRICT | CASCADE ] ALTER [ COLUMN ] column TYPE type [ USING expression ] ALTER [ COLUMN ] column SET DEFAULT expression ALTER [ COLUMN ] column DROP DEFAULT ALTER [ COLUMN ] column { SET | DROP } NOT NULL ALTER TABLE [ ONLY ] name [ * ] RENAME [ COLUMN ] column TO new_column ALTER TABLE name RENAME TO new_name

16
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.2 LDD: Lenguaje de Definicin de Datos


Modificacin de Tablas en SQL:
ALTER TABLE docented ADD COLUMN nivel smallint CHECK (nivel between 1 and 2); ALTER TABLE empleados ADD CONSTRAINT empleado_dpto_fkey FOREIGN KEY (dpto) REFERENCES departamento (coddpto) MATCH SIMPLE ON UPDATE CASCADE ON DELETE SET NULL; ALTER TABLE docentes DROP COLUMN columnx;

17
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.2 LDD: Lenguaje de Definicin de Datos


Eliminacin de Elementos en SQL:
Eliminar Dominios: DROP DOMAIN [IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] Eliminar Esquemas: DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] Eliminar Tablas: DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] Eliminar Indices: DROP INDEX [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

18
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.2 LDD: Lenguaje de Definicin de Datos


Ejercicio LDD:
Dado el siguiente esquema relacional construya la bd correspondiente usando clusulas SQL:
DOCUMENTO (cod,ttulo, idioma, tipo)
D:C/U:C

ARTICULO(cod,fecha-pub, revista)
D:C/U:C

D:R/U:C

REVISTA(id, nombre, editorial)


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

5.3 LMD: Actualizaciones de la BD


Actualizacin de la BD: Insercin
INSERT INTO table [ ( column [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query } [ RETURNING * | output_expression [ AS output_name ] [, ...] ]

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

5.3 LMD: Actualizaciones de la BD


Actualizacin de la BD: Actualizacin
UPDATE table [ [ AS ] alias ] SET { column = { expression | DEFAULT } | ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] [ WHERE condition ]

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

5.3 LMD: Actualizaciones de la BD


Actualizacin de la BD: Borrado
DELETE FROM table [ [ AS ] alias ] [ WHERE condition ]

Ejemplos:
DELETE FROM empleados WHERE ficha = 03435

DELETE FROM empleados WHERE condicion = A AND dedicacion = TCV


DELETE FROM departamentos WHERE NOT EXISTS (SELECT * FROM empleados WHERE empleados.dpto = departamentos.cod)
22
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


Estructura Bsica de una Consulta en SQL:
SELECT a1, a2,,an FROM r1,r2,,rm WHERE p (no elimina los duplicados)

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

5.4 LMD: Consultas de la BD


Sintaxis de la Clusula SELECT:
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] *| expression [ AS output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ ORDER BY expression [ ASC | DESC ]]

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

5.4 LMD: Consultas de la BD


Eliminacin de Duplicados en la Consulta:
ALL: valor que se asume por omisin SELECT dpto FROM empleados
dpto 310 310 110 212

DISTINCT: eliminacin de duplicados SELECT DISTINCT dpto FROM empleados


dpto 310 110 212

25
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


Ordenacin del Resultado de la Consulta:
SELECT * FROM empleados ORDER BY dpto, categoria DESC, 1
Por defecto ASC Puede usarse el nro de la columna en que aparece en el SELECT

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

5.4 LMD: Consultas de la BD


Condicin de la Seleccin de Consulta (SELECCIN):
SELECT * FROM docentes WHERE nivel = Pre AND ded IN (TC,DEX)
Apellido Fermn Guilln Mora Nombre Jos Luisa Fernando Ficha 05757 02345 01111 Cdula V10010100 V12345678 V06789999 FecNac 30/08/72 28/06/68 26/08/60

Condicin: Combinacin de una o ms expresiones que dan como resultado CIERTO, FALSO o DESCONOCIDO

Nivel Pre Pre Pre

Cat 2 4 5

Ded DEX TC DEX

Dpto 214 214 212

Sexo M F M

Cond Act Jub Jub

27
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


Evaluacin de Valores Nulos en la Consulta:
SELECT * FROM departamentos WHERE jefedpto IS NULL
Cod 211 310 110 212 Nombre Ciencias y Tecnologa Servicios Informtica Gerencia 08990 03333 06666 JefeDpto 05757

NULL: indica la ausencia de informacin sobre el valor del atributo

Cod 310 214

Nombre Servicios Hombre y Ambiente

JefeDpto

214
213

Hombre y Ambiente
Educacin

28
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


Evaluacin de Subconsultas en la Condicin:
SELECT * FROM empleados WHERE ficha IN (SELECT jefedpto FROM departamentos)
Apellido Carreo Nombre Luis Ficha 08990 Cdula E80019299 FecNac 20/03/78 Cat 1

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)

EXIST: Retorna true si la subconsulta devuelve alguna fila.

29
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


Renombramiento de tablas o atributos de la Consulta (Proyeccin):
SELECT a.apellidos, a.nombre, a.cedula FROM empleados AS a
Crea un alias de la tabla. La partcula AS es opcional.

SELECT apellidos ap, nombre nom, cedula AS ci FROM empleados


ap Gonzlez Garca Vielma Carreo nom Mara Luis Jos Luis ci V09424248 V07567567 V10987987 E80019299

Crea un alias del nombre de la columna que se mostrar en la salida.

30
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


Renombramiento de tablas o atributos de la Consulta (Proyeccin):

Nombre, Sexo

(empleados)

Nombre
Mara Luis Jos

Sexo
F M M

Se eliminan tuplas repetidas

SELECT apellido, nombre, sexo FROM empleados


Apellido Gonzlez Garca Vielma Carreo Nombre Mara Luis Jos Luis Sexo F M M M

Se eliminan tuplas repetidas???

31
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


UNION:
R1 R2
Apellido, Nombre,Sexo Apellido, Nombre,Sexo

(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

5.4 LMD: Consultas de la BD


DIFERENCIA:
R1 R2
Apellido Carreo Cond = Act

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

SELECT apellido, nombre, sexo INTO TEMP R2 FROM docentes;


R1 EXCEPT R2; R2 EXCEPT R1;
Se puede derivar utilizando subconsultas con el operador NOT IN
33

Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


PRODUCTO CARTESIANO:
R1 Cond = Act ( Apellido, Nombre,Sexo (empleados) ) R2 Area = Informtica (cursos) R1 x R2
SELECT apellido, nombre, sexo INTO TEMP R1 FROM empleados WHERE cond = Act; SELECT * INTO TEMP R2 FROM cursos WHERE area = Informtica; SELECT * FROM R1, R2;
Apellido Gonzlez Gonzlez Garca Garca Carreo Carreo Nombre Mara Mara Luis Luis Luis Luis Sexo F F M M M M Id C1 C2 C1 C2 C1 C2 Nombre Excel Bsico Excel Avanzado Excel Bsico Excel Avanzado Excel Bsico Excel Avanzado Dur 32 24 32 24 32 24 UM H H H H H H Area Informtica Informtica Informtica Informtica Informtica Informtica
34
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


INTERSECCION:
R1 R2
Apellido, Nombre,Sexo Apellido, Nombre,Sexo

(empleados) (docentes)

R1 R2
SELECT apellido, nombre, sexo FROM empleados INTERSECT SELECT apellido, nombre, sexo FROM docentes

Apellido Gonzlez Garca

Nombre Mara Luis

Sexo F M

Se puede derivar utilizando subconsultas con el operador IN

35
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


REUNION:
R1 Apellido, Nombre, Cat, Ded, Dpto (empleados) SELECT apellido, nombre, sexo, cat, ded, dpto INTO TEMP R1 FROM empleados WHERE Cond = Act; SELECT cod coddpto, nombre nombredpto INTO TEMP R2 FROM departamentos;

R2 CodDpto, NombreDpto (departamentos) R1 (Dpto = CodDpto) R2

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

Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


REUNION NATURAL:
R1 Apellido, Nombre, Cat, Ded, Dpto (empleados) SELECT Apellido, Nombre, Sexo, Cat, Ded, Dpto INTO TEMP R1 FROM empleados WHERE Cond = Act; SELECT Cod AS Dpto, Nombre as desdpto INTO TEMP R2 FROM departamentos;

R2(Dpto, NombreDpto) R1 *(Dpto ) R2

(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

Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.4 LMD: Consultas de la BD


AGRUPACION :
Funciones que se aplican sobre las tuplas que componen cada grupo resultante de aplicar una clusula GROUP BY. Las funciones de agregado definidas en SQL92 son: COUNT, MAX, MIN, SUM y AVG.

SELECT cod, nombre, COUNT(*) FROM departamentos, empleados WHERE departamentos.cod = empleados.dpto GROUP BY cod, nombre

Cod 211 310 110 212 214 213

Nombre Ciencias y Tecnologa Servicios Informtica Gerencia Hombre y Ambiente Educacin

Count 0 2 1 1 0 0

38
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.5 Lenguaje de Definicin de Vistas

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

5.5 Lenguaje de Definicin de Vistas


Sintaxis de la Clusula SELECT:
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ] AS query Ejemplo:
CREATE VIEW empleados_masculinos AS (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

40
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

5.5 Lenguaje de Definicin de Vistas


Actualizacin de Vistas: Una vista con una sola tabla de definicin es actualizable si los atributos de la vista contienen la clave primaria o alguna otra clave candidata de la relacin base, de tal forma que exista una transformacin de cada tupla (virtual) de la vista a una sola tupla base.

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.

3. Obtener todos los cursos que no ha realizado un docente X.


4. Listar Apellido, Nombre, Condicin y el nmero de cursos realizados por cada empleado. 5. Listar el nmero de empleados ms docentes que estn asignados a cada departamento. 6. Listar la Ficha, Apellido y Nombre de los docentes que han realizado cursos de Informtica pero no han realizado cursos de Ingls.
42
Tema 05. El Lenguaje SQL. Franklin Bello. 2010-01

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy