Está en la página 1de 34

Tema 3: Dinámica Relacional

3.1. Introducción a la dinámica del Modelo Relacional

3.2. Álgebra Relacional

- AR Básica: unarios, binarios comp. y combinación

- AR Extendida: agrupación, división y comb. externa

- AR Completo: asignación y modificación

3.3. Subconjunto LMD del SQL (Dinámica)

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 1


Tema 3.1: Dinámica del M. Relacional

• Se entiende una relación como un conjunto (de tuplas sin repetición)


• Una BD es una colección de esos conjuntos (más alguna restricción).
Las operaciones sobre la BD alteran las relaciones en el tiempo ó
producen nuevos estados en la BD.
O(BDi) = BDj * la base de datos cambia, se dinamiza

• Para obrar esos cambios, es necesario intervenir a través de un lenguaje


Los lenguajes relacionales son de especificación. Se distinguen dos tipos:
- Algebraicos o procedimentales: los cambios se describen
mediante las operaciones que sufre la BD  álgebra relacional
- Predicativos o no-procedimentales: se describe el estado final de la
BD deseado, sin especificar cómo alcanzarlo  cálculo relacional

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 2


Tema 3.2: Algebra relacional básica

Describiendo el camino: el Álgebra Relacional


• Es un lenguaje formal de manipulación para diseñar consultas.
• Fue definida por Codd (1971) para los modelos relacionales.
Inicialmente definió 5 operaciones básicas y 3 derivadas
• Su estudio sirve para ilustrar las operaciones básicas requeridas
en cualquier LMD y como estándar para comparar lenguajes
relacionales (mide su potencia operacional)
• Los operandos en cualquier operación algebraica-relacional son
relaciones, y el resultado es siempre una relación.
• Los operadores pueden clasificarse siguiendo varios criterios:
primitivos y derivados; unarios, binarios, y binarios compatibles;
básicos, extendidos, y otros operadores.
© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 3
Tema 3.2: Álgebra. Operadores Unarios (I)

Selección: escogemos las tuplas que cumplan una condición


Notación: σpredicado (Relación)
Libros escritos por Dumas

Libros autor=‘Dumas’ (Libros)


Signat. Título Autor
Dum-1 Los Tres Mosqueteros Dumas Signat. Título Autor
Per-1 El Capitán Alatriste P-Reverte Dum-1 Los Tres Mosqueteros Dumas
Asi-1 El Fin de la Eternidad Asimov Dum-2 El Conde de Montecristo Dumas
Dum-2 El Conde de Montecristo Dumas
(se escogen filas)

¿Y los libros escritos por Dumas o Pérez-Reverte?

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 4


Tema 3.2: Álgebra. Operadores Unarios (II)

Proyección: subconjunto del esquema relación


Notación: atrib1, atrb2.. (Relación)
título,autor (Libros)
Libros Título Autor
Signat. Título Autor Los Tres Mosqueteros Dumas
Dum-1 Los Tres Mosqueteros Dumas El Capitán Alatriste P-Reverte

Per-1 El Capitán Alatriste P-Reverte El Fin de la Eternidad Asimov


Asi-1 El Fin de la Eternidad Asimov El Conde de Montecristo Dumas
Dum-2 El Conde de Montecristo Dumas
(se escogen columnas)
Si la proyección fuera por autor ¿cuántas tuplas tendría la nueva relación?

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 5


Tema 3.2: Álgebra. Definición de relación
Renombrado: 
Renombrado: asigna el resultado de una expresión a un símbolo
(vista o relación temporal con existencia limitada a la consulta definida)*.
Notación: símbolo (Expresión), o también S  Expresión

Sea Q el conjunto de los títulos de los libros escritos por Dumas

A (autor=‘Dumas’ (Libros) ) A  autor=‘Dumas’ (Libros)

Q (título A) Q  título A

*: para tablas temporales de mayor persistencia (sesión) se usa la asignación 


© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 6
Tema 3.2: Operadores Binarios Compatibles

Para poder aplicar los operadores de conjuntos Unión, Intersección y


Diferencia, las relaciones deben ser compatibles.
Dos relaciones son compatibles si tienen el mismo número de atributos
y el atributo i-ésimo del primer operando está definido sobre el mismo
dominio que el atributo i-ésimo del segundo operando.
En general, el esquema de relación de dos relaciones no coincide pero
puede aplicarse la operación de proyección para igualar estos
esquemas

