Sei sulla pagina 1di 8

Programa de prcticas:

Prctica 1. Introduccin al uso de una BD relacional (ACCESS). Prctica 2. Representacin de la realidad en el modelo

El lenguaje SQL.

Lenguaje SQL:
SELECT (consulta) INSERT (insercin de tuplas ) DELETE (borrado de tuplas ) UPDATE (modificacin de tuplas )

manipulacin de datos (consulta y actualizaci n

Prctica 3:
El lenguaje SQL (1 parte).

relacional de datos. Prctica 3. El lenguaje SQL. (ORACLE8) Prctica 4. Estudio del SGBD ORACLE8.

(5 sesin).

definicin de datos (definicin del esquema)

El lenguaje SQL.
atributos identificadores atributos de referencia

El lenguaje SQL.
Departamento cod_dep nombre director
Asignatura

El lenguaje SQL. Consultas sobre varias relaciones. SELECT [ ALL | DISTINCT] A1i, ..., A2j,... Ank| * FROM

SELECT [ ALL | DISTINCT] A1i, ..., A2j,..., Ank| * FROM R 1, R 2, ..., R n [ WHERE condicin] [ GROUP BY B1, B2,..., Bm]
cod_asg nombre

R1, R2, ...Rn


condiciones de concatenacin de las relaciones R1, R2, ...Rn AND condiciones de la consulta

Profesor

telfono

[ HAVING condicin]
Uso de varias relaciones en una SELECT: relaciones de la clusula FROM: slo se puede obtener datos de estas relaciones. relaciones en subconsultas de las clusulas WHERE y HAVING: estas subconsultas sirven para expresar condiciones.

[ WHERE condicin]

cod_pro nombre telfono cod_dep Docencia cod_pro cod_asg gteo gpra

semestre teora prac cod_dep

la concatenacin entre R1 , R2 , ...Rn se realiza usualmente sobre los atributos de referencia (claves ajenas) de las relaciones.

El lenguaje SQL.
Obtener la docencia de los profesores del DSIC: nombre del profesor, nombre de la asignatura impartida y grupos impartidos. SELECT PX.nombre, AX.nombre, DX.gteo , DX.gpra FROM Profesor PX, Docencia DX, Asignatura AX WHERE PX.cod_pro = DX.cod_pro concatenaci n de AND Profesor, Asignatura y Docencia AX.cod_asg = DX.cod_asg AND PX.cod_dep = DSIC
condiciones de la consulta

El lenguaje SQL.

El lenguaje SQL.

Concatenacin de tablas.
SELECT [ALL | DISTINCT] A 1i,...,A 2j,...,A nk| * FROM Rconcatenacin de 1, R 2, ..., R n tablas [WHERE condicin] [GROUP BY B1, B2,..., Bm] [HAVING condicin]
Producto cartesiano concatenacin interna concatenacin externa

Producto cartesiano o CROSS JOIN


tabla1 CROSS JOIN tabla2

Equivalente a la inclusin en el componente FROM de las dos referencias de tablas separadas por comas: FROM tabla1, tabla2

El lenguaje SQL.

El lenguaje SQL. Concatenacin interna de tablas: NATURAL INNER JOIN. SELECT [ ALL | DISTINCT] A1, A2,..., An| * FROM tabla1 NATURAL INNER JOIN tabla2 (1) [ WHERE condicin] [ GROUP BY B1, B2,..., Bm] [ HAVING condicin]
(2) (3) (4)

El lenguaje SQL.
SELECT [ALL | DISTINCT ] A1 , A2 ,..., An| * FROM tabla1 NATURAL INNER JOIN tabla2 [WHERE condicin] [GROUP BY B 1 , B2 ,..., Bm] [HAVING condicin]

Concatenacin interna de tablas.


tabla1 [NATURAL] [INNER ] JOIN tabla2 [ON condicin | USING (C 1, C 2,..., C n) ]

Concatenacin interna de tablas: NATURAL INNER JOIN

si C1, C2,..., Cn son los

atributos del mismo nombr de tabla1 y tabla2

SELECT [ALL | DISTINCT ] A1 , A2 ,..., An| *

tabla1 NATURAL INNER JOIN tabla2 tabla1 INNER JOIN tabla2 USING (C1, C 2,..., C n) tabla1 INNER JOIN tabla2 ON condicin

se concatenan las tuplas de tabla1 y tabla2 que tienen el mismo valor en los atributos del mismo nombre
operador Concatenacin del lgebra Relacional

FROM tabla1, tabla2 WHERE (tabla1. C1 =tabla2. C1 ) AND (tabla1. C2 =tabla2. C2 )AND ... AND (tabla1. Cn =tabla2. Cn ) [AND condicin] [GROUP BY B 1 , B2 ,..., Bm] [HAVING condicin]

tabla1

tabla2

El lenguaje SQL.
SELECT PX.cod_pro, PX.nombre, COUNT(DX.cod_asg ) FROM Profesor PX, Docencia DX concatenaci n de WHERE PX.cod_pro = DX.cod_pro Profesor y Docencia GROUP BY cod_pro

El lenguaje SQL. Concatenacin interna de tablas: INNER JOIN USING


SELECT [ALL | DISTINCT ] A1, A2,..., An| * (1) FROM tabla1 INNER JOIN tabla2 USING (C 1, C2,..., Cn) (2) [WHERE condicin] (3) [GROUP BY B1, B2,..., Bm ] (4) [HAVING condicin ]

El lenguaje SQL. Concatenacin interna de tablas: INNER JOIN USING.


SELECT [ALL | DISTINCT ] A1 , A2 ,..., An| * FROM tabla1 INNER JOIN tabla2 USING (C1 , C2 ,..., Cn ) [WHERE condicin] [GROUP BY B 1 , B2 ,..., Bm] [HAVING condicin]

SELECT cod_pro, nombre, COUNT ( cod_asg) FROM Profesor NATURAL INNER JOIN Docencia GROUP BY cod_pro

SELECT [ALL | DISTINCT ] A1 , A2 ,..., An| * FROM tabla1, tabla2

se concatenan las tuplas de tabla1 y tabla2 que tienen el mismo valor en los atributos comunes C1, C2,..., Cn

WHERE (tabla1.C1 =tabla2.C1 ) AND (tabla1.C2 =tabla2.C2 )AND ... AND (tabla1.Cn =tabla2.Cn ) [AND condici n] [GROUP BY B 1 , B2 ,..., Bm] [HAVING condicin]

Es til cuando no interesa que las relaciones se concatenen por todos los atributos del mismo nombre (NATURAL INNER JOIN).

El lenguaje SQL.
SELECT cod_pro, Profesor.nombre, Departamento.nombre FROM Profesor, Departamento WHERE Profesor.cod_dep = Departamento.cod_dep

El lenguaje SQL. Concatenacin interna de tablas: INNER JOIN ON


SELECT [ALL | DISTINCT ] A1, A2,..., An| * FROM tabla1 INNER JOIN tabla2 ON condicin1 [WHERE condicin2] [GROUP BY B1, B2,..., Bm ] [HAVING condicin ] se concatenan las tuplas de tabla1 y tabla2 que cumplen condicin1
Es til cuando:

El lenguaje SQL. Concatenacin interna de tablas: INNER JOIN ON.


(1) (2) (3) (4)
SELECT [ALL | DISTINCT ] A1 , A2, ..., A n| * FROM tabla1 INNER JOIN tabla2 ON condici n1 [WHERE condicin2] [GROUP BY B 1 , B2 ,..., Bm] [HAVING condicin]

SELECT cod_pro, Profesor.nombre, Departamento.nombre FROM Profesor NATURAL INNER JOIN Departamento

SELECT [ALL | DISTINCT ] A1 , A2 ,..., An| * FROM tabla1, tabla2 WHERE (condici n1) [AND condici n2] [GROUP BY B 1 , B2 ,..., Bm] [HAVING condicin]

SELECT cod_pro, Profesor.nombre, Departamento.nombre FROM Profesor INNER JOIN Docencia USING cod_dep

interesa concatenar tuplas de tabla1 y tabla2 por condiciones distintas de la igualdad. los atributos por los que se desea concatenar no tienen el mismo nombre en ambas relaciones.

El lenguaje SQL.

El lenguaje SQL.

El lenguaje SQL.

Concatenacin externa de tablas.


Obtener de cada departamento el nmero de profesores adscritos. SELECT DX.cod_dep, COUNT(PX.cod_pro) FROM Profesor PX, Departamento DX WHERE PX.cod_dep = DX.cod_dep GROUP BY DX.cod_dep los departamentos que no tienen profesores adscritos no salen en el resultado de la consulta !

Concatenacin externa de tablas.


Obtener de cada departamento el nmero de profesores adscritos. SELECT Departamento.cod_dep, COUNT(cod_pro) FROM (Profesor INNER JOIN Departamento USING ( cod_dep) ) GROUP BY Departamento.cod_dep

Concatenacin externa de tablas.


tabla1 [NATURAL] { LEFT [OUTER] RIGHT [OUTER] FULL [OUTER] | | } JOIN tabla2

[ON condicin | USING ( C1, C2,..., Cn) ]

los departamentos que no tienen profesores adscritos no salen en el resultado de la consulta !

tabla1 [NATURAL] LEFT JOIN tabla2 [ON condici n| USING ( C1, C2,..., Cn)] tabla2 tabla1 [NATURAL] RIGHT JOIN tabla2 [ON condici n| USING (C1, C2,..., Cn)] tabla2 tabla1 [NATURAL] FULL JOIN tabla2 [ON condici n| USING ( C1, C2,..., Cn)] tabla2

El lenguaje SQL.
SELECT [ALL | DISTINCT ] A1, A2,..., An| * FROM tabla1 [NATURAL] LEFT JOIN tabla2
[ON condici n| USING (C1 , C2 ,..., Cn )]

El lenguaje SQL.
Obtener de cada departamento el nmero de profesores adscritos. SELECT Departamento.cod_dep, COUNT(cod_pro) FROM Departamento LEFT JOIN Profesor ON (cod_dep) GROUP BY Departamento.cod_dep

El lenguaje SQL.
cod_dep DSIC DSIC DSIC DISCA DISCA MAT FIS IDM Departamento.nombre Sistemas Informticos y Computacin Sistemas Informticos y Computacin Sistemas Informticos y Computacin Ingeniera de Sistemas, Computadores y Automtica Ingeniera de Sistemas, Computadores y Automtica Matemtica Aplicada Fsica Aplicada Idiomas Estadstica e Investigacin Operativa Org. de Empresas, Economa Financ. y Contabilidad Org. de Empresas, Economa Financ. y Contabilidad director V. Botti V. Botti V. Botti A. Crespo A. Crespo P.Prez J. Linares B. Montero L. Barcel M. Prez M. Prez Departamento cod_pro .telfono 3500 3500 3500 5700 5700 6600 5200 5300 4900 6800 6800 CPG NULO JTM IGP Cristina Prez Guillot NULO Jos Torralba Martnez Ignacio Gil Pechun 7439 NULO 4590 3423 JCC MAF MCG JBD DGT RFC Profesor. nombre Juan Casamayor Rdenas Mara Alpuente Frasnedo Matilde Celma Gimnez Jos Benlloch Dualde Daniel Gil Toms Robert Fuster i Capilla Profesor. telfono 7796 3560 7756 5760 5679 6789

(1) (2) (3) (4)

DSIC

[WHERE condicin] [GROUP BY B1, B2,..., Bm ] [HAVING condicin ]

DISCA 2 MAT FIS IDM EIO OEM 1 1 1 0 2

{concatenacin (NATURAL | ON | USING) de las tuplas de tabla1 y tabla2} UNION {tuplas de tabla1 que no pueden concatenarse con tuplas de tabla2 extendidas con valores nulos para los atributos de tabla2}

EIO OEM OEM

Departamento LEFT JOIN Profesor ON (cod_dep)

El lenguaje SQL.
SELECT [ALL | DISTINCT ] Ai, A2,..., An| * FROM tabla1 [NATURAL] RIGHT JOIN tabla2
[ON condici n| USING (C1 , C2 ,..., Cn )]

El lenguaje SQL.
Obtener de cada departamento el nmero de profesores adscritos. SELECT Departamento.cod_dep, COUNT(cod_pro) FROM Departamento LEFT JOIN Profesor ON (cod_dep) GROUP BY Departamento.cod_dep

El lenguaje SQL.
SELECT [ALL | DISTINCT ] A1, A2,..., An| * FROM tabla1 [NATURAL] FULL JOIN tabla2
[ON condici n| USING (C1 , C2 ,..., Cn )]

(1) (2) (3) (4)

(1) (2) (3) (4)

[WHERE condicin] [GROUP BY B1, B2,..., Bm ] [HAVING condicin ]

[WHERE condicin] [GROUP BY B1, B2,..., Bm ] [HAVING condicin ]

{concatenaci n (NATURAL | ON | USING) de las tuplas de tabla1 y tabla2}

{concatenacin (NATURAL | ON | USING) de las tuplas de tabla1 y tabla2} UNION {tuplas de tabla2 que no pueden concatenarse con tuplas de tabla1 extendidas con valores nulos para los atributos de tabla1}

SELECT Departamento.cod_dep, COUNT(cod_pro) FROM Profesor RIGHT JOIN Departamento ON (cod_dep) GROUP BY Departamento.cod_dep

UNION {tuplas de tabla2 que no pueden concatenarse con tuplas de tabla1 extendidas con valores nulos para los atributos de tabla1} UNION {tuplas de tabla1 que no pueden concatenarse con tuplas de tabla2 extendidas con valores nulos para los atributos de tabla2}

El lenguaje SQL.

El lenguaje SQL.

El lenguaje SQL.

Concatenacin de tablas en ORACLE*.


Sintaxis del operador de SQL LEFT [OUTER] JOIN en ORACLE8: SELECT [ALL | DISTINCT ] A1, A2,..., An| * FROM tabla1 LEFT JOIN tabla2 ON tabla1.Ai Op tabla2.Aj ........... SQL

Concatenacin de tablas en ORACLE.


Sintaxis del operador de SQL RIGHT [OUTER] JOIN en ORACLE8: SELECT [ALL | DISTINCT ] A1, A2,..., An| * FROM tabla1 RIGHT JOIN tabla2 ON tabla1.Ai Op tabla2.Aj ........... SQL SELECT [ALL | DISTINCT ] A1, A2,..., An| * FROM tabla1, tabla2 WHERE tabla1.Ai (+) Op tabla2.Aj ........... ORACLE
Si la condicin de combinaci n del JOIN externo se define sobre varias columnas, el signo (+) deber aparecer en cada columna que participa en la combinacin en el mismo sentido: si es RIGHT en la columna de la tabla t1 y si es LEFT en la columna de la tabla t2.

UNION JOIN
Obtiene una tabla que contiene : todas las columnas de tabla1 y tabla2 todas las tuplas de tabla1 con nulos en las columnas de la tabla2 y viceversa (todas las tuplas de tabla2 con nulos en las columnas de la tabla1)
ORACLE

SELECT [ALL | DISTINCT ] A1, A2,..., An| * FROM tabla1, tabla2 WHERE tabla1.Ai Op tabla2.Aj (+) ...........

* En ORACLE s lo existen operadores para la concatenacin externa.

El lenguaje SQL.

El lenguaje SQL. UNION consulta1 UNION [ALL] consulta2 INTERSECT consulta1 INTERSECT consulta2

El lenguaje SQL. UNION


Obtener el nombre de todo el personal (profesores y directores de departamento).

Operaciones conjuntistas en SQL.


UNION EXCEPT (uni n)

INTERSECT (interseccin) (diferencia) SELECT nombre FROM Director UNION SELECT nombre FROM Profesor

Se definen entre relaciones compatibles (del mismo esquema).

EXCEPT consulta1 EXCEPT consulta2

El lenguaje SQL. UNION


Obtener de cada departamento el nmero de profesores adscritos.
SELECT Departamento.cod_dep, COUNT(cod_pro) FROM Departamento LEFT JOIN Profesor ON (cod_dep) GROUP BY Departamento.cod_dep SELECT D.cod_dep, COUNT(P.cod_pro) FROM Departamento D, Profesor P WHERE D.cod_dep = P.cod_dep GROUP BY D.cod_dep UNION SELECT D.cod_dep, 0 FROM Departamento D WHERE D.cod_dep NOT IN (SELECT cod_dep FROM Profesor)

El lenguaje SQL. INTERSECT


Obtener los departamentos que tienen adscritas asignaturas y profesores.

El lenguaje SQL. EXCEPT


Obtener los departamentos que no tienen adscritas asignaturas. SELECT cod_dep FROM Departamento EXCEPT SELECT DISTINCT cod_dep FROM Asignatura

SELECT DISTINCT cod_dep FROM Profesor INTERSECT SELECT DISTINCT cod_dep FROM Asignatura

En ORACLE, el operador EXCEPT se denomina MINUS.

COMBINACIONES DE TABLAS RESUMEN Existen, en definitiva, varias formas de combinar dos tablas en el lenguaje SQL: Incluir varias tablas en la clusula from . Uso de subconsultas en las condiciones de las clusulas where o having. Combinaciones conjuntistas de tablas: utilizan para combinar las tablas operadores de la teora de conjuntos. Concatenaciones de tablas: combinan dos tablas utilizando diferentes formas variantes del operador concatenacin del lgebra Relacional.

LGEBRA RELACIONAL -- SQL

El lenguaje SQL.

A.R. |><| Otros (dups.) ><

SQL ESTNDAR UNION EXCEPT INTERSECT CROSS JOIN NATURAL JOIN UNION MINUS

SQL de ORACLE8

Lenguaje SQL: manipulacin de datos (consulta y actualizacin):


SELECT (consulta) INSERT (insercin de tuplas ) DELETE (borrado de tuplas ) UPDATE (modificacin de tuplas )

INTERSECT (no hace falta, poner una coma)


(no est, bastan =s en el WHERE)

UNION ALL Left/Right/Full JOIN UNION JOIN

UNION ALL WHERE TX.a1(+) = TY.a2 (eq. right join) WHERE TX.a1 = TY.a2 (+) (eq. leftjoin)

definicin de datos (definicin del esquema)

El lenguaje SQL.

El lenguaje SQL.

El lenguaje SQL.

Operacin de insercin de tuplas.


Insercin simple INSERT INTO tabla [( columna1, columna2, ...columnak)] {DEFAULT VALUES | VALUES ( v1, v2, ..., vk) } Insercin mltiple INSERT INTO tabla [( columna1, columna2, ...columnak)] consulta

Operacin de insercin de tuplas.


Insertar un nuevo profesor:
INSERT INTO Profesor VALUES (EVL, Enrique Vidal Lpez, 73333, DSIC )

Operacin de insercin de tuplas.


Insertar en la tabla Profesor los profesores de una tabla del mi smo esquema Profesores_Alcoy: Insercin mltiple
INSERT INTO Profesor SELECT cod_pro, nombre, tel fono, cod_dep

{(cod_pro, EVL ), (nombre,Enrique Vidal L pez), (telfono,73333), (cod_dep,DSIC )}

FROM Profesores_Alcoy

INSERT INTO Profesor (cod_pro, nombre, cod_dep)

Si no se incluye la lista de columnas se deber n insertar filas completas de tabla. Si se incluye la opcin default values se insertar una nica fila en la tabla con los valores por defecto apropiados en cada columna (seg n la definicin de tabla).

VALUES (EVL, Enrique Vidal Lpez, DSIC )

{(cod_pro, EVL ), (nombre,Enrique Vidal L pez), (telfono,?), (cod_dep,DSIC )}

El lenguaje SQL.

El lenguaje SQL.

El lenguaje SQL.

Operacin de borrado de tuplas.


DELETE FROM tabla [WHERE condicin]
Borrar el profesor de c digo EVL: Borrado simple

Operacin de actualizacin de tuplas.


UPDATE tabla SET columna1 = {DEFAULT| NULL | expresin1}, columna2 = {DEFAULT| NULL | expresin2}, ....... [ WHERE condicin ]

Operacin de actualizacin de tuplas.


Adscribir el profesor de cdigo MCG al DISCA. UPDATE Profesor SET cod_dep = DISCA WHERE cod_pro=MCG Adscribir todos los profesores del departamento DSIC al DISCA. Actualizacin mltiple Actualizacin simple

DELETE FROM Profesor WHERE cod_pro = EVL

Borrar los profesores del DSIC:

Borrado mltiple UPDATE Profesor SET cod_dep = DISCA WHERE cod_dep=DSIC

DELETE FROM Profesor WHERE cod_dep = DSIC

El lenguaje SQL.

El lenguaje de manipulacin de datos de ORACLE:


Las principales diferencias respecto al est ndar SQL son: no incluye operadores de concatenacin interna la concatenacin externa tiene una notacin especfica en ORACLE el operador EXCEPT se denomina MINUS.

Potrebbero piacerti anche