Nothing Special   »   [go: up one dir, main page]

Lenguajes Formales

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 15

Lenguajes Formales

Los lenguajes formales (Álgebra Relacional, Cálculo


Relacional de Tuplas, Cálculo Relacional de Dominios, …)
proporcionan notaciones precisas para representar

SQL las consultas

Los sistemas de bases de datos comerciales


necesitan un lenguaje de consulta cómodo
para el usuario

Bases de Datos
σ Π ٨ ρ Æ select, where, from, …
Ingenierí
Ingeniería Té
Técnica en Informá
Informática de Sistema
Introducció
Introducción 2

SQL Índice
Lenguaje comercial de mayor popularidad e influencia ¾ Historia y Componentes del SQL
¾ Lenguaje de Definición de Datos
Usa una combinación de álgebra relacional
y cálculo relacional ¾ Estructura Básica

Lenguaje de consultas ¾ Conjuntos y Agregación

Definición de estructura ¾ Anidación de Consultas

Modificación de datos ¾ Consultas Complejas


Cada implementación
Especificación de restricciones ¾ Modificación de la Base de Datos
concreta de SQL se
diferencia en detalles ¾ Reuniones
(a veces muy significativos) ¾ Vistas y Valores Nulos

Introducció
Introducción 3 Introducció
Introducción 4

Versió
Versión Original

Historia y San José Research Center de IBM a principios de los 70

Componentes
Originariamente se llamó
Sequel como parte del
Proyecto System R

del SQL
SQL: Structured Query Language

SQL Lenguaje Estructurado de Consultas


Bases de Datos
Ingenierí
Ingeniería Té
Técnica en Informá
Informática de Sistemas
Historia y Componentes del SQL 6

1
1986 SQL-
SQL-89 y posteriores
Se publica la norma SQL-86 Actualmente los sistemas de bases de datos son
ANSI: American National Standards Institute normalmente compatibles con las características
Instituto Nacional Americano de Normalización de SQL-89
ISO: International Standards Organization
Organización Internacional de Normalización SQL-92 Æ Ampliamente implementada
pero no íntegramente
SQL:1999 Æ Superconjunto de SQL-92;
ningún sistema de bases de datos
soporta todo el estándar
En 1987, IBM publica su nueva norma SAA-SQL
Muchos sistemas de bases de datos
proporcionan características no estándar
Historia y Componentes del SQL 7 Historia y Componentes del SQL 8

Software Componentes del SQL

Lenguaje de Definición de Datos (LDD):


Proporciona órdenes para la definición y
modificación de esquemas de relación,
borrado de relaciones y creación de índices
Software Propietario
Lenguaje de Manipulación de Datos (LMD):
Proporciona órdenes para insertar, borrar y
modificar tuplas de las relaciones
Software Libre
Definición de Vistas: Proporciona órdenes
para definir vistas

Historia y Componentes del SQL 9 Historia y Componentes del SQL 10

Componentes del SQL Ejemplo a Usar


Esquema_sucursal =
Control de Transacciones: Proporciona órdenes para
(nombre_sucursal, ciudad_sucursal, activos)
especificar el comienzo y final de una transacción
Esquema_cuenta =
Control de Integridad: Proporciona órdenes para
(numero_cuenta, nombre_sucursal, saldo)
especificar las restricciones de integridad que deben
Esquema_prestamo =
satisfacer los datos
(numero_prestamo, nombre_sucursal, importe)
Control de Autorización: Proporciona órdenes para
Esquema_cliente =
especificar derechos de acceso a relaciones y vistas
(nombre_cliente, calle_cliente, ciudad_cliente)
Incorporación a Lenguajes (SQL incorporado y
Esquema_impositor =
SQL dinámico): Proporciona formas de incorporar
(nombre_cliente, numero_cuenta)
las instrucciones SQL en los lenguajes de
Esquema_prestatario =
programación de propósito general como C, C++,
(nombre_cliente, numero_prestamo)
Java, PL/I, Cobol, Pascal y Fortran