AVENTURAS (Signat, Título, Autor, Tipo)  (AVENTURAS)


Signat, Título,
Autor

NOVELAS (Signat, Título, Autor)

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 7


Tema 3.2: Álgebra Relacional. Operador UNIÓN

Unión: todas las tuplas de ambas relaciones (compatibles),


eliminándose todas las tuplas repetidas

Aventuras
Signat. Título Autor Aventuras  Novelas
Dum-1 Los Tres Mosqueteros Dumas Signat. Título Autor
Per-1 El Capitán Alatriste P-Reverte
Dum-1 Los Tres Mosqueteros Dumas
Dum-2 El Conde de Montecristo Dumas
Per-1 El Capitán Alatriste P-Reverte
Novelas
Asi-1 El Fin de la Eternidad Asimov
Signat. Título Autor
Ner-1 Veinte poemas de amor Neruda Dum-2 El Conde de Montecristo Dumas
Asi-1 El Fin de la Eternidad Asimov Ner-1 Veinte poemas de amor Neruda

Libros de aventuras o novelas

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 8


Tema 3.2: Álgebra Relacional. INTERSECCIÓN

Intersección: todas las tuplas que estén en ambas (compatibles)

Aventuras
Signat. Título Autor
Dum-1 Los Tres Mosqueteros Dumas
Per-1 El Capitán Alatriste P-Reverte Aventuras  Novelas
Dum-2 El Conde de Montecristo Dumas Signat. Título Autor
Novelas Per-1 El Capitán Alatriste P-Reverte
Signat. Título Autor
Ner-1 Veinte poemas de amor Neruda
Per-1 El Capitán Alatriste P-Reverte Novelas de aventuras

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 9


Tema 3.2: Álgebra Relacional. DIFERENCIA

Diferencia: tuplas que aparecen en la primera y no en la otra


(compatibles)

Aventuras
Signat. Título Autor
Dum-1 Los Tres Mosqueteros Dumas Aventuras - Novelas
Per-1 El Capitán Alatriste P-Reverte
Signat. Título Autor
Dum-2 El Conde de Montecristo Dumas
Dum-1 Los Tres Mosqueteros Dumas
Novelas
Dum-2 El Conde de Montecristo Dumas
Signat. Título Autor
Ner-1 Veinte poemas de amor Neruda
Per-1 El Capitán Alatriste P-Reverte

Libros de aventuras que no se consideran novelas

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 10


Tema 3.2: Álgebra Relacional. PRODUCTO

Producto cartesiano: tuplas de ambas en todas las combinaciones

Comidas
Especialidad Región Comidas x Vinos
Gazpacho Andalucía Especialidad Región Denominación
Cocido Castilla Gazpacho Andalucía Rioja
Pote Galicia Gazpacho Andalucía Rueda
Vinos Cocido Castilla Rioja
Denominación Cocido Castilla Rueda
Rioja Pote Galicia Rioja
Rueda Pote Galicia Rueda

Carta de comidas con los distintos vinos que se ofrecen

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 11


Tema 3.2: Álgebra Relacional. COMBINACIÓN

Combinación (simple join or inner join): tuplas del producto


cartesiano que cumplen una expresión condicional genérica.
La condición lleva operadores de comparación (=, >, <..)

¿Qué películas pueden ver los clientes del cine?

Clientes
Nombre Edad Clientes  Edad  Calificación Películas
Fulano 29 Nombre Edad Título Calificación
Mengano 18 Fulano 29 Matrix 18
Zutano 9 Fulano 29 Sólo tu 0
Mengano 18 Matrix 18
Películas
Mengano 18 Sólo tu 0
Título Calificación
Zutano 9 Sólo tu 0
Matrix 18
Sólo tu 0

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 12


Tema 3.2: Álgebra Relacional. COMBINACIÓN
Combinación Natural (equijoin): Caso particular del operador
combinación donde la comparación es de igualdad. Notación: * ó
Empleados Nombre de los empleados que son dueños de algún coche
Nombre DNI
Fulano 569064 Empleados dueño Coches  nombre (Empleados  dueño Coches)
Mengano 434848
Zutano 383090 Nombre DNI Marca Nombre
Fulano 569064 Seat Ibiza Fulano
Coches Zutano 383090 Ford Escort Zutano
Marca Dueño
Ford Escort 383090 • observar que se elimina
la columna repetida
Seat Ibiza 569064

