Universidade da Coruña Departamento de Computación. Ampliación de SQL. Luis A. González Ares

HA C LU C E Universidade da Coru˜ na Departamento de Computaci´ on Ampliaci´ on de SQL Luis A. Gonz´ alez Ares [email protected] Ampliaci´ on de SQL

4 downloads 98 Views 92KB Size

Recommend Stories


* Professora da Universidade de Lujan (Argentina) e
LOS TALLERES DE APOYO ESCOLAR: UNA ALTERNATIVA COMPLEMENTARIA A LOS PROCESOS EDUCATIVOS FORMALES Resumo Este artigo visa discutir algumas possibilida

UNIVERSIDADE ESTADUAL DA PARAÍBA- UEPB DEPARTAMENTO DE LETRAS E ARTES CURSO DE LETRAS-ESPANHOL LUCIANA TEIXEIRA DA SILVA
UNIVERSIDADE ESTADUAL DA PARAÍBA- UEPB DEPARTAMENTO DE LETRAS E ARTES CURSO DE LETRAS-ESPANHOL LUCIANA TEIXEIRA DA SILVA LA COMPRENSIÓN LECTORA EN L

2014. Introducción a SQL
Introducción a SQL 07/11/2014 1. Trazabilidad de modelos 2. ¿Qué es SQL? 3. Evolución histórica 4. Presentación del modelo Introducción a SQL 5. T

Introducción a SQL (DML)
Introducción a SQL 08/11/2013 1. Introducción 2. Inserción 3. Borrado 4. Modificación 5. Consultas básicas 6. Consultas avanzadas Introducción a SQ

Anais do X Encontro de Geógrafos da América Latina 20 a 26 de março de 2005 Universidade de São Paulo
Anais do X Encontro de Geógrafos da América Latina – 20 a 26 de março de 2005 – Universidade de São Paulo UTILIDAD DEL MAPA TEMÁTICO EN LA ENSEÑANZA

UNIVERSIDADE DE ÉVORA
UNIVERSIDADE DE ÉVORA DEPARTAMENTO DE MÚSICA Mestrado em Música Performance Trabalho de projeto LA SONATA PARA TUBA "LA GUERRA DE LAS NARANJAS" DE SA

Story Transcript

HA

C LU C E

Universidade da Coru˜ na Departamento de Computaci´ on

Ampliaci´ on de SQL Luis A. Gonz´ alez Ares [email protected]

Ampliaci´ on de SQL – Planteamiento Objetivos • Describir algunos de los elementos que m´ as recientemente se han incorporado al lenguaje SQL. • Analizar las caracter´ısticas de dichos elementos. • Conocer su implementaci´ on en un SGBD real. • Establecer relaciones entre los nuevos conocimientos de SQL y los que ya se revisaron. Contenidos 1. 2. 3. 4.

Elementos iniciales Join Otros elementos Expresiones condicionales

Nota El presente material es un resumen de lo impartido en las clases de la Facultad de Inform´ atica, que se entrega como documento de apoyo.

Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

1

Ampliaci´ on de SQL – Elementos iniciales Caracteres problem´ aticos ’ Cadenas de caracteres que contienen un ap´ ostrofe. Aparici´ on en INSERT, SELECT, etc. Soluci´ on: ’’ (su aparici´ on dos veces lo convierte en el propio car´ acter, y no en lo que representa). Predicado LIKE Correspondencia con un patr´ on o modelo. Comodines: expresi´ on_car´ acter

[NOT]

LIKE

patr´ on

%

[ESCAPE car´ acter_protector]

Problemas si el patr´ on contiene comodines. Soluci´ on: indicar un car´ acter protector. SELECT FROM WHERE ORDER BY

* emp ename LIKE ’%a%%’ ESCAPE ’a’ nombre

Predicado SIMILAR Correspondencia con un patr´ on (expresi´ on regular). Usa:

_

%

*

+

[]

[^ ]

expresi´ on_car´ acter

[: :]

[NOT]

|

||

SIMILAR

() patr´ on

Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

2

Ampliaci´ on de SQL – Elementos iniciales

(ii)

Predicado EXISTS Comprobaci´ on de si una subconsulta devuelve o no filas. ... [NOT] SELECT FROM WHERE

EXISTS

subconsulta

* dept d EXISTS (SELECT FROM WHERE AND

* emp sal > 1500 deptno = d.deptno)

Predicado UNIQUE Comprueba si en el resultado de una subconsulta aparecen filas repetidas. ... [NOT] SELECT FROM WHERE

UNIQUE

subconsulta

* dept d UNIQUE (SELECT FROM WHERE AND

* emp sal > 1500 deptno = d.deptno)

Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

