Unidad 3: BBDD Relacionales: BBDD01, Sesión 7: SQL
Unidad 3: BBDD Relacionales: BBDD01, Sesión 7: SQL
1
INDICE
o Introducción
o Estructura básica
o Operaciones sobre conjuntos
o Funciones de agregación
o Valores nulos
o Subconsultas anidadas
o Vistas
o Consultas complejas
o Modificación de la base de datos
o Lenguaje de definición de datos
o Otras características SQL
2
Introducción
o Lenguaje de consulta más cómodo al usuario (no navegable)
o Basado en algebra relacional + cálculo relacional
o Versión original IBM (Sequel dentro de System R)
o Evolucionó Structured Query Language
o Estandarización ANSI e ISO
– Normas 1986: SQL-86
– Normas: SQL 89, SQL 92 y SQL 99
o Componentes:
– DDL – Lenguaje de Definición de Datos
– DML – Lenguaje de Manipulación de Datos
– Vistas
– Transacciones
– SQL incorporado y dinámico
– Integridad
– Autorización.
3
Introducción
o Ejemplos basados en Empresa bancaria:
4
Estructura básica
o Operación estrella:
Select … from … Where …
o Select hacer una consulta
o From tablas en la que se solicita información
o Where selección sobre lo descrito en from
select A1,A2,…., An
from r1,r2,…,rm
where P
o Donde Ai son los atributos, ri las tablas (relaciones) y P condición
o Si se omite where devuelve toda la información.
5
Estructura básica
o Siempre el resultado es una nueva tabla
o Cláusula Select
select nombre-sucursal
from prestamo
o Trabaja con duplicados por defecto eliminarlos es costoso
o Se puede con distinct:
select distinct nombre-sucursal
from prestamo
o Permite usar all indicar que no se eliminan duplicados
select all nombre-sucursal
from prestamo
6
Estructura básica
o * indica todos los atributos
– Select * , indica todos los atributos de todas las relaciones
– Select prestamo.* , indica todos los atributos de la relación prestamo
o Puede haber expresiones aritméticas +,-,*,/
o Cláusula where
o Cláusula from
8
Estructura básica
o Operación renombramiento
o Cláusula as tanto en Select como en from
9
Estructura básica
o Operaciones sobre cadenas
o Cadenas entre comillas simples: ‘Navacerrada’
o Comparación con patrones: like
– %, encaja con cualquier cadena
– _ , encaja con cualquier carácter
– Ejemplo: ‘Nava%’, ‘%cer%’, ‘_ _ _’, ‘_ _ _ %’
10
Estructura básica
o Ordenación de tuplas
o Ordenación tuplas resultantes: order by
– Asc, indica ascendente (defecto)
– Desc, indica descendente
11
Operaciones sobre conjuntos
o SQL-92:
– Intersección intersects
– Unión union
– Diferencia except
o Las relaciones deben de ser compatibles
o Operación unión
12
Operaciones sobre conjuntos
o Operación intersección
13
Funciones agregadas
o Toman una colección de valores de entrada y devuelven uno de salida:
– Media: avg
– Mínimo: min
– Máximo: max
– Suma: sum
– Cuenta: count
o Sum y avg tienen que ser sobre datos numéricos
14
Funciones agregadas
o Si se desea eliminar los duplicados antes de efectuar la agregación
distinct
15
Funciones agregadas
o Ejemplo:
16
Valores nulos
o Modelo relacional permite valores nulos no hay información
o Palabra NULL para buscar esa información (is null/is not null)
17
Valores nulos
o Si el predicado de where es desconocido no añade tupla
o Is unknown ó is not unknown comprobar si el resultado de una
comparación es desconocido ó no
o Operaciones de agregación ignora los valores nulos salvo la función
count(*)
– Si todos son nulos, devuelve 0
– Las demás funciones devuelven vacio
o En SQL-99
– Tipo de dato boolean. Cierto, falso y desconocido
– Funciones de agregación: some, every
18
Subconsultas anidadas
o Es una expresión select-from-where que se anida dentro de otra consulta (detrás
del from, en vez de una tabla va otro select)
o Uso:
– Comprobación de pertenencia a conjuntos
– Comparación de conjuntos
– Cardinalidad de conjuntos
o Pertenencia a conjuntos
o Utiliza cálculo relacional para la pertenencia a conjuntos
o (not) in
19
Subconsultas anidadas
o Se puede usar con más de un atributo
20
Subconsultas anidadas
o Operaciones de comparación
21
Subconsultas anidadas
o Para comparar con todas las tuplas: all
22
Subconsultas anidadas
o Comprobación de relaciones vacías
o Si se devuelven tuplas o no exists (true si no es vacia)
o Not exists
inexistencia
de tuplas
23
Subconsultas anidadas
o Comprobación de tuplas duplicadas
o Unique cierto si no devuelve tuplas duplicadas
24
Vistas
o Es una consulta que se presenta como una tabla (virtual) a partir de un
conjunto de tablas en una base de datos relacional
o Ejemplo:
25
Vistas
o Se pueden redefinir los nombres de los atributos
26
Consultas complejas
o Varios bloques SQL dentro de una consulta:
o Relaciones derivadas
o Subconsulta dentro de la cláusula from
27
Consultas complejas
o Cláusula with
o Introducida en SQL-99. No lo incorporan todos los SGBD
o Define una vista temporal que existe mientras exista la consulta
28
Modificación de la base de datos
o Borrado
o Se expresa como una consulta
o Donde r es una tabla y P el predicado
o Si se omite el predicado se borran todas las tuplas
29
Modificación de la base de datos
o Inserción
o Se inserta o bien la tupla deseada o el resultado de una consulta:
– Debe de respetar el dominio de los atributos
– Y el número de atributos
o Se usa la clausula insert
30
Modificación de la base de datos
o Se pueden insertar tuplas provenientes de una consulta
31
Modificación de la base de datos
o Actualización
o Actualizar algunos campos de las tuplas UPDATE
o Constructor CASE
32
Modificación de la base de datos
o Actualización sobre vistas
33
Modificación de la base de datos - Transacciones
o Una transacción es una unidad de trabajo compuesta por diversas tareas, cuyo
resultado final debe ser que se ejecuten todas o ninguna de ellas.
– Ej: trasfiere 500€ de la cuenta 300 a la 301
– O está hecha del todo, o no hecha en absoluto
o Propiedades ACID
– Una transacción, para cumplir con su propósito y protegernos de todos los problemas
que hemos visto, debe presentar las siguientes características:
• Atomicidad: las operaciones que componen una transacción deben considerarse como una sola.
• Consistencia: una operación nunca deberá dejar datos inconsistentes.
• Aislamiento: los datos "sucios" deben estar aislados, y evitar que los usuarios utilicen información que
aún no está confirmada o validada. (por ejemplo: ¿sigue siendo válido el saldo mientras realizo la
operación?)
• Durabilidad: una vez completada la transacción los datos actualizados ya serán permanentes y
confirmados.
o A estas propiedades se las suele conocer como propiedades ACID (de sus siglas en
inglés: Atomicity, Consistency, Isolation y Durability).
34
Modificación de la base de datos - Transacciones
o SQL-99.
– Cada instrucción SQL es una transacción implícitamente.
– Se especifica una transacción con BEGIN, END
35
Reunión de Relaciones
o Reunión interna
o Reunión externa
36
Reunión de Relaciones
o Reunión natural
37
Reunión de Relaciones
o SQL-92 otros 2 tipos de reunión:
– Cross join reunión cruzada (sin condición de reunión)
– Union join reunión de unión (reunión externa completa con condición falsa)
38
Lenguaje de definición de datos
o El LDD permite especificar:
– Esquema de cada relación
– El dominio de valores asociado a cada atributo
– Restricciones de integridad
– Índices asociados a cada relación
– Información de seguridad y autorización
– Estructura de almacenamiento físico en disco.
o Tipos de dominio base
– Char(n), varchar(n),text
– int, integer, smallint, float, real, double precission,numeric(p,d)
– Date, time, timestamp, función extract(campo from d), interval
– Valor null , pertenece a todos los dominios base
– Se puede especificar que un dominio es not null
39
Lenguaje de definición de datos
o Definición de esquemas
o Orden create table
40
Lenguaje de definición de datos
o Borrar esquema de tabla drop table
– Eliminar atributo:
41
Otras características
o SQL incorporado
o Utilización de SQL dentro de lenguaje de programación: C, java, fortran,
pascal, etc. (lenguaje anfitrión)
o Las estructuras que se incluye y permiten
SQL incorporado
o Se necesita un preprocesador
– Java (SQLJ):
42
Otras características
o SQL dinámico
o Permite construir y ejecutar consultas en tiempo de ejecución
43
Otras características
o ODBC
44
Otras características
o JDBC
45
Otras características
o Bases de datos formados por:
– Catálogos
– Esquemas
– Objetos: relaciones, vistas
o Cada usuario tiene un catálogo asignado
46