Notaciones:
• sin subíndice: (a) equijoin por todos los atributos con el mismo nombre (int. SQL);
(b) equijoin por clave ajena (usar sólo cuando no hay confusión posible).
• con etiquetas: (a) equijoin por subconjunto de atributos con el mismo nombre (SQL);
(b) equijoin por la clave ajena definida (usar sólo cuando no hay confusión posible).
• con expresión condicional: equijoin por la condición explícita (SQL)
© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 13
Tema 3.2: Álgebra Relacional Básica

Operadores Primarios y Operadores Derivados


• Algunos operadores del álgebra relacional pueden ser sustituidos
por una secuencia de otras operaciones algebraicas.
• Aquellos se dirá que son operadores derivados.
• Por otro lado, operadores primitivos son los que no pueden ser
obtenidos por ninguna secuencia de otros operadores primitivos
Primitivos Derivados
•Selección • Intersección A - (A-B)
•Proyección • Combinación … (AxB)
•Producto Cartesiano • Combinación Natural ... … (AxB)
•Diferencia
•Unión

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 14


Tema 3.2: Solución Válida ≠ Solución Adecuada

El renombrado es como utilizar vistas temporales, es decir,


workspaces temporales constantes auxiliares que facilitan la
consulta principal. Así, mediante el renombrado, se puede
aplicar la máxima de computación acuñada por Julio César:
'Divide y Vencerás'. Las consultas anidadas son costosas, y
frecuentemente pueden ser evitadas gracias al renombrado.

La combinación (join) se deriva de dos operadores


primitivos (), pero al combinar se realizan al
mismo tiempo. Imagina que tienes 100 lectores y 20
libros calificados por edades, y necesitas listar todas las
combinaciones posibles (200). ¿Tú escribirías las 2000
posibles y luego tacharías las 1800 incorrectas?
¿O sólo escribirías directamente las correctas?

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 15


Tema 3.2: Álgebra Relacional Extendida:
Agrupación.
Agrupación: formación de grupos según un conjunto de
atributos al cual se le aplica una función de agregación.
Notación: proyección selección Ģcriterio(relación)
/* también se admite GROUP BY en vez de Ģ */
Personas
Nombre Edad Nacionalidad
Fulano 29 Español  Count (‘x’) Group by Nacionalidad (Personas)
Mengano 49 Español Nacionalidad Count
John Doe 73 Inglés Español 4
Smith 14 Inglés Inglés 2
Zutano 3 Español
Pelancejo 25 Español

Número de personas por nacionalidad

Funciones de agrupación: Count(), Sum(), Avg(), Min(), Max()

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 16


Tema 3.2: Álgebra Relacional Extendida:
División
División: el cociente lo forman todas las tuplas que concatenadas
con cada tupla del divisor estén contenidas en el dividendo.
Notación:
A  B  esq(A)-esq(B) A – esq(A)-esq(B) (( esq(A)-esq(B) A x B) – A)
Currícula
Candidato Habilidad Candidatos que cumplen el perfil ‘Analista/Des’
Pepe Pérez Lenguaje C Currícula  requisito (perfil=‘Analista/Des’ Puestos)
Pepe Pérez Java
José Gómez Lenguaje C
José Gómez SQL Candidato
José Gómez
Fulano Pi SQL
Fulano Pi Java Fulano Pi
Fulano Pi Lenguaje C
Puestos
Perfil Requisito
Analista/Des Lenguaje C
Analista/Des SQL

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 17


Tema 3.2: Álgebra Relacional.
SEMI-COMBINACIÓN
Semi-Combinación: igual que cualquier combinación, pero sólo
se toman las columnas del operando izquierdo (|*) o derecho (*|).
Notación: left semijoin: |* ó right semijoin: *| ó

Empleados
Nombre DNI Empleados dueño Coches
Fulano 569064 Nombre DNI
Mengano 434848 Fulano 569064 Empleados con coche
Zutano 383090 Zutano 383090

Coches Empleados dueño Coches


