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
Referencias: Silberschatz 4ª Ed. pp 87-118
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 Operadores lógicos AND,OR, NOT
o Operadores de comparación: >,<,=,>=,<=, <>
7
Estructura básica
o Operador comparación between y not between
o Cláusula from
o Realiza el producto cartesiano de las relaciones
8
Estructura básica
o Operación renombramiento
o Cláusula as tanto en Select como en from
o Definición de variables tupla (opcional el as):
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%’, ‘_ _ _’, ‘_ _ _ %’
o Carácter de escape: palabra escape
o Not like, similar to, concatenación de caracteres (||)
10
Estructura básica
o Ordenación de tuplas
o Ordenación tuplas resultantes: order by
– Asc, indica ascendente (defecto)
– Desc, indica descendente
o Ordenar por varios atributos
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
o Elimina duplicados por defecto. Union all los conserva
12
Operaciones sobre conjuntos
o Operación intersección
o Elimina duplicados por defecto. Con all se mantienen
o Operación diferencia
o Elimina duplicados automáticamente. Con all se mantienen
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
o Se pueden aplicar a un grupo de conjuntos de tuplas: group by
14
Funciones agregadas
o Si se desea eliminar los duplicados antes de efectuar la agregación
distinct
o Condiciones a cada uno de los grupos having
o Contar tuplas de una relación count(*). No permite distinct
15
Funciones agregadas
o Ejemplo:
o Las funciones agregadas no se pueden componer: max( avg (…)) no está
permitido
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)
o Expresión aritmética que contenga null null
o Comparaciones que contengan null null (desconocido)
– Null no es igual a null, ni distinto de null.
o Con operadores lógicos:
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
o Sobre conjuntos enumerados
20
Subconsultas anidadas
o Operaciones de comparación
o Utilizar some (al menos). Antiguamente ANY
o Se puede usar con: <, <=,>,>=,<>
21
Subconsultas anidadas
o Para comparar con todas las tuplas: all
o Se puede usar con: <, <=,>,>=,<>
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
o Not unique si hay 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 Se define con create view
o Ejemplo:
25
Vistas
o Se pueden redefinir los nombres de los atributos
o Después se utiliza como cualquier otra relación:
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
o Se puede especificar el orden de los atributos
30
Modificación de la base de datos
o Se pueden insertar tuplas provenientes de una consulta
o Importante finalice la sentencia select antes de insertar
o Se pueden insertar valores nulos: null
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
o Pueden producir problemas si la vista no contiene la kp de la tabla
original
o Muchas bases de datos imponen:
o En general insert, update y delete estan prohibidos en 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 una transacción comienza implícitamente cuando se ejecuta una
instrucción implícitamente:
– COMMIT WORK, finaliza la transacción anotando los cambios en la BD
– ROLLBACK WORK, deshace los cambios en la BD
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
o Tipos y condiciones de reunión
o Condición de reunión obligatoria en la externa
o Reunión natural: primero los atributos de reunión + atributos de la
relación izquierda + atributos de relación derecha
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
o Donde Ai es el nombre atributo y Di el dominio
o Restricción de integridad:
– Primary key (A1,A2,…,An), valores no nulos y únicos (Opcional)
– Check (P) , predicado P que debe de satisfacer el atributo de la tupla
– Unique (A1,A2,…,An) , especificar clave candidata. Permite nulos.
40
Lenguaje de definición de datos
o Borrar esquema de tabla drop table
– Borra las tuplas y la relación
o SQL-92 alter table. Permite modificar un esquema de tabla
– Añadir atributo:
– 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
o Necesita extensiones del lenguaje y un preprocesador
o Mejor normas de conexión. Interfaces para programas de
aplicación.
– Norma ODBC (Open Database Conectivity) en C
– Norma JDBC en Java
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
o Puede crear esquemas y borrarlos: create (drop) scheme
o Extensiones procedimentales (SQL-92)
– Crear procedimientos (begin, end)
• Nombre
• Parámetros de entrada
• Conjunto de instrucciones SQL
– Procedimientos almacenados
46