Historia y Componentes del SQL 11 Historia y Componentes del SQL 12

2
Especificar Relaciones

Lenguaje El lenguaje de definición de datos (LDD) de SQL


permite especificar información relativa a las relaciones
que forman una base de datos:

de Definición ¾
¾
El esquema de cada relación
El dominio de valores asociado a cada atributo

de Datos
¾ Las restricciones de integridad
¾ El conjunto de índices que se deben mantener por
cada relación
¾ Información de seguridad y autorización para cada
relación
SQL ¾ La estructura de almacenamiento físico de cada
Bases de Datos relación
Ingenierí
Ingeniería Té
Técnica en Informá
Informática de Sistemas
Lenguaje de Definició
Definición de Datos 14

Dominios Dominios
¾ char (n) es una cadena de caracteres de longitud fija, con ¾ real, double precision son respectivamente números en
una longitud n especificada por el usuario (character) punto flotante y números en punto flotante de doble
precisión
¾ varchar (n) es una cadena de caracteres de longitud
variable, con una longitud n especificada por el usuario ¾ float (n) es un número en punto flotante, cuya precisión
(character varying) es la menos de n dígitos
¾ int es un entero (integer) ¾ date es una fecha del calendario, que contiene un año de
cuatro dígitos, un mes y un día del mes
¾ smallint es un entero pequeño
¾ time es la hora del día, expresada en horas, minutos y
¾ numeric (p,d) es un número en punto flotante, cuya
segundos
precisión la especifica el usuario; el número está formado
por p dígitos y, de esos p dígitos, d pertenecen a la parte ¾ timestamp es una combinación de date y time
decimal

Lenguaje de Definició
Definición de Datos 15 Lenguaje de Definició
Definición de Datos 16

Coerció
Coerción de Tipos not null
En los sistemas de bases de datos se usa coerción SQL permite incluir en la declaración de dominio de
de tipos para permitir la comparación de valores un atributo la cláusula not null que prohíbe la
compatible inserción de valores nulos en ese atributo

valores int y smallint


cadenas de diferente longitud

Lenguaje de Definició
Definición de Datos 17 Lenguaje de Definició
Definición de Datos 18

3
Definició
Definición de Esquemas Restricciones Integridad
Un esquema se define mediante la orden Restricciones de integridad más usadas:

create table r (A1D1, A2D2, …, AnDn, primary key (Aj1, Aj2, …, Ajn) define la clave
restricción-integridad1, primaria de la relación; los atributos que la
…, forma deben ser no nulos y únicos
restricción-integridadk)
check (P) define un predicado que debe
satisfacer cada tupla de la relación
r nombre de la relación unique (Aj1, Aj2, …, Ajn) define una clave
Ai nombre del atributo candidata; atributos únicos pero pueden ser
nulos
Di dominio del atributo Ai

Lenguaje de Definició
Definición de Datos 19 Lenguaje de Definició
Definición de Datos 20

Relaciones Banco Borrar una Relació


Relación
create table cliente ( Para borrar una relación se usa drop table
nombre_cliente char (20),
calle_cliente char (30),
ciudad_cliente char (30), drop table r
primary key (nombre_cliente));

create table cuenta (


numero_cuenta char (6) not null, delete from r
nombre_sucursal char (15),
saldo int,
primary key (número_cuenta),
check (saldo>=0));

Lenguaje de Definició
Definición de Datos 21 Lenguaje de Definició
Definición de Datos 22

Modificar una Relació


Relación
La cláusula alter table permite modificar

Estructura
una relación existente

Básica
alter table r add A D

alter table r drop A

SQL
Bases de Datos
Ingenierí
Ingeniería Té
Técnica en Informá
Informática de Sistemas
Lenguaje de Definició
Definición de Datos 23

