as (select - Carreras de Sistemas - UARG

Anuncio
Docente:
Albert A. Osiris Sofía
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
1
Lenguaje de Consultas
SQL
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
2
SQL
•
•
•
•
•
•
•
•
•
•
•
Estructura Básica
Conjunto de Operaciones
Funciones Agregadas
Valores Nulos
Consultas Anidadas
Relaciones Derivadas
Vistas
Modificaciones de la Base de Datos
Unión de Relaciones
Lenguaje de Definición de Datos
SQL Embebido
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
3
SQL
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
4
SQL
• Lenguaje de Consultas Estruturado (SQL)
– Lenguajes de trabajo estándar para modelo
relacional
– Componentes
• DDL (define esquemas, relaciones, índices)
• DML (Algebra Relaciona y Cálculo Relacional de
Tuplas)
• Manipulación de datos inmerso (permite ser usado
desde otro lenguaje). Conocido como “embebido”.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
5
SQL
•
•
•
•
Definición de vistas
Autorizaciones al acceso a datos
Integridad (restricciones complejas)
Control de Concurrencia
– Estructura básica: 3 cláusulas
• Select (equivale a π)
• From (equivale a x)
• Where (equivale a σ)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
6
Clausula Select
• La cláusula select puede contener
expresiones aritméticas con las
operaciones +, –, ∗, y /, y operar sobre
constantes y atributos de tuplas.
• La consulta:
select nsucursal, npréstamo, monto ∗ 100
from prestamo
Retornará una relación igual a la relación
prestamo, salvo que el atributo monto se
encontrará multiplicado por 100.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
7
Clausula Where
• La clausula where corresponde al
predicado de selección del álgebra
relacional. Consiste en un predicado que
involucra atributos referidos en la clausula
from.
• select nprestamo
from prestamo
where nsucursal = “Cabildo” and monto > 1200
• SQL utiliza los conectores lógicos and, or,
y not. Estos permiten la utilización de
expresiones aritméticas como operandos en
las operaciones de comparación.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
8
Clausula Where (II)
• SQL incluye un operador de comparasión
between para simplificar la clausula
where cuando se especifica un rango.
• select nprestamo
from prestamo
where monto between 90000 and 100000
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
9
Clausula From
– La clausula from corresponde al producto cartesiano en
el álgebra relacional, listando las relaciones utilizadas
en la evaluación de la expresión.
– Encontrar el producto cartesiano borrower x loan
select ∗
from prestatario, prestamo
– Encontrar nombre y préstamo de los clientes que
tienen un préstamo en la sucursal Cabildo.
select distinct ncliente, prestatario.nprestamo
from prestatario, prestamo
where prestatario.nprestamo = prestamo.nprestamo
and nsucursal = “Cabildo”
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
10
Operación Rename
• El mecanismo de SQL para renombrar relaciones
y atributos se implementa mediante la cláusula
as:
nombreAnterior as nombreNuevo
• Encontrar el nombre y préstamo de los clientes
que tienen un préstamo en la sucursal Cabildo;
reemplazar la columna nprestamo con idprestamo.
– select distinct ncliente, prestatario.nprestamo
as idprestamo
from prestatario, prestamo
where prestatario.nprestamo = prestamo.nprestamo
and nsucursal = “Cabildo”
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
11
Variables Tuplas
– Las Variables Tuplas se definen en la clausula from a
través del uso de la clausula as.
– Encontrar el nombre y prestamo de los clientes que
tienen un prestamo en cualquier sucursal.
select distinct ncliente, T.nprestamo
from prestatario as T, prestamo as S
where T.nprestamo = S.nprestamo
– Encontrar el nombre de las sucursales que tienen
saldos mayores que alguna sucursal de Rosario.
Select distinct T.nsucursal
from sucursal as T, sucursal as S
Where T.saldo > S.saldo and S.ciudad = “Rosario”
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
12
Operaciones String
• SQL incluye un operador de búsqueda de
strings. Los patrones se describen con la
utilización de dos caracteres especiales:
– (%). Encuentra un substring.
– (_). Encuentra cualquier caracter.
• Encontrar los nombres de todos los
clientes cuyo domicilio incluya “Av.”.
select ncliente
from clientes
where calle like “%Av.%”
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
13
Strings (II)
– Operaciones sobre strings
• Like, %, _
–
–
–
–
“Alfa%”: cualquier cadena que empiece con Alfa
“%casa%”: cualquier cadena que tenga casa en su interior
“_ _ _”: cualquier cadena con tres caracteres
“_ _ _%”: cualquier cadena con al menos tres caracteres.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
14
Ordenando los resultados
• Listar en orden alfabético los nombres de todos
los clientes que tienen un préstamo en la sucursal
Cabildo
select distinct ncliente
from prestatario, prestamo
where prestatario.nprestamo = prestamo.nprestamo
and nsucursal = “Cabildo”
order by ncliente
• Puede especificarse desc para ordenación
descendente o asc para descendente, que es el
default.
• Este ordenamiento es costoso. Debe ordenarse
sólo si es necesario.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
15
Operaciones
• El conjunto de operaciones union,
intersect, y except operan sobre
relaciones y corresponden a las
operaciones de álgebra relacional ∪, ∩, −.
• Cada una de las operaciones precedentes
elimina automáticamente los duplicados.
Para conservarlos debe utilizarse union all,
intersect all y except all.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
16
Operaciones
• Encontrar los clientes que tengan un préstamo,
una cuenta o ambos.
(select ncliente from depositante)
union
(select ncliente from prestatario)
• Encontrar los clientes que tengan un prestamo y
una cuenta
(select ncliente from depositante)
intersect
(select ncliente from prestatario)
• Encontrar los clientes que tengan una cuenta pero
no un préstamo
(select ncliente from depositante)
except
(select ncliente from prestatario)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
17
Funciones Agregadas
• Estas funciones operan sobre una columna
de una relación y devuelven un valor:
avg:
valor promedio
min:
valor mínimo
max: valor máximo
sum:
suma
count: cantidad de valores
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
18
Funciones Agregadas (II)
• Encontrar el promedio de los saldos de las
cuentas de la sucursal Cabildo.
select avg (saldo)
from cientas
where nsucursal = “Cabildo”
• Encontrar el número de tuplas de la relación
clientes:
select count (*)
from clientes
• Encontrar la cantidad de depositantes.
select count (distinct ncliente)
from depositante
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
19
Funciones Agregadas – Group By
• Encontrar la cantidad de depositantes por
cada sucursal.
select nsucursal, count (distinct ncliente)
from depositante,cuentas
where depositante.ncuenta = cuentas.ncuenta
group by nsucursal
Nota: los atributos en la cláusula select
deben ser los que aparezcan en la clausula
group by.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
20
Funciones Agregadas– Having
• Encontrar los nombres de las sucursales
donde el saldo promedio es mayor a $1,200.
select nsucursal, avg (saldo)
from cuentas
group by nsucursal
having avg (saldo) > 1200
Nota: los predicados de la clausula having
se aplican luego de la formación de grupos
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
21
Valores Nulos
• Una tupla puede tener valores nulos, indicados
por null, para algunos de sus atributos, null
significa que ese valor no existe o es
desconocido.
• El resultado de una operación aritmética que
involucre el valor null es null.
• Toda comparación que involucre null retorna
false.
– Comparación con null retorna unknown
– (unknown or unknown) = unknown,
(true and unknown) = unknown,
– (false and unknown) = false,
– (unknown and unknown) = unknown
– where = false si se evalúa como unknown
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
22
Valores Nulos (II)
• Encontrar los préstamos que aparecen con valor
nulo en el atributo monto.
select nprestamo
from prestamo
where monto is null
• Total de montos de préstamos
select sum (monto)
from loan
Los valores nulos se ignoran. El resultado será nulo
sólo si todos los montos lo son.
• Todas las funciones agregadas ignoran las tuplas
con valores nulos excepto count(*).
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
23
Consultas Anidadas
• SQL provee un mecanismo para el
anidamiento de consultas.
• Una subconsulta es una expresión selectfrom-where que se anida dentro de otra
consulta.
• Usualmente se utiliza para desarrollar
consultas de miembros, comparaciones y
cardinalidad.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
24
Set Membership
• F in r ⇔ ∃ t ∈ r (t = F)
(5 in
0
4
5
) = true
(5 in
0
4
6
) = false
(5 not in
0
4
6
) = true
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
25
Ejemplo
• Encontrar los clientes que tengan una cuenta y un
préstamo en el banco.
select distinct ncliente
from prestatario
where ncliente in
(select ncliente from depositante)
• Encontrar clientes que tienen un préstamo en el
banco pero no una cuenta.
select distinct ncliente
from prestatario
where ncliente not in
(select ncliente from depositante)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
26
Ejemplo
• Encontrar los clientes que tengan una cuenta y un
préstamo en la sucursal Cabildo.
select distinct ncliente
from prestatario, prestamo
where prestatario.nprestamo = prestamo.nprestamo
and nsucursal = “Cabildo”
and (nsucursal, ncliente) in
(select nsucursal,ncliente
from depositante, cuentas
where depositante.ncuenta = cuentas.ncuentas)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
27
Set Comparison
• Encontrar las sucursales que tengan activos
mayores que las de Rosario
select distinct T.nsucursal
from sucursal as T, sucursal as S
where T.saldo > S.saldo and
S.ciudad like “Rosario”
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
28
Clausula Some
• F <comp> some r ⇔ ∃ t(t ∈ r ∧ [F <comp> t])
Donde <comp> puede ser: <, ≤, >, =, ≠
(5< some
0
5
6
) = true
(lectura: 5 < alguna tupla en la relación)
(5< some
0
5
) = false
(5 = some
0
5
) = true
(5 ≠ some
0
5
) = true (since 0 ≠ 5)
(= some) ≡ in
Sin embargo, (≠ some) ≡ not in
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
29
Ejemplo Some
• Encontar las sucursales que tienen activos
mayores que alguna de Rosario.
select nsucursal
from sucursal
where saldo > some
(select saldo
from sucursal
where ciudad = “Rosario”)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
30
Clausula All
• F <comp> all r ⇔ ∀ t(t ∈ r ∧ [F <comp> t])
(5< all
0
5
6
) = false
(5< all
6
10
) = true
(5 = all
4
5
) = false
(5 ≠ all
4
6
) = true (ya que 5 ≠ 4 and 5 ≠ 6)
(≠ all) ≡ not in
Sin embargo, (= all) ≡ in
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
31
Ejemplo All
• Encontrar los nombres de las sucursales
que tienen activos mayores que todas las
sucursales de Rosario.
select nsucursal
from sucursal
where saldo > all
(select saldo
from sucursal
where ciudad = “Rosario”)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
32
Relaciones Vacias
• La construcción exists devuelve true si el
argumento subconsulta no es vacío.
• exists r ⇔ r ≠ Ø
• not exists r ⇔ r = Ø
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
33
Ejemplo
• Encontrar todos los clientes que tengan una
cuenta en todas las sucursales de Rosario.
select distinct S.ncliente
from depositante as S
where not exists (
(select nsucursal
from sucursal
where ciudad= “Rosario”)
except
(select R.nsucursal
from depositante as T, cuenta as R
where T.ncuenta = R.ncuenta and
S.ncliente = T.ncliente))
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
34
Ausencia de Tuplas Duplicadas
• Comprueba si el resultado tiene tuplas
dupliacadas
• Encontrar los clientes que tienen sólo una
cuenta en la sucursal Cabildo.
select T.ncliente
from depositante as T
where unique (
select R.ncliente
from cuenta, depositante as R
where T.ncliente = R.ncliente and
R.ncuenta = cuenta.ncuenta
and cuenta.nsucursal = “Cabildo”)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
35
Ejemplo
• Encontrar los clientes que tienen al menos dos
cuentas en la sucursal Cabildo.
select distinct T.ncliente
from depositante as T
where not unique (
select R.ncliente
from cuenta, depositante as R
where T.ncliente = R.ncliente
and R.ncuenta = cuenta.ncuenta
and cuenta.nsucursal = “Cabildo”)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
36
Relaciones Derivadas
• Encontrar el promedio de cuentas de aquellas
sucursales que poseen uno mayor a $1200.
select nsucursal, prom_saldo
from (select nsucursal, avg(saldo)
from cuenta
group by nsucursal)
as result (nsucursal, prom_saldo))
where prom_saldo > 1200
Notese que no fue necesario utilizar la clausula
having, ya que la relación temporaria resultante
del from puede usarse en la cláusula where.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
37
Vistas
• Proveen un mecanismo para ocultar datos a
ciertos usuarios. Para crear una vista se usa el
comando:
create view v as <expresión de consulta>
donde:
– <expresión de consulta> es cualquier expresión legal
– El nombre de la vista está representado por v
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
38
Ejemplos de Vistas
• Una vista que contenga las sucursales y sus clientes
create view clientesT as
(select nsucursal,ncliente
from depositante,cuenta
where depositante.ncuenta = cuenta.ncuenta)
union
(select nsucursal,ncliente
from prestatario,prestamo
where prestatario.npresta = prestamo.nprestamo)
• Encontrar todos los clientes de la sucursal Cabildo
select ncliente
from clientesT
where nsucursal = “Cabildo”
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
39
Modificaciones: borrado
• Eliminar todos los registros de cuentas de la sucursal
Cabildo
delete from cuenta
where nsucursal = “Cabildo”
• Eliminar todas las cuentas de todas las sucursales de la
ciudad de Rosario.
delete from cuenta
where nsucursal in (select nsucursal
from sucursal
where ciudad = “Rosario”)
delete from depostante
where ncuenta in (select ncuenta
from sucursal,cuenta
where ciudad = “Rosario”
and sucursal.nsucursal = cuenta.nsucursal)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
40
Ejemplo
•
Eliminar los registros de todas las cuentas con
saldos menores al promedio del banco.
delete from cuenta
where saldo <
(select avg(saldo) from cuenta)
Problema: al eliminar tuplas de cuenta, el promedio
cambia
– Solución utilizada en SQL:
1. Primero calcular el promedio y encontrar todas las
tuplas a eliminar
2. Luego borrar todas las tuplas seleccionadas
anteriormente, sin volver a calcular el promedio
–
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
41
Modificaciones: inserción
• Agregar una nueva tupla a cuentas
insert into cuenta
values (“cabildo”, A-9732, 1200)
ó
insert into cuenta (nsucursal, saldo, ncuenta)
values (“Cabildo”, 1200, A-9732)
• Agregar una tupla a cuentas con el saldo nulo
insert into cuenta
values (“Cabildo”, A-777, null)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
42
Modificaciones: inserción (II)
• Entregar una bonificación de $200 a los
clientes de prestamos de la sucursal
Cabildo (que no tienen cuentas).
insert into cuenta
select nsucursal, ncuenta, 200
from prestamo
where nsucursal = “Cabildo”
insert into depositante
select ncliente,nprestamo
from prestamo,prestatario
where nsucursal = “Cabildo”
and prestamo.ncuenta = prestatario.ncuenta
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
43
Modificaciones: actualización
• Incrementar las cuentas con saldos
mayores a $10.000 en un 6%, el resto en
5%.
– Dos etapas:
update cuenta
set saldo = saldo ∗ 1.06
where saldo > 10000
update cuenta
set saldo = saldo ∗ 1.05
where saldo ≤ 10000
– El orden es importante
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
44
Actualización de una Vista
• Crear una vista de todos los préstamos en la relación
prestamo, ocultando el atributo monto.
create view prestamoS as
select nsucursal, nprestamo
from lprestamo
• Agregar una tupla a prestamoS
insert into prestamoS
values (“Cabildo”,” L-307”)
Esta insersión debe ser representada como la insersión
de la tupla
(“Cabildo”, “L-307, null)
en la relación prestamo
• Actualizaciones en vistas mas complejas son
desaconsejables.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
45
Relaciones de Union
• Las operaciones de Join toman dos relaciones y
devuelven como resultado una tercera relación
• Estas operaciones se utilizan usualmente en
subconsultas en la cláusula from.
• Condicion Join: define que tuplas en las dos
relaciones coinciden, y que atributos estarám
presentes en el resultado.
• Tipo Join: define como se trata a las tuplas de
cada relación que no coinciden
Tipos
Condiciones
inner join
left outer join
right outer join
full outer join
natural
on <predicate>
using (A1, A2, ..., An)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
46
Tablas para Ejemplos
• Relación prestamo
nsucursal
nprestamo
monto
Centro
L-170
3000
Once
L-230
4000
Cabildo
L-260
1700
• Relación prestatario
ncliente
nprestamo
Perez
L-170
Lopez
L-230
Soto
L-155
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
47
Join: Ejemplos
• prestamo inner join prestatario on
prestamo.nprestamo = prestatario.nprestamo
nsucursal
nprestamo
monto
ncliente
nprestamo
Centro
L-170
3000
Perez
L-170
Once
L-230
4000
Lopez
L-230
prestamo left outer join prestatario on
prestamo.nprestamo = prestatario.nprestamo
nsucursal
nprestamo
monto
ncliente
nprestamo
Centro
L-170
3000
Perez
L-170
Once
L-230
4000
Lopez
L-230
Cabildo
L-260
1700
null
null
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
48
Join: Ejemplos (II)
• prestamo natural inner join prestatario
nsucursal
nprestamo
monto
ncliente
Centro
L-170
3000
Perez
Once
L-230
4000
Lopez
prestamo natural right outer join prestatario
nsucursal
nprestamo
monto
ncliente
Centro
L-170
3000
Perez
Once
L-230
4000
Lopez
null
L-155
null
Soto
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
49
Join: Ejemplos (III)
• prestamo full outer join prestatario using
(nprestamo)
nsucursal
nprestamo
monto
ncliente
Downtown
L-170
3000
Jones
Redwood
L-230
4000
Smith
Perryridge
L-260
1700
null
null
L-155
null
Hayes
• Encontrar los clientes que tengan una cuenta
ó un préstamo pero no los dos.
select ncliente
from (depositante natural full outer join prestatario)
where ncuenta is null or ncuenta is null
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
50
Data Definition Language (DDL)
Permite la especificación de información referida a cada relación,
incluyendo:
•
•
•
•
•
•
El esquema de cada relación
El dominio de valores asociado
Restricciones de integridad
Conjunto de índices de cada relación
Información de seguridad y autorizaciones
La estructura física de almacenamiento en
disco
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
51
Tipos de Dominio en SQL
• char(n). String de caracteres de
longitud fija
• varchar(n). String de caracteres de
longitud variable, máximo n.
• int. enteros
• smallint. Small integer
• numeric(p,d). Número decimal fijo de p
posiciones con n digitos decimales.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
52
Tipos de Dominio en SQL (II)
• real, double precision. Números de punto
flotante y doble precisión.
• float(n). Punto flotante con precisión de al
menos n dígitos.
• date. aaaammdd
• time. hhmmss
• Se permiten valores nulos en todos los atributos.
La declaración de un atributo como not null
prohíbe valores nulos para ese atributo.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
53
Construción: Create Table
• En SQL se define una relación con el comando create
table:
create table r (A1 D1, A2 D2, ..., An Dn,
(integrity-constraint1),
...,
(integrity-constraintk))
– r es el nombre de la relación
– cada Ai en un nombre de atributo en el esquema de la relación r
– Di es el tipo de dato para el atributo Ai
• Ejemplo:
create table sucursal
(nsucursal char(15) not null,
ciudad
char(30),
saldo
integer)
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
54
Restricciones de Integridad
• not null
• primary key (A1, ..., An)
• check (P,) donde P es un predicado
Ejemplo: declarar nsucursal como la clave primaria para sucursal y asegurar
que los saldos sean no negativos:
create table sucursal
(nsucursal
char(15) not null,
ciudad
char(30)
saldo
integer,
primary key (nsucursal),
check (saldo > = 0))
La declaración de un atributo como clave primaria le impone la
restricción no nula
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
55
Constructores Drop y Alter Table
• El comando drop table elimina toda la
información referida a la relación de la base de
datos.
• El comando alter table se usa para agregar
atributos a relaciones existentes. Todas las
tuplas contendrán el valor null para ese atributo.
alter table r add A,D
• El comando alter table también puede ser usado
para eliminar atributos de una relación
alter table r drop A
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
56
SQL Embebido
• El estándar SQL define comandos
embebidos en lenguajes de programación
como Pascal, PL/I, Fortran, C, and Cobol.
• Un lenguaje en el que SQL está embebido
se llama lenguaje host, y los comandos de
SQL son embebidos.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
57
Ejemplo
Desde un lenguaje host, encontrar los nombres y cuentas de los clientes
con saldos mayores al valor almacenado en la variable monto.
• Especifica la consulta en SQL y se declara una
cursor para ella:
• EXEC SQL
declare c cursor for
select ncliente,ncuenta
from depositante,cuenta
where depositante.ncuenta = cuenta.ncuenta
and cuenta.saldo > monto
END-EXEC
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
58
SQL embebido (II)
• El comando open causa la evaluación de la
consulta
EXEC SQL open c END-EXEC
• El comando fetch asigna el valor de una tupla a
variables del lenguaje host.
EXEC SQL fetch c into :cn: an END-EXEC
• El comando close elimina la relación temporal que
almacenaba la consulta
EXEC SQL close c END-EXEC
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
59
Query By Example
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
60
QBE
• Query By Example:
– Sintaxis bidimensional: una consulta se expresa
como una tabla
– Se expresa la consulta con un “ejemplo”
– Se basa en el cálculo relacional de dominios
– Ejemplos en Access
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
61
Tareas Pendientes
• Aplicación específica MySQL
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
62
Conclusiones
• SQL es un lenguaje de consultas
flexible.
• Se ha impuesto como paradigma
de los lenguajes de consulta.
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
63
Fundamentos de Bases de Datos
Clase Nº 6
Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos
64
Descargar