3

Ampliaci´ on de SQL – Elementos iniciales

(iii)

Operadores de cuantificaci´ on ANY o SOME, ALL Comprobaci´ on de una expresi´ on escalar con el resultado del operador sobre una subconsulta. ... expresi´ on_escalar operador_comparaci´ on { ALL | SOME | ANY } (lista_valores) Operadores de comparaci´ on:

=

!=

>

<

=

SELECT * FROM emp WHERE sal = ANY (SELECT sal FROM emp WHERE deptno = 30); Operadores conjuntistas UNION, INTERSECT, EXCEPT Aplica el operador al resultado de dos consultas. consulta1 { UNION | EXCEPT | INTERSECT } { ALL | DISTINCT } consulta2 • UNION: Uni´ on. • INTERSECT: Intersecci´ on. • EXCEPT: Diferencia.

Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

4

Ampliaci´ on de SQL – Elementos iniciales

(iv)

Operadores conjuntistas UNION, INTERSECT, EXCEPT (cont.) Cada operador por defecto aplica DISTINCT. • UNION: Valores que aparecen en las filas de una tabla o de la otra, sin repetir ning´ un valor.

• UNION ALL: Valores que aparecen en las filas de una tabla o de la otra, repetidos las veces que aparecen. • INTERSECT: Valores que aparecen en las filas de una tabla y de la otra, sin repetir ning´ un valor. • INTERSECT ALL: Valores que aparecen en las filas de una tabla y de la otra, repetidos n veces (si x e y son el n´ umero de veces que se repite un valor en la primera y en la segunda tabla, respectivamente, entonces n = m´ın(x, y)). • EXCEPT: Valores que aparecen en las filas de la primera tabla y no en la segunda, sin repetir ning´ un valor. • EXCEPT ALL: Valores que aparecen en las filas de la primera tabla y no en la segunda, repetidos n veces (si x e y son el n´ umero de veces que se repite un valor en la primera y en la segunda tabla, respectivamente, entonces n = m´ ax(x − y, 0)).

Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

5

Ampliaci´ on de SQL – Join INNER JOIN Permite vincular las columnas de varias tablas mediante operadores de comparaci´ on. Sintaxis: SELECT * FROM t1 [INNER] JOIN t2 ON condici´ on_join Dados: emp(empno, ename, deptno)

dept(deptno, dname, loc)

el join se expresa mediante: SELECT FROM WHERE AND

* emp, dept emp.deptno = dept.deptno ename LIKE ’A%’

SELECT FROM ON WHERE

* emp INNER JOIN dept emp.deptno = dept.deptno ename LIKE ’A%’

Supongamos ahora: emp(empno, ename, deptno, loc)

dept(deptno, dname, loc)

y deseamos (equijoin): SELECT FROM ON AND

* emp INNER JOIN dept emp.deptno = dept.deptno emp.loc = dept.loc

Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

6

Ampliaci´ on de SQL – Join

(ii)

Join natural Si expresamos una condici´ on de igualdad sobre todas las columnas que tienen el mismo nombre en dos tablas, se tiene el join natural. Sintaxis: SELECT * FROM t1 NATURAL [INNER] JOIN t2 Dados: emp(empno, ename, deptno, loc) el join natural ser´ıa: SELECT * FROM emp NATURAL INNER JOIN dept

dept(deptno, dname, loc) Una alternativa de efectos casi iguales: SELECT * FROM emp INNER JOIN dept USING (deptno, loc)

El join normal: SELECT * FROM emp INNER JOIN dept ON emp.deptno = dept.deptno AND emp.loc = dept.loc Los resultados son muy parecidos: en el primer y segundo resultado, las columnas deptno y loc aparecen una ´ unica vez; no as´ı en el tercero. El join natural y el join con USING son iguales del todo s´ olo si todas las columnas de nombres iguales est´ an en el USING. El join natural se corresponde con la operaci´ on join (n o) de ´ algebra relacional. Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

7

Ampliaci´ on de SQL – Join

(iii)

OUTER JOIN Permite vincular las columnas de varias tablas mediante operadores de comparaci´ on, haciendo que aparezcan todas las columnas de una tabla, de la otra, o de ambas, cumplan o no la condici´ on de join. Sean dos relaciones R y S. Tenemos las operaciones:

1

• Left outer join de R y S (R S): Todas las filas de la relaci´ on de la izquierda (R), rellenando con nulos en las filas que no se correspondan con las de S.

2

• Right outer join de R y S (R S): Todas las filas de la relaci´ on de la derecha (S), rellenando con nulos en las filas que no se correspondan con las de R.

3