4
Expresió
Expresión SQL Base Típica en SQL
Consulta Tí
La estructura básica de una expresión de consulta select A1, A2, …, An Ai representa un atributo
SQL consiste en tres cláusulas: select, from y where from r1, r2, …, rn ri representa una relación
where P P representa un predicado
select: corresponde a la operación proyección
del álgebra relacional Π A1, A2, …, An (σP (r1 x r2 x … x rn))
from: corresponde a la operación producto
cartesiano del álgebra relacional
where: corresponde al predicado de la
select where from
operación selección del álgebra relacional

Hecho histórico desafortunado: select tiene un El resultado de una consulta SQL es una relación
significado diferente en SQL y en el álgebra relacional
Estructura Bá
Básica 25 Estructura Bá
Básica 26

select select:
select: duplicados
Obtener los nombre de todas las sucursales que Obtener los nombre de todas las sucursales, sin
aparecen en la relación prestamo duplicados, que aparecen en la relación prestamo

select nombre_sucursal select distinct nombre_sucursal


from prestamo from prestamo

select all nombre_sucursal


from prestamo

SQL, como la mayoría de los lenguajes de consulta


comerciales, permite duplicados en las relaciones

Estructura Bá
Básica 27 Estructura Bá
Básica 28

select:
select: asterisco select:
select: expr.
expr. aritmé
aritméticas
Se puede utilizar el símbolo * para hacer referencia La cláusula select puede contener expresiones
a todos los atributos aritméticas que contengan los operadores +, -, * y /

select * Obtener la relación prestamo con el


from prestamo atributo importe multiplicado por 100

select numero_prestamo, nombre_sucursal, importe*100


from prestamo

Estructura Bá
Básica 29 Estructura Bá
Básica 30

5
where where:
where: conectivas ló
lógicas
Obtener todos los números de préstamo para SQL usa las conectivas lógicas and, or y not y
préstamos hechos en la sucursal de nombre Fingoi los operadores de comparación matemáticos

select numero_prestamo select numero_prestamo


from prestamo from prestamo
where nombre_sucursal = ‘Fingoi’ where nombre_sucursal = ‘Fingoi’
and importe > 9000

… en los que el importe sea superior a 9000€

Estructura Bá
Básica 31 Estructura Bá
Básica 32

where:
where: rangos de valores from
Obtener el número de préstamo de aquellos Obtener los nombre, números de préstamo e importes de
préstamos por importes entre 9000€ y 11000€ todos los clientes que tienen un préstamo en el banco

not between
select numero_prestamo select nombre_cliente, prestatario.numero_prestamo,
from prestamo importe
where importe between 9000 and 11000 from prestatario, prestamo
where prestatario.numero_prestamo
= prestamo.numero_prestamo
select numero_prestamo
from prestamo
where importe >=9000 and importe <=11000 nombre_relacion.nombre_atributo evita ambigüedad

Estructura Bá
Básica 33 Estructura Bá
Básica 34

Renombramiento Variables Tupla


SQL proporciona mecanismos para renombrar tanto Las variables tupla se definen en la cláusula from
relaciones como atributos mediante el uso de la cláusula as

nombre_antiguo as nombre_nuevo
select nombre_cliente, T.numero_prestamo, importe
from prestatario as T, prestamo as S
select nombre_cliente, prestatario.numero_prestamo where T.numero_prestamo = S.numero_prestamo
as id_prestamo, importe
from prestatario, prestamo
where prestatario.numero_prestamo
= prestamo.numero_prestamo

Estructura Bá
Básica 35 Estructura Bá
Básica 36

6
Tuplas misma Relació
Relación Cadenas de Caracteres
Las variables tupla son de gran utilidad para En SQL las cadenas de caracteres se especifican
comparar dos tuplas de la misma relación encerrándolas entre cadenas simples
Un carácter comilla dentro de una cadena se
Obtener los nombres de las sucursales que poseen unos especifica usando dos caracteres comilla
activos mayores que al menos una sucursal de Santiago
Se emplea el operador like para el encaje de patrones
select distinct T.nombre_sucursal
from sucursal as T, sucursal as S %: Encaja con cualquier subcadena
where T.activos > S.activos _: Encaja con cualquier caracter
and S.ciudad_sucursal=‘Santiago’

