2. Base de Datos
La base de datos sobre la que trabajamos
está constituida por partes, proveedores y
proyectos, los cuáles a su vez se
encuentran relacionados, formando una
cuarta tabla de envíos.
4. Proveedores
La tabla de proveedores está constituida
por los siguientes atributos:
sid: Identificador del proveedor.
snombre: Nombre del proveedor.
situacion: Situación del proveedor.
ciudad: Ciudad del proveedor.
5. Partes
La tabla de partes está constituida por los
siguientes atributos:
pid: Identificador de la parte.
pnombre: Nombre de la parte.
color: Color de la parte.
peso: Peso de la parte.
ciudad: Ciudad de la parte.
6. Proyectos
La tabla de proyectos está constituida por
los siguientes atributos:
jid: Identificador del proyecto.
jnombre: Nombre del proyecto.
ciudad: Ciudad del proyecto.
7. Manipulación DML
A continuación, veremos algunos ejemplos
de consultas simples hechas con SELECT.
La sintaxis del SELECT es:
select [distinct] elemento(s) from tabla(s)
[where condición]
[group by campo(s)]
[having condición]
[order by campo(s)]
8. Consulta Nº 1
Obtener el numero y la situación de
todos los proveedores de París
Select sid, situacion from s where
ciudad=“París”;
9. Consulta Nº 2
Obtener los números de partes de todas
las partes suministrados.
Select distinct p.pid as P1 from s,p;
10. Consulta Nº 3
Obtener los datos completos de todos
los proveedores:
Select * from s;
11. Consulta Nº 4
Obtener los números de los
proveedores radicados en parís cuya
situación sea mayor que 20:
Select sid from s where ciudad=“París”
and situacion > 20;
12. Consulta Nº 5
Obtener los números de proveedor y
situación de los proveedores radicados
en parís en orden descendiente por
situación.
Select sid, situacion from s where
ciudad=“París” order by situacion desc;
13. Consulta Nº 6
Obtener todas las combinación de
información de proveedores y partes
tales que el proveedor y la parte en
cuestión este situados en la misma
ciudad.
Select * from s,p where s.ciudad =
p.ciudad;
17. Consulta Nº 7
Obtener todas las combinaciones de
información de proveedor y parte donde
la ciudad que el proveedor siga a la
cuidad de la parte en orden alfabético.
Select * from s,p where s.ciudad >
p.ciudad;
20. Consulta Nº 8
Obtener todas las combinaciones de
información de proveedor y parte donde
el proveedor y la parte en cuestión
estén cosituados, pero omitiendo a los
proveedores cuya situación sea 20.
Select * from s,p where s.ciudad =
p.ciudad and s.situacion <> 20;
23. Consulta Nº 9
Obtener todas las combinaciones de
numero de proveedor/numero de parte
tales que el proveedor y la parte en
cuestión estén cosituados.
Select sid, pid from s,p where s.ciudad =
p.ciudad;
25. Consulta Nº 10
Obtener todas las parejas de nombres
de ciudad tales que un proveedor
situado en la primera ciudad suministre
una parte almacenada en la segunda
ciudad.
Select distinct s.ciudad, p.ciudad from s,
spj, p where s.sid = spj.sid and spj.pid =
p.pid;
27. Consulta Nº 11
Obtener todas las parejas de las bases
de datos de numero de proveedor tales
que los dos proveedores estén
cosituados.
Select primera.sid, segunda.sid from s
primera, s segunda where
primera.ciudad = segunda.sid;
29. Funciones agregadas
Count (atributo clave) – Numero de valores
en la columna.
Count (*) – Numero de valores en la
columna, los valores nulos se manejan
igual a los no nulos.
Sum (atributo clave numérico) - Suma de
los valores de la columna.
Avg (Atributo clave numérico) – Promedio
de los valores de la columna.
Max () – Valor mas grande en la columna.
Min () – Valor mas pequeño en la columna.
31. Consulta 2
Obtener el numero total de proveedores
que suministran partes en la actualidad.
Select count (distinct sid) from spj;
32. Consulta 3
Obtener el numero de envíos de la parte
P2.
Select count (*) from spj where pid=‘P2’;
33. Consulta 4
Obtener la cantidad total suministrada
de la parte P2
Select sum(cantidad) from spj where
pid=‘P2’
34. Consulta 5
Obtener para cada parte suministrada el
numero de parte y la cantidad enviada
de esa parte.
Select pid, sum(cantidad) from spj group
by pid;
35. Consulta 6
Obtener los números de todas las
partes suministradas por mas de un
proveedor.
Select pid from spj group by pid having
count(*) > 1;
36. Consulta 7
Obtener todas las partes cuyos nombres
comiencen con “B”.
Select * from p where pnombre like
‘B%’;
37. Consulta 9
Obtener todos los nombres de los
proveedores que suministran la parte
P2.
Select snombre from s where sid in
(select sid from spj where pid = ‘P2’)
38. Consulta 10
Obtener todos los nombres de los
proveedores que suministran la parte P2
Select snombre from s,spj where s.sid =
spj.sid and spj.pid=‘P2’
39. Consulta 11
Obtener los nombres de los
proveedores que suministran por lo
menos una parte roja.
Select distinct s.snombre from s, p, spj
where s.sid=spj.sid and p.pid=spj.pid
and p.color=‘Rojo’
40. Consulta 12
Obtener los números de proveedores
situados en la misma ciudad que el
proveedor “S1”.
Select sid from s where ciudad = (select
ciudad from s where sid=‘S1’)
41. Consulta 13
Obtener los números de proveedores
cuya situación sea menor que el valor
máximo actual de la situación en la tabla
s.
Select sid from s where situacion <
(select max (situacion) from s)
42. Consulta 14
Obtener los nombres de proveedores
que suministran la parte P2.
Select snombre from s where exists
(select * from spj where spj.sid = s.sid
and pid=‘P2’)