Marca Dueño
Ford Escort 383090
Marca Dueño
Ford Escort 383090 Coches de nuestros empleados
Seat Ibiza 569064
Seat Ibiza 569064
Honda Civic 868015

Notaciones: igual que en la combinación natural


Equivalencia:  
© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 18
Tema 3.2: Álgebra Relacional.
ANTI-COMBINACIÓN
Anti-Combinación: igual que la semi combinación, pero las tuplas
que se incluyen son las que no cumplen la condición definida.
Notación: left antijoin: right antijoin:

Empleados
Nombre DNI Empleados dueño Coches
Fulano 569064 Nombre DNI
Mengano 434848 Mengano 434848 Empleados sin coche
Zutano 383090

Coches Empleados dueño Coches


Marca Dueño
Ford Escort 383090
Marca Dueño
Honda Civic 868015 Coches que no son de
Seat Ibiza 569064
nuestros empleados
Honda Civic 868015

Notaciones: igual que en la combinación natural


Equivalencia: A B  A  (A B)

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 19


Tema 3.2: Álgebra Relacional Extendida
Outer Join
Combinación externa: extensión de la combinación, que incluye
las tuplas que no encajan de la relación izquierda/derecha/ambas.
Las columnas que no aplican, adoptan el valor nulo (NULL ó  ).
left outer join: ]* ó right outer join: *[ ó full outer join: ]*[ ó

Empleados Empleados y sus coches, Nombre DNI Marca


Fulano 569064 Seat Ibiza
Nombre DNI en su caso
Zutano 383090 Ford Escort
Fulano 569064 Empleados dueño Coches Mengano 434848 NULL
Mengano 434848
Zutano 383090 Marca Dueño Nombre
Coches con su dueño si es
Ford Escort 383090 Zutano
uno de nuestros empleados.
Coches Seat Ibiza 569064 Fulano
Marca Dueño Empleados dueño Coches Honda Civic 868015 NULL
Ford Escort 383090
Seat Ibiza 569064 Nombre DNI Marca
Honda Civic 868015
Empleados y coches, Fulano 569064 Seat Ibiza
asociados como proceda Zutano 383090 Ford Escort
Mengano 434848 NULL
Empleados dueño Coches NULL 868015 Honda Civic
© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 20
Tema 3.2: Álgebra Relacional Extendida.
Conjuntos Ordenados
Orden: conjunto ordenado (lista) es el resultado de aplicar un orden
(ORDER BYorden ó ┬orden) sobre una relación. Si orden omite la
especificación de orden (sólo explicita atributos) se sobreentiende el
orden ≤ sobre números y el orden lexicográfico sobre caracteres.
Si se opera una lista ordenada se obtiene una relación (sin orden).
Sobre una lista ordenada se pueden aplicar funciones (analíticas) de
agregación: first, last, y rank(value), y la seudocolumna numrow.
Personas
Nombre Edad Nacionalidad  first, last, rank (29) order byedad (Personas)
Fulano 29 Español
Mengano 49 Español
first last rank(29)
John Doe 73 Inglés
3 73 4
Smith 14 Inglés
Zutano 3 Español
Pelancejo 25 Español
• orden inverso: ORDER BYDESC Ó ╤
© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 21
Tema 3.2:Álgebra Rel. para Actualización.
Asignación para la Actualización de tuplas.
Asignación: se utiliza para definir operaciones de actualización
sobre la base de datos. La notación del operador es 
Ejemplos (actualización de relaciones):

Personas  Personas – (nombre=‘José’ (Personas) )

Personas  

Personas  Personas  {(‘Fulano’, ‘Pérez’, ‘Mengánez’ )}

Personas  Personas  (nombre, apellido1,apellido2 (Clientes) )

Personas  ’Juan’,apellido1,apellido2 nombre=‘John’(Personas)  nombre!=‘John’(Personas)


Notación alternativa (update): nombre←’Juan’(nombre=‘John’(Personas))

Creación de tablas temporales: temp  Personas


© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 22
Tema 3.3: Dinámica del SQL: DML
Las instrucciones SQL3 de manipulación pueden operar de tres modos:
1. Interactivo (proporcionando instrucciones SQL directamente).
2. SQL embebido: instrucciones imbuidas en lenguaje anfitrión (C, JAVA,…).
3. Módulos: llamadas explícitas a procedimientos desde procesos externos.

• Inserción de tuplas (INSERT)


Operaciones de
• Borrado de tuplas (DELETE)
Actualización
• Modificación de tuplas (UPDATE)

Operaciones de • Consulta o Query (SELECT)


Recuperación
© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 23
Tema 3.3: Lenguaje de control: LCD
Gestión transaccional en PL/SQL

• Transacción: conjunto de instrucciones de actualización que deben


ser llevadas a cabo de modo atómico (como conjunto, “o todo o nada”)

• Instrucciones: COMMIT (realizar) y ROLLBACK (deshacer)

- COMMIT [WORK]
- ROLLBACK [WORK] [TO [SAVEPOINT] <savepoint>]
- SAVEPOINT <savepoint>

COMMIT
Instancia
Segmento Cliente

BD
(usuario)
privado de (aplicación)
ROLLBACK (batch)
ROLLBACK

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 24


Tema 3.3: sintaxis de la QUERY
[WITH
<símbolo> AS <subquery>
[, <símbolo> AS <subquery> … ] ]

SELECT [ALL|DISTINCT] <lista de selección>

FROM <cláusula de origen>

[WHERE <condición> ]

[GROUP BY <expresión> [HAVING <condcn>]]

[{UNION|UNION ALL|MINUS|INTERSECT} <query>]

[ORDER BY <expresión> [ASC|DESC]] ;

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 25


Tema 3.3: traducción Álgebra Rel.  SQL
[WITH 
<símbolo> AS <subquery>
[, <símbolo> AS <subquery> … ] ]

SELECT [ALL|DISTINCT] <lista de selección>

FROM <cláusula de origen>  


[WHERE <condición> ]
right  left

[GROUP BY <expresión> [HAVING <condcn>]]

[{UNION|UNION ALL|MINUS|INTERSECT} <query>]

[ORDER BY <expresión> [ASC|DESC]] ;



© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 26
Tema 3.3: Orden de ejecución
[WITH
<símbolo> AS <subquery>
1
[, <símbolo> AS <subquery> … ] ]

SELECT [ALL|DISTINCT] <lista de selección> 7

2 FROM <cláusula de origen>

3 [WHERE <condición> ]

4 [GROUP BY <expresión> [HAVING <condcn>]]

5 [{UNION|UNION ALL|MINUS|INTERSECT} <query>]

6 [ORDER BY <expresión> [ASC|DESC]];

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 27


Tema 3.3: la proyección en la query
 la proyección se refleja en la <lista de selección>
Lista de datos (del workspace) separados por comas.

• Puede ser todo el área de trabajo (*) o bien incluir:


• atributos del esquema de relación del área de trabajo
• pseudo-columnas, como ROWNUM y table.ROWID,...
• constantes (como 1 o 'X') y variables ligadas (:NEW, …)
• funciones: aplicadas sobre lo anterior (o nularias)
− aritméticas (+, -, …), strings (||, SUBSTR, …), codificación (CASE,
NVL, …), conversión (TO_CHAR, …), sistema (SYSDATE, USER, …), …

− de agregación (reciben un colectivo y devuelven un solo valor)


− funciones compiladas (de usuario o procedentes de paquetes)

• Admite renombrado (alias): … elemento [AS] alias …


© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 28
Tema 3.3: el área de trabajo (workspace)

 es una tabla temporal (vinculada a la ubicación de los datos)

• La cláusula FROM define el área de trabajo (que es una tabla)


• Puede componerse de una tabla, o varias tablas combinadas.
• Dado que el área de trabajo es una tabla, un caso particular de tabla en la
clausula FROM es otro área de trabajo, es decir, otra consulta (subquery).

• Admite renombrado (obligatorio en self-joins): … tabla alias …


• Existen diversas combinaciones:

• Combinación Elemental: el Producto Cartesiano

... FROM Gente CROSS JOIN Clientes…  FROM Gente, Clientes…

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 29


Tema 3.3: el área de trabajo
 Consultas: clausula FROM y combinación natural
• Combinación General JOIN: todas las columnas de ambas tablas
... FROM people [INNER] JOIN clients
[ ON (<col_a>=<col_b> [AND...] )]
- sin especificación: equijoin por todos los pares de columnas que reciben el
mismo nombre en ambas tablas.
- con cláusula ON: solo las tuplas que cumplan la expresión (de =, !=, <, >, …).

• Combinación Natural: no duplica las columnas incluidas en la igualdad

... FROM X NATURAL [INNER] JOIN Y...


Combinación Natural por pares de columnas que se llamen igual en ambas tablas

... FROM X [INNER] JOIN Y USING (<columns>)...


Combinación Natural por pares de columnas especificados (que se llaman igual…)

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 30


Tema 3.3: el área de trabajo
 Consultas: otras combinaciones
• Combinación sin pérdidas, Combinación Externa (outer):
...FROM Gente {LEFT|RIGHT|FULL} [OUTER] JOIN Clientes
[USING <columnas> | ON <col_a>=<col_b> [AND...]]
 Mismo uso que la (inner) JOIN; 'outer' es opcional (recomendable por claridad)

• ... FROM X LEFT OUTER JOIN Y...


Combinación Externa por la izquierda (se respetan todas las tuplas de la primera tabla)
• ... FROM X RIGHT JOIN Y...
Combinación Externa por la derecha (se respetan todas las tuplas de la segunda tabla)
• ... FROM X FULL OUTER JOIN Y...
Combinación Externa completa (se respetan todas las tuplas de ambas tablas)

• Combinación por una Unión:


... FROM Gente UNION JOIN Clientes…
• Observación: ambos esquemas deben ser compatibles

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 31


Tema 3.3: la selección de tuplas
 la expresión condicional (WHERE) puede ser…
• una comparación de expresiones (=, !=, <, >, <=, >=)
- los operandos pueden ser valores, expresiones, o incluso una subquery (!)
• comprobación de inclusion test (en un rango):
<expresión> [NOT] BETWEEN <expresión> AND <expresión>
• comprobación de valor nulo: <expresión> IS [NOT] NULL
• test de semejanza (patrón): <expresión_char> [NOT] LIKE <patrón>
• expresión lógica: {NOT, AND, OR} a partir de otras expresiones condicionales
• test de existencia: EXISTS subquery
• test de inclusión (en un conjunto dado, o en una subquery):
<expresión> [NOT] IN {<expresión_list>|subquery}

SUBQUERIES en la cláusula WHERE: pueden ser ineficientes


- EXISTS se detiene en el primer encaje, pero se ejecuta anidado siempre.
- IN puede optimizarse (no ejecutar anidado); conviene moverlo a la cl. WITH
- NOT IN puede usarse en anti-combinaciones (si se hace de modo eficiente)
© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 32
Tema 3.3: Agrupación y Orden
• La cláusula GROUP BY define el criterio de agrupación
• El área de trabajo agrupada sólo tiene, a priori,
las columnas incluidas en el criterio de agrupación.
• Se le pueden añadir columnas aplicando funciones de agregación
sobre las columnas excluidas del criterio de agrupación.
• Las funciones de agregación predefinidas son:
COUNT, AVG, SUM, MIN, MAX, FIRST, y LAST
• Existen otras: MEDIAN, VARIANCE, STDDEV, CORR, COVAR, etc.
• La clausula WHERE se ejecuta antes de agrupar; si se desea realizar una
selección del área de trabajo ya agrupada, se usa la clausula HAVING
• La clausula ORDER BY define el criterio de ordenación (asc / desc)

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 33


Tema 3.3: Agrupación y Orden: Ejemplos
Curso Nombre Apellido ptos. Edad
SELECT curso, count('x'),
2º Fulano Pérez 113 32
avg(edad), sum(ptos)
1º Mengana Gómez 47 19
FROM Gente
1º Zutano Smith 89 44 GROUP BY curso;
2º Peranceja García 45 10
1º John Doe 67 78 Curso count AVG(edad) SUM(ptos)
2º 2 21 158
SELECT * FROM Gente ORDER BY apellido; 1º 3 47 203

Curso Nombre Apellido DNI Edad


1º John Doe 6789 78 ¡
2º Peranceja García 2345 10 workspace
1º Mengana Gómez 4567 19 NUEVO
2º Fulano Pérez 0123 32 !
1º Zutano Smith 8901 45

© 2021 JCalle FFBBDD – Tema 3: Dinámica Relacional 3M - 34

También podría gustarte