Base de datos
[pic]
Diagrama de Esquema Relacional
[pic]
En MS-SQL Server 2005:
create table cliente
(nombre_cliente char(20),
calle_cliente char(30),
ciudad_cliente char(30),
primary key (nombre_cliente))
create table sucursal
(nombre_sucursal char(15),
ciudad_sucursal char(30),
activo integer,
primary key (nombre_sucursal),
check (activo > = 0))
create table cuenta(número_cuenta char(10),
nombre_sucursal char(15),
saldo integer,
primary key (número_cuenta),
foreign key (nombre_sucursal) references sucursal
on delete cascade
on update cascade,
check (saldo >= 0))
create table prestamo
(número_prestamo char(10),
nombre_sucursal char(15),
importe integer,
primary key (número_prestamo),
foreign key (nombre_sucursal) referencessucursal
on delete cascade
on update cascade,
check (importe >= 0))
create table impositor
(nombre_cliente char(20),
número_cuenta char(10),
primary key (nombre_cliente, número_cuenta),
foreign key (nombre_cliente) references cliente
on delete cascade
on update cascade,
foreign key (número_cuenta) references cuenta
on delete cascade
on updatecascade)
create table prestatario
(nombre_cliente char(20),
número_prestamo char(10),
primary key (nombre_cliente, número_prestamo),
foreign key (nombre_cliente) references cliente
on delete cascade
on update cascade,
foreign key (número_prestamo) references prestamo
on delete cascade
on update cascade)
Diagrama de Esquema Relacional generado por MS-SQL Server 2005.[pic]
Un ejemplar de la BD (los datos almacenados en la BD en un instante del tiempo):
SUCURSAL CLIENTE
CUENTA IMPOSITOR
PRESTAMO PRESTATARIO
Operaciones con strings (like, comodines: %, _) :
Obtener todos los nombres declientes cuya ciudad contenga el substring “at”.
select nombre_cliente, ciudad_cliente
from cliente
where ciudad_cliente like '%at%'
Operaciones con order by:
Obtener los nombres de todos los clientes que tienen al menos un préstamo en la sucursal Bancomer, ordenados descendentemente por nombre de cliente.
select nombre_cliente
from prestatario A, prestamo B
whereA.número_prestamo = B.número_prestamo and
nombre_sucursal = 'Bancomer'
order by nombre_cliente desc
Operaciones con conjuntos (union, intersect, except):
Obtener todos los nombres de clientes que tienen un préstamo, una cuenta, o ambos:
select nombre_cliente from impositor
union
select nombre_cliente from prestatario
Obtener todos los nombres de clientes que tienen un préstamo y una cuenta(ambos):
select nombre_cliente from impositor
intersect
select nombre_cliente from prestatario
Obtener todos los nombres de clientes que tienen una cuenta, pero no préstamo:
select nombre_cliente from impositor
except
select nombre_cliente from prestatario
Funciones de agregación (avg, min, max, sum, count).
Obtener el promedio del saldo de las cuentas de la sucursal Banamex:select avg(saldo)
from cuenta
where nombre_sucursal = 'Banamex'
Obtener el número total de renglones de la tabla cliente:
select count(*)
from cliente
Obtener el número total de cuentahabientes (impositores) en el banco:
select count(distinct nombre_cliente)
from impositor
Funciones de agregación utilizando Group by.
Obtener el número total de cuentahabientes para cadasucursal:
select nombre_sucursal, count(distinct nombre_cliente)
from impositor A, cuenta B
where A.número_cuenta = B.número_cuenta
group by nombre_sucursal
NOTA: Las columnas en la cláusula select, excepto las que están dentro de la función de agregación, deben aparecer en la lista group by
Funciones de agregación utilizando having.
Obtener los nombres de sucursales donde el promedio...
Regístrate para leer el documento completo.