No se puede usar sucursal.activos porque no Para usar % y _ como caracteres de una


estaría claro a que aparición nos referimos cadena se usa el carácter de escape \

Estructura Bá
Básica 37 Estructura Bá
Básica 38

Operadores like/
like/not like Ordenació
Ordenación
Obtener los nombres de todos los clientes cuyo La cláusula order by permite un cierto control sobre
nombre de calle contenga/no contenga la cadena ‘el’ el orden en el que se presentan las tuplas del resultado

select nombre_cliente Listar, por orden alfabético, los clientes que


from cliente tienen un préstamo en la sucursal de Fingoi
where calle_cliente like ‘%el%’
select nombre_cliente
from prestatario, prestamo
where prestatario.numero_prestamo
select nombre_cliente = prestamo.numero_prestamo
from cliente and nombre_sucursal = ‘Fingoi’
where calle_cliente not like ‘%el%’ order by nombre_cliente

Estructura Bá
Básica 39 Estructura Bá
Básica 40

Ascendente/Descendente
La ordenación por defecto de SQL es ascendente

select *
Conjuntos y
Agregación
from prestamo
order by importe desc, número_prestamo asc

Ordenar un gran número de tuplas


es costoso Æ es conveniente ordenar SQL
sólo cuando sea estrictamente necesario Bases de Datos
Ingenierí
Ingeniería Té
Técnica en Informá
Informática de Sistemas
Estructura Bá
Básica 41

7
Operaciones sobre Conjuntos Unió
Unión
Las operaciones sobre conjuntos corresponden
U Clientes que posean un préstamo, una cuenta o las
con las operaciones del álgebra relacional U, y - dos cosas

Las relaciones que participan en las operaciones (select nombre_cliente


han de ser compatibles: mismo conjunto de from impositor) (select nombre_cliente
atributos y dominios iguales union from impositor)
(select nombre_cliente union all
from prestatario) (select nombre_cliente
from prestatario)
select nombre_cliente select nombre_cliente
from impositor from prestatario
La operación unión, por defecto, elimina duplicados

Conjuntos y Agregació
Agregación 43 Conjuntos y Agregació
Agregación 44

Intersecció
Intersección Excepto
Clientes que posean tanto un préstamo como una Clientes que posean una cuenta pero que no tienen
cuenta ningún préstamo

(select nombre_cliente (select nombre_cliente


from impositor) (select nombre_cliente from impositor) (select nombre_cliente
intersect from impositor) except from impositor)
(select nombre_cliente intersect all (select nombre_cliente except all
from prestatario) (select nombre_cliente from prestatario) (select nombre_cliente
from prestatario) from prestatario)

La operación intersección, por defecto, elimina duplicados La operación excepto, por defecto, elimina duplicados

Conjuntos y Agregació
Agregación 45 Conjuntos y Agregació
Agregación 46

Funciones de Agregació
Agregación Media
Son funciones que toman una colección de valores Obtener la media de saldos de las cuentas de la
como entrada y produce un único valor como salida sucursal de ‘Fingoi’

Media: avg select avg (saldo)


from cuenta
Mínimo: min Colección
where nombre_sucursal=‘Fingoi’
de números
Máximo: max
Total: sum
Cuenta: count
Resultado: una relación con
un atributo y una tupla

Conjuntos y Agregació
Agregación 47 Conjuntos y Agregació
Agregación 48

8
Agrupació
Agrupación Contar
Obtener el saldo medio de las cuentas de cada Obtener el número de impositores de cada sucursal
sucursal

select nombre_sucursal,
select nombre_sucursal, avg (saldo) count (distinct nombre_cliente)
from cuenta from impositor, cuenta
group by nombre_sucursal where
impositor.numero_cuenta=cuenta.numero_cuenta
group by nombre_sucursal

Es importante que Es importante


mantenga duplicados eliminar duplicados