• Full outer join de R y S (R S): Todas las filas de la relaci´ on de la izquierda (R), y todas las filas de la relaci´ on de la derecha (S), rellenando con nulos en las filas que no se correspondan con las de la otra. SELECT * FROM r {LEFT | RIGHT | FULL} [OUTER] JOIN s ON condici´ on_join SELECT * FROM r LEFT OUTER JOIN s ON r.c2 = s.c2

Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

8

Ampliaci´ on de SQL – Join

(iv)

CROSS JOIN Representa el producto cartesiano de las tablas involucradas. SELECT * FROM t1 CROSS JOIN t2 SELECT * FROM t1, t2 UNION JOIN Dadas dos tablas, se construye una tabla que tiene cada columna y cada fila de ambas tablas. SELECT * FROM t1 UNION JOIN t2 Dadas las tablas R(a, b) y S(x, y, z), el resultado del UNION JOIN es: a | b | x | y | z ... ... NULL NULL NULL ... ... ... NULL NULL NULL NULL NULL ... ... ... ... NULL NULL ... ... ...

Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

9

Ampliaci´ on de SQL – Join

(v)

M´ ultiples joins El orden de ejecuci´ on es de izquierda a derecha (asociativos a la izquierda). Equivalencias: SELECT expresion, ... FROM t1 JOIN t2 ON condici´ on_join1 JOIN t3 ON condici´ on_join2 ... WHERE predicado

SELECT expresion, ... FROM (t1 JOIN t2 ON condici´ on_join1) JOIN t3 ON condici´ on_join2 ... WHERE predicado

Modificaci´ on del orden: SELECT expresion, ... FROM t1 JOIN (t2 JOIN tb3 ON condici´ on_join2) ON condici´ on_join1 ... WHERE predicado

Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

10

Ampliaci´ on de SQL – Otros elementos Subconsultas de fila Se trata de subconsultas que devuelven m´ as de una columna. Permite realizar operaciones de comparaci´ on simult´ aneamente sobre cada columna que aparece en su resultado. Sintaxis: SELECT expresi´ ona , ... FROM tabla1 , ... WHERE (expresi´ onp1 , ..., expresi´ onpn ) operador (SELECT expresi´ ons1 , ..., expresi´ onsn FROM ... WHERE ...) Operadores v´ alidos: comparaci´ on, IN, = SOME, >ALL, ... Operadores v´ alidos en Oracle 9.2: IN, = SOME, = ALL (para subconsultas de fila!) Ejemplo: SELECT * FROM articulo WHERE (cd_articulo, precio_min) IN (SELECT cd_articulo, precio FROM ventas)

Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

11

Ampliaci´ on de SQL – Otros elementos

(ii)

Expresi´ on de consulta Se denomina expresi´ on de consulta, vista en l´ınea o tabla derivada a la utilizaci´ on de una consulta en las cl´ ausulas SELECT o FROM de otra. Sintaxis: SELECT expresi´ on, ..., (SELECT ...) FROM t1, ... ...

SELECT expresi´ on, ... FROM t1, (SELECT ...) ...

• No debe confundirse con la denominaci´ on tradicional de subconsulta. • Permite que en el resultado de una consulta aparezcan datos correspondientes a elementos diferentes. • Si aparece en la cl´ ausula SELEC s´ olo puede ser un SELECT escalar. • Su potencialidad est´ a en que aparezca en la cl´ ausula FROM. • Las expresiones de consulta dentro de un FROM deben ser autosuficientes. Ejemplos: SELECT empno, ename, sal, (SELECT MAX(sal) FROM emp) - sal FROM emp

SELECT empno, ename, sal, max_sal, min_sal, max_sal - sal, sal - min_sal FROM emp, (SELECT MAX(sal) max_sal, MIN(sal) min_sal FROM emp) WHERE sal > max_sal / 2 Ampliaci´ on de SQL – Luis Glez. Ares – [email protected]

12

Ampliaci´ on de SQL – Expresiones condicionales Expresi´ on CASE En SQL pueden incluirse expresiones condicionales, o sea, que su valor dependa de que se cumplan unas condiciones, mediante la expresi´ on CASE. Sintaxis: CASE WHEN condici´ on1 THEN expresi´ on1 ... WHEN condici´ onn THEN expresi´ onn [ELSE expresi´ onm ] END Si se produce la condici´ on condici´ oni el resultado ser´ a la expresi´ on expresi´ oni , con i = 1, . . . , n; en otro caso ser´ a expresi´ onm . Todas las expresiones deben tener el mismo tipo de datos. Puede aparecer donde lo pueda hacer una expresi´ on. SELECT empno, ename, sal, CASE WHEN sal > 1000 AND sal 1500 AND sal

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.