0% encontró este documento útil (0 votos)
13 vistas46 páginas

Unidad 3: BBDD Relacionales: BBDD01, Sesión 7: SQL

Cargado por

pepef3213
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas46 páginas

Unidad 3: BBDD Relacionales: BBDD01, Sesión 7: SQL

Cargado por

pepef3213
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 46

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

También podría gustarte