Conjuntos y Agregació
Agregación 49 Conjuntos y Agregació
Agregación 50

Condiciones sobre Grupos Secuencia Ló


Lógica
Obtener el saldo medio de las cuentas de cada sucursal, Obtener el saldo medio de los clientes que viven
para aquellas que el saldo medio sea superior a 1000€ en Santiago y tienen dos ó más cuentas

select nombre_sucursal, avg (saldo)


from cuenta from cuenta, cliente, impositor
group by nombre_sucursal where cuenta.numero_cuenta=impositor.numero_cuenta
having avg (saldo)>1200 and cliente.nombre_client=impositor.nombre_cliente

Conjuntos y Agregació
Agregación 51 Conjuntos y Agregació
Agregación 52

Secuencia Ló
Lógica Secuencia Ló
Lógica
Obtener el saldo medio de los clientes que viven Obtener el saldo medio de los clientes que viven
en Santiago y tienen dos ó más cuentas en Santiago y tienen dos ó más cuentas

select cliente.nombre_cliente, avg (saldo) select cliente.nombre_cliente, avg (saldo)


from cuenta, cliente, impositor from cuenta, cliente, impositor
where cuenta.numero_cuenta=impositor.numero_cuenta where cuenta.numero_cuenta=impositor.numero_cuenta
and cliente.nombre_client=impositor.nombre_cliente and cliente.nombre_client=impositor.nombre_cliente
and ciudad_cliente=‘Santiago’

Conjuntos y Agregació
Agregación 53 Conjuntos y Agregació
Agregación 54

9
Secuencia Ló
Lógica Secuencia Ló
Lógica
Obtener el saldo medio de los clientes que viven Obtener el saldo medio de los clientes que viven
en Santiago y tienen dos ó más cuentas en Santiago y tienen dos ó más cuentas

select cliente.nombre_cliente, avg (saldo) select cliente.nombre_cliente, avg (saldo)


from cuenta, cliente, impositor from cuenta, cliente, impositor
where cuenta.numero_cuenta=impositor.numero_cuenta where cuenta.numero_cuenta=impositor.numero_cuenta
and cliente.nombre_client=impositor.nombre_cliente and cliente.nombre_client=impositor.nombre_cliente
and ciudad_cliente=‘Santiago’ and ciudad_cliente=‘Santiago’
group by impositor.nombre_cliente group by impositor.nombre_cliente
having count (distinct impositor.numero_cuenta)>=2

Conjuntos y Agregació
Agregación 55 Conjuntos y Agregació
Agregación 56

Subconsultas
Una subconsulta es una expresión

Anidación de
select-from-where dentro de
una consulta

Consultas Su uso más común es llevar a cabo


comprobaciones sobre pertenencia a
conjuntos, comparación de conjuntos
y cardinalidad de conjuntos

SQL
Bases de Datos
Ingenierí
Ingeniería Té
Técnica en Informá
Informática de Sistemas
Anidació
Anidación de Consultas 58

Pertenencia a Conjuntos Pertenencia a Conjuntos


La conectiva in (not in) comprueba la (no) Encontrar todos los cliente que tienen tanto un
pertenencia a un conjunto, donde el conjunto es la préstamo como una cuenta en el banco
colección de valores resultado de un cláusula select

select distinct nombre_cliente


from prestatario
where nombre_cliente in
(select nombre_cliente from impositor)

El estudio de la pertenencia a conjuntos


puede extenderse a varios atributos
Anidació
Anidación de Consultas 59 Anidació
Anidación de Consultas 60

10
Comparació
Comparación de Conjuntos Comparació
Comparación de Conjuntos
La cláusula some permite expresar la idea “que al Obtener los nombre de las sucursales que poseen
menos una” y la cláusula all permite expresar la idea un activo mayor que al menos una sucursal en
“que todas”, útiles para comparar un valor con un Santiago
conjunto de valores dados por una consulta select

select nombre_sucursal
>some >=some from sucursal
>all >=all where activo >some
<some <=some
<all <=all (select activo from sucursal
=some <>some where ciudad_sucursal=‘Santiago’)
=all <>all

