Professional Documents
Culture Documents
1. Sintaxis
2. Consultas Sencillas
2.1 Lista de Seleccin
2.2 Clasula WHERE
3. Consultas Avanzadas
3.1 START WITH ... CONNECT BY
3.2 GROUP BY ... HAVING
4. Operaciones de Conjuntos
5. Clasulas Varias
6. Reuniones
7. Subconsultas
Vctor
BASES DE DATOS
CURSO 2005/2006
1. SINTAXIS
SELECT [DISTINCT|ALL]
{* |{ [esquema.]{tabla | vista}.*| expresin [alias_c] }
[, {[esquema.]{tabla | vista}.*| expresin [alias_c] }
FROM
[esquema.]{tabla | vista} [alias_t]
[, [esquema.]{tabla | vista} [alias_t] ]
[WHERE condicin]
[ [START WITH condicin] CONNECT BY condicion]
[GROUP BY expresin [, expresin] [HAVING condicin] ]
[ {UNION | UNION ALL | INTERSECT | MINUS} orden SELECT ]
[ORDER BY {expresin | posicin} [ASC | DESC]
[, {expresin | posicin} [ASC | DESC] ] ]
[FOR UPDATE [OF [ [esquema.]{tabla | vista}.]columna
[, [ [esquema.]{tabla | vista}.]columna ] [NOWAIT] ]
Vctor
BASES DE DATOS
CURSO 2005/2006
2. CONSULTAS SENCILLAS
2.1 Lista de Seleccin
Lista de seleccin
ALL | DISTINCT
Expresiones
Funciones
Vctor
BASES DE DATOS
CURSO 2005/2006
2. CONSULTAS SENCILLAS
2.1 Lista de Seleccin
* : devuelve todas las columnas de una tabla|vista.
{tabla|vista}.*
*
Vctor
BASES DE DATOS
CURSO 2005/2006
2. CONSULTAS SENCILLAS
2.1 Lista de Seleccin
Las EXPRESIONES suelen incluir referencias a
las tablas|vistas que aparecen en la clasula
FROM, pero tambin se pueden usar funciones.
Vctor
CURSO 2005/2006
2. CONSULTAS SENCILLAS
2.1 Lista de Seleccin
Los ALIAS permiten asignar un nombre
alternativo a una tabla, vista o expresin dentro
de una consulta.
Vctor
BASES DE DATOS
CURSO 2005/2006
2. CONSULTAS SENCILLAS
2.2 La clasula WHERE
Vctor
SELECT *
FROM facturas f, clientes c
WHERE f.codc=c.codc
BASES DE DATOS
CURSO 2005/2006
2. CONSULTAS SENCILLAS
2.2 La clasula WHERE
Se pueden incluir los siguientes operadores:
Vctor
Artimticos: +, -, *, /
Concatenacion: ||
Relacionales: =, !=, <, >, <=, >=
Lgicos: AND, OR, NOT
Varios: IN, IS [NOT] NULL, LIKE patrn, %, _
BASES DE DATOS
CURSO 2005/2006
2. CONSULTAS SENCILLAS
2.2 La clasula WHERE
Ejemplos:
Vctor
BASES DE DATOS
CURSO 2005/2006
3. CONSULTAS AVANZADAS
3.1 START WITH ... CONNECT BY
Devuelve las filas segn una ordenacin
jerrquica (se ver en la prctica 4).
Columnas de
agrupamiento
BASES DE DATOS
CURSO 2005/2006
10
3. CONSULTAS AVANZADAS
3.2 GROUP BY ... HAVING
Constantes
Funciones de grupo
Expresiones idnticas a las del GROUP BY
Expresiones que usan las expresiones anteriores y obtienen una sola fila
por grupo
NO se pueden especificar columnas en la lista de select que no estn en
las columnas de agrupamiento!
Las columnas que no aparecen en las columnas de agrupamiento slo
pueden aparecer como parmentros de funciones agregadas.
Vctor
BASES DE DATOS
11
CURSO 2005/2006
3. CONSULTAS AVANZADAS
3.2 GROUP BY ... HAVING
Ejemplos
Vctor
12
3. CONSULTAS AVANZADAS
3.2 GROUP BY ... HAVING
... HAVING
Vctor
SELECT c.codc
FROM facturas f, clientes c
WHERE c.codc=f.codc
GROUP BY c.codc HAVING (SUM(f.precio)>5000)
BASES DE DATOS
13
CURSO 2005/2006
3. CONSULTAS AVANZADAS
3.2 GROUP BY ... HAVING
Vctor
14
4. OPERACIONES DE
CONJUNTOS
4.1 Operaciones de Conjuntos
Combinan las filas devueltas por dos o ms
rdenes SELECT utilizando operaciones de
conjuntos.
El nmero de columnas y el tipo de datos de cada
una de ellas debe ser el mismo en todas las
sentencias SELECT combinadas.
SELECT 1
.............
.............
.............
Vctor
UNION
UNION ALL
INTERSECT
MINUS
SELECT 2
.............
.............
.............
BASES DE DATOS
15
CURSO 2005/2006
4. OPERACIONES DE
CONJUNTOS
4.2 UNION
Vctor
BASES DE DATOS
CURSO 2005/2006
16
4. OPERACIONES DE
CONJUNTOS
4.3 UNION ALL
Devuelve la unin de las filas devueltas por cada
consulta, pero con duplicados.
Ejemplo:
Vctor
BASES DE DATOS
17
CURSO 2005/2006
4. OPERACIONES DE
CONJUNTOS
4.4 INTERSECT
Devuelve las filas comunes a las consultas
implicadas.
Ejemplo:
Vctor
BASES DE DATOS
CURSO 2005/2006
18
4. OPERACIONES DE
CONJUNTOS
4.5 MINUS
Devuelve las filas que ha devuelto la primera
consulta, pero que no ha devuelto la segunda.
Ejemplo:
Vctor
BASES DE DATOS
19
CURSO 2005/2006
5. CLASULAS VARIAS
5.1 ORDER BY {expresin | posicin} [ASC | DESC]
Vctor
BASES DE DATOS
CURSO 2005/2006
20
5. CLASULAS VARIAS
5.2 FOR UPDATE
Bloquea las filas/columnas especificadas en la
clasula FOR UPDATE hasta que se termine la
transaccin.
Si las filas que se desea bloquear ya estn
bloqueadas por otro usuario, la consulta quedar a
la espera de que el otro usuario las libere.
Vctor
21
CURSO 2005/2006
6. REUNIONES
6.1 REUNIONES (JOINS)
Una orden SELECT contiene una reunin cuando
se combinan filas de dos o ms tablas.
A travs de la clasula WHERE se determina
cmo se combinan las filas de las tablas.
Tipos de reuniones:
Vctor
22
6. REUNIONES
6.2 EQUI REUNIN
Es el tipo de reunin ms comn.
Devuelve filas de dos o ms tablas|vistas de
acuerdo a una condicin de igualdad.
Ejemplo:
Vctor
BASES DE DATOS
23
CURSO 2005/2006
6. REUNIONES
6.3 PRODUCTO CARTESIANO
Ocurre al reunir tablas|vistas sin utilizar ninguna
condicin en la clasula WHERE.
Realiza el producto cartesiano de todas las
tablas|vistas que aparecen en la clasula FROM.
MUY INEFICIENTE!! 100x100 = 10.000 filas
Ejemplo:
Vctor
24
6. REUNIONES
6.4 REUNIN EXTERNA (OUTER JOIN)
Vctor
BASES DE DATOS
25
CURSO 2005/2006
6. REUNIONES
6.4 REUNIN EXTERNA (OUTER JOIN)
Ejemplo:
Vctor
coda
P1
NULL
P2
A2
P3
A7
BASES DE DATOS
CURSO 2005/2006
26
7. SUBCONSULTAS
7.1 SUBCONSULTAS ANIDADAS
Una consulta dentro de otra orden SQL (no
necesariamente un SELECT).
Ejemplo:
Vctor
BASES DE DATOS
27
CURSO 2005/2006
7. SUBCONSULTAS
7.1 SUBCONSULTAS ANIDADAS
Vctor
CREATE TABLE/VIEW
INSERT
UPDATE
WHERE
HAVING
START WITH
BASES DE DATOS
CURSO 2005/2006
28
7. SUBCONSULTAS
7.1 SUBCONSULTAS CORRELACIONADAS
Son subconsultas que se evalan una vez para
cada fila de la consulta padre.
Ejemplo:
SELECT c.codc
FROM clientes c
WHERE 5000 < (SELECT SUM(f.precio)
FROM facturas f
WHERE c.codc = f.codc
GROUP BY f.codc)
Vctor
BASES DE DATOS
29
CURSO 2005/2006
7. SUBCONSULTAS
7.1 SUBCONSULTAS CORRELACIONADAS
Ejemplo:
UPDATE tabla1
SET columna = (SELECT ... )
Vctor
BASES DE DATOS
CURSO 2005/2006
30