any=some

Anidació
Anidación de Consultas 61 Anidació
Anidación de Consultas 62

Cardinalidad Vacías
Relaciones Vací
La cláusula exists devuelve el valor lógico Obtener todos los cliente que tienen tanto una
cierto si la subconsulta no está vacía cuenta como un préstamo en el banco

La cláusula no exists devuelve el valor lógico


cierto si la subconsulta está vacía select nombre_cliente
from prestatario
where exists
(select * from impositor
where impositor.nombre_cliente
La cláusula unique devuelve el valor lógico cierto =prestatario.nombre_cliente)
si la subconsulta no produce tuplas duplicadas

Anidació
Anidación de Consultas 63 Anidació
Anidación de Consultas 64

Tuplas Duplicadas
Obtener todos los clientes que tienen sólo una

Consultas
cuenta en la sucursal de Fingoi

Complejas
select T.nombre_cliente
from impositor as T
where unique
(select R.nombre_cliente
from cuenta, impositor as R
where T.nombre_cliente=R.nombre_cliente
and R.numero_cuenta=
cuenta.numero_cuenta SQL
and cuenta.nombre_sucursal=‘Fingoi’ Bases de Datos
Ingenierí
Ingeniería Té
Técnica en Informá
Informática de Sistemas
Anidació
Anidación de Consultas 65

11
Consultas Complejas Relaciones Derivadas
Cuando las consultas crecen en complejidad llega un Obtener el saldo medio de las cuentas de aquellas
momento que resulta imposible escribir toda la sucursales donde dicho saldo medio sea superior a 1200€
consulta en un único bloque SQL (select-from-
where-group by-having)
select nombre_sucursal, saldo_medio
from (select nombre_sucursal, avg(saldo)
from cuenta
Relaciones derivadas
group by nombre_sucursal)
Cláusula with as resultado(nombre_sucursal, saldo_medio)
where saldo_medio>1200

Consultas Complejas 67 Consultas Complejas 68

with
Obtener el saldo medio de las cuentas de aquellas
sucursales donde dicho saldo medio sea superior a 1200€ Modificación
with resultado(nombre_sucursal, saldo_medio) as de la Base
de Datos
select nombre_sucursal, avg(saldo)
from cuenta
group by nombre_sucursal
select nombre_sucursal, saldo_medio
from resultado
where saldo_medio>1200 SQL
Bases de Datos
Ingenierí
Ingeniería Té
Técnica en Informá
Informática de Sistemas
Consultas Complejas 69

Modificar Borrado
Las cláusulas de modificación del SQL permiten El borrado tiene una expresión similar a las consultas
añadir, eliminar o cambiar información
Sólo se pueden borrar tuplas completas

Sólo funciona sobre una relación

delete from r
where P

Todas las cláusulas vistas para consultas


se pueden utilizar en el borrado

Modificació
Modificación de la Base de Datos 71 Modificació
Modificación de la Base de Datos 72

12
Borrar Tuplas Insercció
Insercción
Borrar todos los préstamos en los que la cantidad La inserción se realiza especificando la tupla a insertar o
esté comprendida entre 1300€ y 1500€ mediante una expresión similar a las consultas que
genere las tuplas a insertar

Los valores deben pertenecer al dominio de los atributos


delete from prestamo
y se introducen en el orden dado en el esquema de la
where importe between 1300 and 1500
relación
insert into r
values (…)

Todas las cláusulas vistas para consultas


se pueden utilizar en la inserción

Modificació
Modificación de la Base de Datos 73 Modificació
Modificación de la Base de Datos 74

Insertar Tuplas Insertar Consultas


Insertar una nueva cuenta C-937 en la sucursal de Regalar una cuenta de ahorro de 200€ por cada
Fingoi con un saldo de 1200€ préstamo, a los clientes que tengan al menos un
préstamo en la sucursal de Fingoi

inser into cuenta inser into cuenta


values (‘C-973’, ‘Fingoi’, 1200) select numero_prestamo, nombre_sucursal, 200
from prestatario, prestamo
where prestatario.numero_prestamo
=prestamo.numero_prestamo
and nombre_sucursal=‘Fingoi’

Modificació
Modificación de la Base de Datos 75 Modificació
Modificación de la Base de Datos 76

Insercció
Insercción Infinita Actualizaciones
Error muy común Æ produce un número infinito En muchos casos es interesante cambiar el valor
de tuplas Æ caída del servidor de Bases de Datos de un atributo dentro de una tupla, sin cambiar
todos los valores

inser into r
select *
from r
update r
set (…)

Todas las cláusulas vistas para consultas


se pueden utilizar en la actualización

Modificació
Modificación de la Base de Datos 77 Modificació
Modificación de la Base de Datos 78

13
Actualizar Atributos Transacciones
Pagar un interés del 5% a todas las cuentas con un Una transacción consiste en una secuencia de
saldo superior a 1000€ instrucciones de consulta y modificación que deben
realizarse o todas o ninguna

update cuenta Una transacción comienza implícitamente


set saldo=saldo*1.05 cuando se ejecuta una instrucción SQL
where saldo>=1000
Termina de forma comprometida mediante
commit work o causando el retroceso
mediante rollback work

Marcas de transacción: begin atomic … end

Modificació
Modificación de la Base de Datos 79 Modificació
Modificación de la Base de Datos 80

Tipos de Reuniones
Además de proporcionar el mecanismo básico de producto
cartesiano, existen cláusulas especiales para controlar con
más precisión el tipo de reunión: interna, externa por

Reuniones izquierda, externa por derecha y externa completa

numero importe nombre numero


P-170 3000 Santos P-170
P-260 1700 López P-155
Prestamo Prestatario
SQL
Bases de Datos
Ingenierí
Ingeniería Té
Técnica en Informá
Informática de Sistemas
Reuniones 82

inner join left outer join


La reunión interna se indica mediante la cláusula La reunión externa por la izquierda se indica
inner join mediante la cláusula left outer join
prestamo inner join prestatario on prestamo left outer join prestatario on
prestamo.numero=prestatario.numero prestamo.numero=prestatario.numero

numero importe nombre numero numero importe nombre numero


P-170 3000 Santos P-170 P-170 3000 Santos P-170
P-260 1700 López P-155 P-260 1700 López P-155

numero importe nombre numero numero importe nombre numero


P-170 3000 Santos P-170 P-170 3000 Santos P-170
P-260 1700 null null

Reuniones 83 Reuniones 84

14
natural inner join Tipos y Condiciones
La reunión natural se indica mediante la cláusula Cada variante de las operaciones de reunión
natural inner join está formado por un tipo de reunión y una condición
de reunión
prestamo natural inner join prestatario

numero importe nombre numero inner join natural


P-170 3000 Santos P-170 left outer join on
P-260 1700 López P-155 right outer join using
full outer join
numero importe nombre
P-170 3000 Santos

Reuniones 85 Reuniones 86

Reunió
Reunión
Listar todos los clientes que poseen una cuenta pero

Vistas y
no tienen un préstamo en el banco

select imp_NC
from (impositor left outer join prestatario
on impositor.nombre_cliente=
Valores Nulos
prestatario.nombre_cliente)
as db1(imp_NC, numero_cuenta,
pres_NC, numero_prestamo)
where pres_NC is null SQL
Bases de Datos
Ingenierí
Ingeniería Té
Técnica en Informá
Informática de Sistemas
Reuniones 87

Vistas Valores Nulos


Una vista en SQL se define mediante la orden El comportamiento de SQL con los valores nulos
create view y un nombre sigue estrictamente las normas para tratamientos de
valores nulos definidas en el Álgebra Relacional

create view v (A1D1, …, AnDn)


as (consulta)

Vistas y Valores Nulos 89 Vistas y Valores Nulos 90

15

También podría gustarte