Sei sulla pagina 1di 31

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

(UNIVERSIDAD DEL PER, DECANA DE AMRICA)


FACULTAD DE INGENIERIA DE
SISTEMAS E INFORMATICA

Ao de la Diversificacin Productiva y Fortalecimiento de


la Educacin

BASE DE DATOS

Apellidos y Nombres.- Rojas Torrejon Jhonatan Arturo.


Cdigo.- 13200089.
Docente.- Mamani Rodriguez, Zoraida Emperatriz

2015

PRACTICA 1
6.1. Defina los siguientes Trminos.
o

Dominio. Describe un conjunto de posibles valores para un atributo,


es un conjunto de valores, ademas debe de especificarse un formato
o tipo de dato. Por lo cual el dominio tiene un nombre, tipo de dato y
un formato.

Atributo. Son las caractersticas por medio de las cuales se puede


describir una entidad.

N-tuplas. Es una lista ordenada de N valores, por lo que el orden de


valores dentro de una de ellas es importante. Pero a nivel lgico el
orden de los atributos y sus valores no son tan importantes; es decir
N-tuplas es un conjunto de elementos de distinto tipo que se guardan
de forma consecutiva en memoria, donde una tupla es una funcin
finita que mapea, es decir asocia los nombres con algunos valores.

Esquema de relacin. Es un esquema que contiene la definicin


una estructura de una relacin, generalmente relaciones o tablas
una base de datos, determina la identidad de relacin(nombre
relacin) y que tipo de informacin podra ser almacenada dentro
ella (atributos); describe una relacin.

Ejemplar de relacin. Es un conjunto n-tuplas del mismo esquema,


se mide el grado de una relacin por el nmero de atributos de su
esquema y cardinalidad de una relacin al nmero de tuplas que la
forman; se presenta la relacin en forma de tabla, las operaciones
que se puede realizar son insercin, borrado, seleccin, proyeccin,
unin, diferencia, producto cartesiano.

Grado de una Relacin. Se define como el nmero de entidades


que participan en una relacin.

Esquema de base de datos relacional. Es una base de datos que


cumple con el modelo relacional, el cual es el modelo ms utilizado
actualmente para implementar base de datos. Permiten establecer
relaciones entre los datos y a travs de dichas conexiones relacionar
datos en ambas tablas, donde ah proviene el nombre Modelo
Relacional.

de
en
de
de

Ejemplar de base de datos relacional. Coleccin de instancias de


relaciones que verifican las restricciones de integridad.

6.2. Porque no estn ordenadas las tuplas de una relacin.


Una relacin est definida como un conjunto de tuplas. Dado esto los
elementos de un conjunto no guardan un orden entre ellos; por tanto, las
tuplas en una relacin tampoco la tienen. En otras palabras, una relacin no
es sensible al ordenamiento de las tuplas. Sin embargo, en un fichero, los
registros estn almacenados fsicamente en el disco, por lo que siempre hay
establecido un orden entre ellos. De forma anloga, cuando mostramos una
relacin como una tabla, las filas aparecen con un cierto orden.
6.3. Porque no se permiten tuplas repetidas en una relacin.
Porque una relacin est definida como un conjunto de tuplas. Por
definicin, todos los elementos de un conjunto son distintos; por tanto,
todas las tuplas en una relacin tambin deben serlo. Esto significa que dos
tuplas no pueden tener la misma combinacin de valores para todos sus
atributos.
6.4. Qu diferencia hay entre clave y superclave.
Superclave, es un subconjunto de atributos que permite distinguir
unvocamente cada una de las entidades de un conjunto de entidades. Si
otro atributo se une al anterior subconjunto, el resultado seguir siendo una
superclave.
Clave
candidata,
dada
una
superclave,
si sta deja de
serlo
quitando
nicamente
uno
de
los
atributos
que
la
componen,
entonces sta es
una
clave
candidata.
Clave primaria,
es una clave
candidata,
elegida por
el diseador de
la base de
datos, para identificar unvocamente las entidades en un conjunto de
entidades.

La diferencia es que en si una clave (key), nos sirve para relacionar o


identificar de una manera ms precisa a la entidad, ya sea un llave primaria,
o llave secundaria para relacionarlo a otra entidad, y una superclave define
en si a todos los atributos que posee una entidad.
6.5. Porque designamos una de las claves candidatas de una
relacin como clave primaria.
Intuitivamente, una clave candidata permite identificar cualquier tupla de
una relacin, de manera que no sobre ningn atributo para hacer la
identificacin. Habitualmente, una de las claves candidatas de una relacin
se designa clave primaria de la relacin. La clave primaria es la clave
candidata cuyos valores se utilizarn para identificar las tuplas de la
relacin. El diseador de la base de datos es quien elige la clave primaria de
entre las claves candidatas, las claves candidatas no elegidas como
primaria se denominan claves alternativas.
6.6. Analice las caractersticas de las relaciones que las distinguen
de las tablas y archivos ordinarios.
Son varias las caractersticas que diferencian las relaciones de las tablas
corrientes o los ficheros. La primera es que una relacin no es sensible al
orden de las tuplas. La segunda compete a la ordenacin de los atributos en
un esquema de relacin y la ordenacin de valores correspondiente dentro
de una tupla.

6.7. Explique porque pueden ver valores nulos en las relaciones.


Los valores NULL se originaron por las razones de datos indefinidos,
desconocidos o no presentes en un determinado momento. El significado
exacto de un valor NULL controla la forma en que se comporta durante las
operaciones de agregacin o comparacin aritmtica con otros valores.
6.8. Analice las restricciones de integridad de entidades y de
integridad inferencial.
Las restricciones de integridad de entidad declaran que el valor de ninguna
clave principal puede ser NULL, es importante conocer que todas las
restricciones de integridad deben estar especificadas en el esquema de una
base de datos relacional Informalmente, las restricciones de integridad
referencial dicen que una tupla de una relacin que hace referencia a otra
relacin debe hacer referencia a una tupla existente de esa relacin, son
importantes dado que si ocurre un error de este tipo la base de datos
genera fallas en la lectura del sistema.
6.9. Defina las claves externas y para que nos sirve este concepto.
Esta es una clave externa que especifican una restriccin de integridad
referencial entre dos esquemas de relacin R1 y R2. Una foreign key puede
hacer referencia a su propia relacin y es importante ya que no suele

plantear problemas, ademas nos sirve como dato para relacionarse a


diferentes entidades.
6.10. Analice las diversas operaciones de actualizacin de
relaciones y los tipos de restricciones de integridad
Son tres las operaciones de actualizacin. Insertar, nos sirve para insertar
una o ms tuplas nuevas en una relacin; eliminar, sirve para eliminar
tuplas, y modificar sirve para alterar los valores de algunos atributos.
Cuando se aplique operaciones de actualizacin, no se debe violar las
restricciones de integridad, como la restriccin de dominio, pueden
violarse si se proporciona un valor de atributo que no aparezca en el
dominio correspondiente.
La restriccin de clave tambin puede aparecer, al haber llaves primarias
repetidas, la restriccin de entidades si la llave primaria se declara
como nula, y ademas se puede violar la integridad referencial, si
cualquier valor de llave fornea hace referencia a una tupla que no existe en
la relacin dada.
6.11. Menciones las operaciones del algebra relacional y el
propsito de cada una de ellas.

Seleccionar: Selecciona todas las tuplas de una relacin R que


satisfagan la condicin de seleccin.
Proyectar: Produce una nueva relacin con solo algunos atributos y
elimina tuplas repetidas.
Reunin Theta. Produce todas las combinaciones de tuplas R1 y R2
que satisfagan la condicin de reunin.
Equirreunin. Produce todas las combinaciones de tuplas de R1 y
R2 que satisfagan una condicin de reunin que solo tiene
comparaciones de igualdad.
Reunin Natural. Igual que la equirreunion excepto que los
atributos de R2 no se incluye la relacin resultante.
Unin. Produce una relacin que incluye todas las tuplas que estn
en R1 y R2.
Interseccin. Produce una relacin que incluye todas las tuplas que
estn en R1 como en R2, R1 y R2 deben ser compatibles con la unin.
Diferencia. Produce una relacin que estn en R1 menos la que
estn en R2. Debe ser compatible con la unin R1 y R2.
Producto Cartesiano. Produce todas las combinaciones de tuplas
R1xR2.
Divisin. Produce una relacin, dado que los valores de t en
combinacin con todas las tuplas de S deben aparecer en la relacin
R. Dado R(z) / S(x) y t=T(y); y=z-x.

6.12. Que significa compatibilidad con la unin.


Una unin es compatible entre dos relaciones R, S, si ellas poseen el
mismo grado y el dominio del i-simo elemento de la relacin R es el
mismo que el i-simo elemento de la relacin S. Dado esto se tiene que

cumplir en las operaciones de unin, interseccin y diferencia ya que


como se muestra estos deben presentar compatibilidad en dominio y
grado como la unin.
6.13. Analice algunos tipos de consultas en la que es necesario
cambiar los nombres de los atributos para especificar la consulta
sin ambigedad.
Podemos utilizar esta tcnica para renombrar los atributos en las
relaciones intermedias y resultantes, lo que puede resultar til cuando se
emplea junto con operaciones ms complejas como Unin y
Concatenacin. Para renombrar los atributos de una relacin,
simplemente enumeramos los nuevos nombres de atributos dentro de
los parntesis, como puede verse en los siguientes ejemplos.
TEMP <-

JDno=5 (EMPLEADO)

R (NuevoNombre, NuevosApellido, NuevoSueldo) <Apellido1, Sueldo (TEMP).

TNombre,

Si no se realiza un renombrado, los nombres de atributo de la relacin


resultante de una seleccin son los mismos que los de la relacin
original y aparecen en el mismo orden, trayendo como consecuencia una
ambigedad en una consulta.
Para el caso de una operacin Proyeccin la relacin resultante tiene los
mismos nombres de atributo que los indicados en la lista de proyeccin y
estn en el mismo orden en que aparecen en dicha lista.
6.14. Analice los diversos tipos de operaciones Reunin.
Sirve para combinar tuplas relacionadas de dos relaciones en una sola
tupla, esta operacin es muy importante en cualquier base de datos
relacional, la reunin ms comn implica condiciones de reunin con
comparaciones de igualdad exclusivamente, los diversos tipos de reunin
son Equirreunion, se declara el factor que se va igualar para obtener el
resultado en una sola tabla, Reunin Natural, cuando se tienen entre
las relaciones atributos con el mismo nombre y se compara para la
igualdad.
6.15. Qu es la operacin FUNCIN Para qu se utiliza?
Una funcin es una operacin a la que le pasamos uno o ms valores y
nos devuelve otro, es muy til para aquellas operaciones que se repiten
mucho en una web.
6.16. En que se distinguen las operaciones de reunin Externa y
la de Reunin, qu diferencia hay entre la operacin de unin
externa y la de unin.
Una reunin externa es otra versin ms permisiva de la otra. Observe
que puede especificarse una reunin entre una relacin y ella misma
reunin interna es un tipo de operacin de correspondencia y asociacin
definida formalmente como una combinacin de un PRODUCTO. Unin
Externa fue desarrollada para obtener la unin de tuplas de dos

relaciones en el caso de que esas relaciones no sean compatibles con la


unin. A diferencia de Unin, produce una relacin que incluye todas las
tuplas de R1 U R2 y R1 y R2 deben ser de unin compatible.
6.17. Explique las correspondencias entre los elementos del
modelo ER y los del modelo relacional. Indique la forma de
transformar cada uno de los elemento del modelo ER al modelo
relacional.

Dado el modelo ER, la manera de transformar al modelo relacional es


identificando las relaciones que presenta cada una de las entidades, se
identifica claves primarias, forneas, atributos que presentan las
relaciones en el diagrama ER. Como por ejemplo:
En este ejemplo observamos como tenemos dos entidades (cada una con
cuatro atributos) y una relacin 1:M en la que no todos los artculos
deben ser comprados por un cliente sino que daremos de alta el artculo,
a la espera de ser comprado por un cliente, pudiendo existir artculos en
stock que no han sido vendidos nunca. Esta relacin posee dos atributos
propios de la entidad.
CLIENTE:{(TELFONO:
numrico),
numrico), (NOMBRE: texto)}

(DIRECCIN:

texto),

(COD.CLIENTE:

ARTCULOS:{(STOCK: numrico), (DENOMINACIN: texto), (PRECIO: numrico),


(COD.ARTCULO: numrico)}
COMPRA:{CP(CLIENTE:Numrico),(ARTCULO: Numrico) CP,(FECHA_VENTA: Fecha),
(UNID_VENDIDAS: Numrico)}

COMPRA --> CLIENTE --> CLIENTE


COMPRA --> ARTCULO --> ARTCULOS

6.19. Especifique las siguientes consultas en trminos del


esquema de base de datos, empleado algebra relacional
y
lenguaje SQL.
a. PROY_PROD_X

NOMBREP=Producto X

(PROYECTO)

EMPLEADO_DEP5 ND=5 (EMPLEADO)


TRABAJA_MAS EMPLEADO_DEP5
NSS=NSSE,HORAS>10 TRABAJA_EN
TRABAJA_PRODX TRABAJA_MAS
NUMP=NUMEROP PROY_PROD_X
RESULTADO NOMBREP (TRABAJA_PRODX)
b. EMPLEAD_DEP

(NSS,NOMBREP)

NSSE,

NOMBRE_DEPENDIENTE

(DEPENDIENTE)
DEPENDIENTE_PILA EMPLEAD_DEP * EMPLEADO
RESULTADO NOMBREP (DEPENDIENTE_PILA)
c. VIZCARRA (NSSSUPER) NSS ( NOMBREP=Federico,
(EMPLEADO))
EMPLEADO_SUPERV (VIZCARRA * EMPLEADO)
RESULTADO NOMBREP (EMPLEADO_SUPERV)
d. PROYECTO_TRABAJA TRABAJA_EN

NUMP=NUMEROP

T1
(NOMBREP,
TOTALHORAS)
(PROYECTO_TRABAJA)
RESULTADO NOMBREP, TOTALHORAS (T1)

APELLIDO=Vizcarra

PROYECTO

NOMBREP

SUMA

HORAS

e. TRABAJAN (NSS) NSSE (TRABAJAN_EN)


EMPLEADOS_TRABAJ TRABAJAN * EMPLEADO
RESULTADO NOMBREP (EMPLEADOS_TRABAJ)
f. TRABAJAN (NSS) NSSE (TRABAJAN_EN)
EMPLEADOS_TRABAJ TRABAJAN * EMPLEADO
EMPLEADO_TOTAL NSS (EMPLEADO)
EMPLEADOS_NOTRAB EMPLEADO_TOTAL - EMPLEADOS_TRABAJ
RESULTADO NOMBREP (EMPLEADOS_NOTRAB * EMPLEADO)
g. CDEPARTAMENTO
(NOMBRED,ND)

NOMBRED,NUMEROD
(DEPARTAMENTO)
DEPARTAMENTO_EMP (CDEPARTAMENTO * EMPLEADO)
R
(NOMBRE,
SALARIOMED)

(DEPARTAMENTO_EMP)
RESULTADO NOMBRE, SALARIOMED (R)
h. EMPLEADO_SEXOF

SEXO=F

NOMBRED

PROMEDIO

SALARIO

(EMPLEADO)

TSALARIO_F
(SEXO,
SALARIOMED)
(EMPLEADO_SEXOF)
RESULTADO SALARIOMED (TSALARIO_F)

SEXO

PROMEDIO

i. DEP_NOHIGUERAS LUGARD HIGUERAS (LUGARES_DEPTOS)


PROYECTO_HIGUERAS LUGARP=HIGUERAS (PROYECTO)

SALARIO

PROYECTO_CONDIC (NUMP)
PROYECTO_HIGUERAS

NUMEROP

(DEP_NOHIGUERAS

NUMEROD=NUMD

TRABAJAN (NSS) PROYECTO_CONDIC * TRABAJAN_EN


RESULTADO NOMBREP, APELLIDO, DIRECCION (TRABAJAN * EMPLEADO)
j. GTES (NSS) NSSGTE (DEPARTAMENTO)
DEPEND_EMPLEADO (NSS) NSSE (DEPENDIENTE)
GTES_NODEPENDIENTES (GTES - DEPEND_EMPLEADO)
RESULTADO APELLIDO (GTES_NODEPENDIENTES * EMPLEADO)

DESARROLLO EN SQL.

Problema a
SELECT e.NOMBREP, e.APELLIDO
FROM EMPLEADO e, PROYECTO p, TRABAJA_EN t
WHERE NSS=NSSE AND NUMP=NUMEROP AND
p.NOMBREP='ProductoX'

ND=5

AND

Problema b
SELECT e.NOMBREP
FROM EMPLEADO e
WHERE e.NSS IN (SELECT NSSE
FROM DEPENDIENTE
WHERE

NSSE=NSS

AND

NOMBRE_DEPENDIENTE=NOMBREP)

Problema c
SELECT e.NOMBREP
FROM EMPLEADO e
WHERE e.NSSSUPER IN (SELECT NSS
FROM EMPLEADO
WHERE
NOMBREP='Federico'
APELLIDO='Vizcarra')

Problema d
SELECT NOMBREP,sum(HORAS)
FROM TRABAJA_EN INNER JOIN PROYECTO
ON NUMP=NUMEROP
GROUP BY NOMBREP

Problema e
SELECT DISTINCT NOMBREP
FROM TRABAJA_EN INNER JOIN EMPLEADO
ON NSS=NSSE

Problema f
SELECT DISTINCT NOMBREP

AND

FROM EMPLEADO
WHERE NSS NOT IN (SELECT NSSE
FROM TRABAJA_EN);

Problema g
SELECT NUMEROD,avg(SALARIO)
FROM EMPLEADO INNER JOIN DEPARTAMENTO
ON ND=NUMEROD
GROUP BY ND

Problema h
SELECT avg(SALARIO)
FROM EMPLEADO
GROUP BY SEXO
HAVING SEXO='F'

Problema i
select NOMBREP,DIRECCION
from trabaja_en,empleado
where NUMP in(
SELECT distinct NUMEROP
FROM lugares_deptos
inner join proyecto ON LUGARD!='Higueras' AND LUGARP='Higueras'
AND NUMEROD=NUMD
)
and nsse=nss

Problema j
SELECT APELLIDO
from empleado
where NSS <> ALL(
SELECT distinct NSSGTE
FROM departamento inner join dependiente ON
NSSGTE=NSSE
)

PRACTICA 2
CONSULTAS SENCILLAS

6.1.
SELECT JCOD, JNOMBRE, CIUDAD
FROM J;
6.2.
SELECT JCOD, JNOMBRE, CIUDAD
FROM J
WHERE CIUDAD = Londres;
6.3.
SELECT SCOD
FROM SPJ
WHERE JCOD='J1'
ORDER BY SCOD
6.4.
SELECT SCOD, PCOD, JCOD, CANT
FROM SPJ
WHERE CANT>300
AND CANT<750
6.5.
SELECT DISTINCT COLOR, CIUDAD
FROM P

REUNIONES
6.6.
SELECT sCOD, PCOD, jCOD
FROM S, P, J
WHERE S.CIUDAD=P.CIUDAD
AND P.CIUDAD= J.CIUDAD;
6.7.
SELECT sCOD, PCOD, jCOD
FROM S, P, J
WHERE NOT (S.CIUDAD=P.CIUDAD AND P.CIUDAD= J.CIUDAD);
6.8.
SELECT sCOD, PCOD, jCOD
FROM S,P,J
WHERE S.CIUDAD <> P.CIUDAD
AND P.CIUDAD <> J.CIUDAD
AND J.CIUDAD <> S.CIUDAD;
6.9.
SELECT DISTINCT PCOD
FROM SPJ, S
WHERE SPJ.SCOD = S.SCOD
AND CIUDAD = LONDRES

6.10
SELECT DISTINCT PCOD
FROM SPJ, S, J
WHERE SPJ. SCOD = S.SCOD
AND SPJ.JCOD= J.JCOD
AND S.CIUDAD = LONDRES
AND J.CIUDAD = LONDRES;
6.11.
SELECT DISTINCT s.CIUDAD, J.CIUDAD
FROM S, SPJ, J
WHERE S.Scod=SPJ.Scod
AND SPJ.Jcod = J.Jcod
6.12.
SELECT DISTINCT PCOD
FROM SPJ, S, J
WHERE SPJ.SCOD = S.SCOD
AND SPJ.JCOD = J.JCOD
AND S.CIUDAD = J.CIUDAD;
6.13.
SELECT DISTINCT *
FROM SPJ, S, J, P
WHERE SPJ.JCOD = J.JCOD
AND SPJ.PCOD = P.pCOD
AND P.CIUDAD <> s.CIUDAD;

6.15
SELECT count(jcod)
FROM SPJ
WHERE SCOD = 's1';
6.16
SELECT Sum (CANT)
FROM SPJ
WHERE Pcod = 'P1'

AND Scod = 'S1';


6.17
SELECT Pcod, Jcod, Sum (CANT)
FROM SPJ
GRUOP BY Pcod, Jcod;
6.18
SELECT DISTINC Pcod
FROM SPJ
GROUP BY Pcod, Jcod
HAVING avg (CANT) > 320;
6.19
SELECT Scod, Pcod, Jcod, CANT
FROM SPJ
WHERE CANT IS NOT NULL;
6.20
SELECT Jcod, CIUDAD
FROM J
WHERE CIUDAD LIKE '_o%';

SUBCONSULTAS
6.21
SELECT JNOMBRE
FROM J
WHERE JCOD IN (SELECT JCOD
FROM SPJ
WHERE SCOD = 'S1');
6.22.
SELECT color
FROM P
WHERE pCOD IN (SELECT pCOD
FROM SPJ
WHERE sCOD='S1')

6.23.
SELECT DISTINCT PCOD
FROM SPJ
WHERE PCOD = ANY (
SELECT PCOD
FROM J
WHERE J.JCOD=SPJ.JCOD
AND CIUDAD=LONDRES);
6.24.

SELECT DISTINCT JCOD


FROM J
WHERE JCOD IN (
SELECT JCOD
FROM SPJ
WHERE SCOD=S1);
6.25.
SELECT DISTINCT SCOD
FROM S
WHERE SCOD IN (
SELECT SPJ.SCOD
FROM SPJ, P
WHERE SPJ.PCOD=P.PCOD
AND SPJ.SCOD=S.SCOD
AND COLOR=ROJO);
6.26.
SELECT DISTINCT SPJ.SCOD
FROM S,SPJ
WHERE SITUACION < ANY (
SELECT SITUACION
FROM S
WHERE SCOD='S1'
)
AND SPJ.SCOD=S.SCOD
6.27.
SELECT JCOD
FROM J
WHERE CIUDAD IN (
SELECT MIN(CIUDAD)
FROM J,SPJ
WHERE SPJ.JCOD=J.JCOD
)

6.28.
SELECT JCOD
FROM SPJ
WHERE PCOD='P1'
GROUP BY JCOD
HAVING AVG(CANT)>(
SELECT MAX(CANT)
FROM SPJ
WHERE SPJ.JCOD='J1'
)
6.29.

SELECT SCOD
FROM SPJ A
WHERE PCOD='P1'
AND CANT>(
SELECT AVG(CANT)
FROM SPJ B
WHERE B.PCOD='P1'
AND B.JCOD=A.JCOD
)
EXISTS (EXISTE)
6.30.
SELECT DISTINCT JNOMBRE
FROM J
WHERE EXISTS(
SELECT 1
FROM SPJ
WHERE SPJ.JCOD=J.JCOD
AND SCOD='S1' );

6.31.
SELECT COLOR
FROM P
WHERE EXISTS (SELECT 1
FROM SPJ
WHERE SPJ.PCOD=P.PCOD
AND SCOD='S1')
6.32.
SELECT JCOD
FROM J
WHERE JCOD NOT IN (
SELECT JCOD
FROM SPJ, P, S
WHERE COLOR='ROJO'
AND S.CIUDAD='LONDRES'
AND SPJ.SCOD=S.SCOD
AND SPJ.PCOD=P.PCOD)
6.33.
SELECT DISTINCT SPJ1.JCOD
FROM SPJ SPJ1
WHERE NOT EXISTS (
SELECT *
FROM SPJ SPJ2
WHERE SPJ1.JCOD = SPJ2.JCOD
AND SPJ2.SCOD <> S1);
6.34.
SELECT PCOD
FROM SPJ SPJ1
WHERE NOT EXISTS (
SELECT *

FROM J
WHERE J.CIUDAD='LONDRES'
AND NOT EXISTS (
SELECT * FROM SPJ SPJ2
WHERE SPJ2.JCOD = J.JCOD
AND SPJ2.PCOD = SPJ1.PCOD
))
6.35.
SELECT DISTINCT SPJ1.sCOD
FROM SPJ SPJ1
WHERE NOT EXISTS (
SELECT *
FROM J
WHERE NOT EXISTS (
SELECT * FROM SPJ SPJ2
WHERE SPJ2.jCOD = J.jCOD
AND SPJ2.pCOD = SPJ1.pCOD
AND SPJ2.sCOD = SPJ1.sCOD));
6.36.
SELECT DISTINCT *
FROM SPJ SPJ1
WHERE NOT EXISTS (
SELECT *
FROM SPJ SPJ2
WHERE SPJ2.sCOD = 'S1'
AND NOT EXISTS (
SELECT *
FROM SPJ SPJ3
WHERE SPJ3.jCOD = SPJ1.jCOD
AND SPJ3.pCOD = SPJ2.pCOD));

6.41.
SELECT S.CIUDAD
FROM S,SPJ
WHERE SPJ.SCOD=S.SCOD
UNION
SELECT P.CIUDAD
FROM P,SPJ
WHERE SPJ.PCOD=P.PCOD
UNION
SELECT J.CIUDAD
FROM J,SPJ
WHERE SPJ.JCOD=J.JCOD;
6.42.
SELECT P.COLOR
FROM P

UNION
SELECT P.COLOR
FROM P;
Resultado de la eleccin.
Rojo
Verde
Azul
6.43.
UPDATE P SET COLOR='GRIS' WHERE COLOR='ROJO';
6.44.
DELETE FROM J
WHERE JCOD IN (SELECT JCOD
FROM SPJ WHERE CANT=0);

HOJA 3
1. Defina los trminos siguientes
a. Catlogo. Podemos describir un catlogo como una coleccin de
esquemas. Otra manera de ver a un catlogo es como una estructura
jerrquica donde el catlogo es el objeto primario y los esquemas como
los objetos secundarios.
b. Propietario de esquemas.
Es el que otorgar privilegios de acceso y actualizacin de la base de
datos definida en el esquema a otros usuarios del sistema.
c. Definicin de Dominio. Conjunto de valores posibles para un atributo.
d. Literal cadena de caracteres. Es una cadena que vienen
representadas entre comillas simples (''). Otro punto bastante
importante es la insensibilidad de MySQL ante las maysculas y
minsculas, a no ser que se lo expresemos explcitamente con la funcin
BINARY.
e. Operaciones de comparacin. Son aquellos operadores destinados a
comparar dos expresiones o valores y que tienen como resultado un
valor booleano, true o false, aunque tambin puede devolver NULL
f. Conectores booleanos. Sirven para conectar palabras o frases entre
ms de un campo de texto, o utilizar operadores booleanos para
conectar palabras o frases dentro de un campo de texto.
g. Consulta externa. Es una instruccin de subconsulta.
h. Consulta correlacionada. Son consultas que no hacen referencia a
columnas de tablas de su clusula FROM.
i. Funcin integrada. Son funciones del sistema que permiten hacer
diferentes operaciones
j. DISTINCT. Se especifica que los registros con ciertos datos duplicados
sean obviadas en el resultado
k. GROUP BY. Agrupa los datos de la tabla origen y produce una nica fila
resumen por cada grupo formado
l. INSERT. Sirve para ingresar registros en una tabla
m. DELETE. Sirve para eliminar registros de una tabla
n. SQL empotrado (embebido). Una base de datos embebida es aquella
que no inicia un servicio en nuestra mquina independiente de la
aplicacin, pudindose enlazar directamente a nuestro cdigo fuente o
utilizarse en forma de librera
o. Lenguaje anfitrin. Un lenguaje anfitrin es el que permite que otro
lenguaje interacte con l
p. Cursor. Se refiere a una estructura de control utilizada para el recorrido
(y potencial procesamiento) de los registros del resultado de una
consulta.
q. FETCH. Son operaciones de recuperacin
r. Vista. Una vista de base de datos es un resultado de una consulta SQL
de una o varias tablas; tambin se le puede considerar una tabla virtual.
s. Especificacin de consulta. Se refiere a que se puede realizar
consultas a bases de datos relacionales desde otro programa
t. Esquema de informacin. Es la base de datos de informacin, que
almacena informacin acerca de las otras bases de datos
u. Valor por defecto. Es un valor fijo sobre el cual nosotros queremos
obtener informacin

v. Clave externa recursiva. Una clave externa que referencia a su propia


relacin
w. Unin compatible. Son dos o ms relaciones que tienen columnas
equivalentes en nmero y dominios.
x. UNION. Permite unir dos o ms conjuntos de resultados en uno detrs
del otro como si se tratase de una nica tabla.
y. EXCEPT. Devuelve filas distintas de la consulta de entrada izquierda
que no son de salida en la consulta de entrada derecha.
z. NATURAL JOIN. Compara por cuenta propia la equivalencia de
columnas con el mismo nombre y tipo de dato entre dos o ms tablas
para hacer la combinacin de ambas
2.

Describa brevemente los primeros desarrollos de sql Qu


fabricante fue primero en lanzar una versin comercial de SQL?
Describa varios sistemas en los cuales est disponible SQL

La historia de SQL empieza en 1974 con la definicin, por parte de Donald Chamberlin y de
otras personas que trabajaban en los laboratorios de investigacin de IBM, de un lenguaje para
la especificacin de las caractersticas de las bases de datos que adoptaban
el modelo relacional. Este lenguaje se llamaba SEQUEL y se implement en un prototipo
llamado SEQUEL-XRM entre 1974 y 1975. Las experimentaciones con ese prototipo
condujeron, entre 1976 y 1977, a una revisin del lenguaje, que a partir de ese momento
cambi de nombre por motivos legales, convirtindose en SQL. En 1986, el ANSI adopt SQL
(sustancialmente adopt el dialecto SQL de IBM) como estndar para los lenguajes
relacionales y en 1987 se transform en estndar ISO. Esta versin del estndar va con el
nombre de SQL/86. En los aos siguientes, ste ha sufrido diversas revisiones que han
conducido primero a la versin SQL/89 y, posteriormente, a la actual SQL/92.

3.
a- Cules son las rdenes de SQL-92nque se usan para definir un
esquema de una base de datos?
o Para crear bases de datos, tablas, dominios, aserciones y vistas
se utilice la sentencia CREATE.
o Para modificar tablas y dominios se utilice la sentencia ALTER.
o Para borrar bases de datos, tablas, dominios, aserciones y
vistas se utilice la sentencia DROP.
b- Cmo se puede definir una clave de una sola columna o de
multicolumnas?
o Lo primero que tenemos que hacer es decidir qu nombre
queremos poner a la tabla (NOMBRE_TABLA).
o Despus, iremos dando el nombre de cada uno de los atributos
que formarn las columnas de la tabla (NOMBRE_COLUMNA).
o A cada una de las columnas le asignaremos un tipo de datos
predefinido o bien un dominio definido por el usuario. Tambin
podremos dar definiciones por defecto y restricciones de columna.
o Una vez definidas las columnas, slo nos quedar dar las
restricciones de tabla.

c- Indique 10 tipos de datos diferentes disponibles en SQL-92

4.

SMALLINT Nmeros enteros pequeos. REAL Nmeros con coma


flotante con precisin predefinida.
FLOAT (precisin) Nmeros con coma flotante con la precisin
especificada.
DOUBLE PRECISION Nmeros con coma flotante con ms
precisin predefinida que la del tipo REAL.
DATE Fechas. Estn compuestas de: YEAR ao, MONTH mes, DAY
da.
TIME Horas. Estn compuestas de HOUR hora, MINUT minutos,
SECOND segundos.
DECIMAL (precisin, escala) Nmero decimales con tantos dgitos
como indique la precisin y tantos decimales como indique la
escala.
INTEGER Nmeros enteros.
BIT (longitud) Cadenas de bits de longitud fija.
BIT VARYING (longitud) Cadenas de bits de longitud variables.
NUMERIC (precisin, escala) Nmero decimales con tantos dgitos
como indique la precisin y tantos decimales como indique la
escala.

Describa lo que puede aparecer en cada una de las clausulas


siguientes de SQL
o SELECT, muestra una lista de los campos que contienen datos de
inters, es de carcter obligatorio esta clusula.
o FROM, Define las tablas de las que se van a seleccionar las columnas
en la clusula SELECT. Tambin es obligatorio que aparezca.
o WHERE, Especifica los criterios de campo que cada registro debe
cumplir para poder ser incluido en los resultados, es decir proponer la
condicin que han de cumplir todas las filas para salir en el resultado
de la consulta.
o ORDER BY, Especfica la forma de ordenar los resultados segn el
atributo a utilizar.
o GROUP BY, Nos permite agrupar las filas resultado de una consulta en
conjuntos y aplicar funciones sobre esos conjuntos de filas.
o HAVING, Contiene funciones de agregado es decir GROUP BY,
especifica las condiciones que se aplican a los campos que se resumen
en la instruccin SELECT.

5. Operaciones.
o UNION. Combina los resultados de dos o ms consultas en un solo
conjunto de resultados que incluye todas las filas que pertenecen a
las consultas de la unin.
o INTERSECT. Devuelve filas distintas que son de salida en las
consultas de entrada izquierda y derecha.

o
o

o
o

EXCEPT. Devuelve filas distintas al comparar los resultados de dos


consultas.
NATURAL JOIN. Enlaza automticamente nombres de columna de la
consulta de origen que coinciden con nombres de columna del
modelo.
JOIN USING. Las columnas no aparecen duplicadas.
JOIN ON. Concatenacin basada en la condicin

6. Cmo se usan las especificaciones de consulta en cada una de las


operaciones de modificacin de datos?
Este tipo de operacin se hace mediante comandos destinados a modificar
tu base de datos, entre ellos se encuentra el borrado, la insercin y
actualizacin. La opcin de borrado expresa la manera que pueda borrar
slo las tuplas completas, la insercin se encarga de insertar de una o ms
tuplas en una relacin y la actualizacin es para cambiar el valor dentro de
una tupla sin cambiar todos los valores de la misma.
7. Describa como trabaja el cursor
El cursor es una facilidad del SQL incrustado en la que se almacenan los
resultados de una consulta SQL para su posterior procesamiento, el cursor
permitir recorrer fila a fila, leer y eventualmente modificar dicho conjunto
de resultados.
Es as como nos ayuda a realizar operaciones que de otro modo seran ms
complejas o irrealizables. En el siguiente ejemplo se muestra que
cursor_edad est como cursor dado esto no almacena los datos si no que
apunta hacia su direccin de memoria.
DECLARE cursor_edad CURSOR FOR
SELECT EDAD FROM CLIENTE
WHERE NOMBRE LIKE 'a%';
8. Qu es una vista de una base de datos y como se puede usar?
La vista es un objeto de la base de datos que es un acceso recurrente a tu
tabla, que se genera por dos razones principales para tener seguridad por si
quieres ocultar alguna informacin de la tabla adems de que es solo una
consulta, por lo tanto no puedes modificar los datos de la tabla. Y la
segunda razn es por si tienes una consulta que utilizas mucho, la guardas
como vista y puedes tenerla disponible en cualquier momento. En s
tambin es conocida como una tabla temporal ya que solo se genera si la
tabla es consultada.
CREATE VIEW emp28
AS
SELECT nombre, edad, sueldo
FROM EMPLEADO
WHERE sexo = 'm'
y para ver su contenido se realiza SELECT * FROM emp28;

9. Describa como se puede usar SQL con el esquema de informacin


para obtener informacin sobre una base de datos
La obtencin de informacin de esquema de una base de datos se efecta
con el proceso de deteccin de esquemas. La deteccin de esquemas
permite que las aplicaciones soliciten a los proveedores administrados que
busquen y devuelvan informacin acerca del esquema de base de datos,
tambin conocido como metadatos, de una base de datos dada. Los
diferentes elementos del esquema de base de datos, como tablas, columnas
y procedimientos almacenados, se exponen
a travs Datos
de colecciones
de
a. Contiene
bsicos o reales
Alias
esquemas. Cada coleccin de esquemas contiene
diversa
informacin
b. Nombre
alternativo
que se de
le da a una
esquema
relativa
al
proveedor
que
se
est
utilizando.
Reunin ON
relacin
c. Lista las tablas existentes que son
referidas por la consulta
d. Evala verdadero si el conjunto
Producto Cartesiano
resultante es no vaco
Consulta no relacionada
e. Da la condicin para seleccionar filas
de las tablas identificadas
Operador EXISTS
f. Una funcin integrada
g. Consulta que involucra a solo una tabla
Definicin de esquema
de la base de datos
Restriccin
h. Operacin que cambia los valores de
PAGINA 248
las columnas en las filas
Clusula HAVING
i.
Evala a verdadero si es conjunto
1. Conecte cada trmino con su definicin
Reunin USING
resultante es vaco
j.
Provoca que e SGBD procese la
Consulta simple
consulta de un cursor y almacene el
Operador NOT EXISTS
resultado en el cursor
k. Resultado de parear cada fila en una
INTERSECT
tabla con todas las filas en otra tabla
l. Su valor no depende de ninguna
Instruccin de sealizacin
consulta externa
Tabla base
m. Descripcin de una base de datos al
SGBD
Carcter comodn (wild char)
n. Pone condiciones sobre los grupos
Clausula WHERE
o. Seal de comienzo o fin de un conjunto
de instrucciones SQL
Abrir cursor
p. Puede tener entradas duplicadas
q. Identifica las columnas que se desean
Multiconjunto
en la consulta
Funcin de conjunto
r. Informacin descriptiva sobre las bases
de datos
Metadato
s. Una consulta dentro de una consulta
UPDATE
t. Una regla que restringe los valores en
una base de datos
Subconsulta
u. Smbolos especiales que valen por una
cadena de caracteres cualesquiera
Clausula SELECT
v. Operacin que conecta las relaciones
cuando las columnas comunes
designadas tienes iguales valores
w. Operacin que conecta las relaciones
cuando ocurre una condicin
x. Operacin que crea el conjunto de
interseccin de dos relaciones
Clausula FROM

3.-Escriba las ordenes SQL para crear un esquema de base de datos para el
siguiente esquema relacional
CREATE DATABASE EMBARCADERO2;
USE EMBARCADERO2;
CREATE TABLE CLIENTE
(ID_CLIENTE INTEGER NOT NULL PRIMARY KEY
CHECK(ID_CLIENTE>100 AND ID_CLIENTE<10000),
NOMB_CLIENTE CHAR(30),
RENTA_ANUAL INTEGER DEFAULT 20000,
TIPO_CLIENTE CHAR(20)
CHECK (TIPO_CLIENTE IN('FABRICANTE','MAYORISTA','MINORISTA')));
CREATE TABLE EMBARQUE
(EMBARQUE_NUM INTEGER not null ,
ID_CLIENTE INTEGER ,
PESO INTEGER DEFAULT 10
CHECK(PESO<1000),
CAMION_NUM INTEGER ,
DESTINO CHAR(30),
FECHA_EMBARQUE DATE,
primary key(embarque_num),
FOREIGN KEY(ID_CLIENTE) REFERENCES CLIENTE(ID_CLIENTE)
ON DELETE CASCADE,
FOREIGN KEY(CAMION_NUM) REFERENCES CAMION(CAMION_NUM)
ON DELETE SET NULL,
FOREIGN KEY(DESTINO) REFERENCES CIUDAD(NOMB_CIUDAD)
ON DELETE SET NULL
)
;
CREATE TABLE CAMION
(CAMION_NUM INTEGER NOT NULL PRIMARY KEY,
NOMB_CHOFER CHAR(30)

);
CREATE TABLE CIUDAD
(
NOMB_CIUDAD CHAR(30) not null ,
POBLACION INTEGER,
primary key(nomb_ciudad)
);
INSERT INTO embarque
VALUES (100,200,200,200,'SIOUX CITY','1985/01/01');
INSERT INTO embarque
VALUES (200,200,200,300,'SIOUX CITY','1985/01/01');
INSERT INTO embarque
VALUES (400,300,200,200,'SIOUX CITY','1985/01/01');
INSERT INTO embarque
VALUES (600,400,200,300,'TOKYO','1985/01/01');
INSERT INTO embarque
VALUES (800,300,0,300,'TOKYO','1985/01/01');
INSERT INTO embarque
VALUES (900,200,100,300,'SAN FRANCISCO','1985/01/01');
INSERT INTO embarque
VALUES (150,500,100,300,'INVERNALIA','1985/01/01');
INSERT INTO CLIENTE
VALUES (200,'JOSE',10000,'FABRICANTE');
INSERT INTO CLIENTE
VALUES (300,'CARLOS',10000,'FABRICANTE');
INSERT INTO CLIENTE
VALUES (400,'PEPE',10000,'FABRICANTE');
INSERT INTO CLIENTE
VALUES(500,'JORGE',25000000,'MAYORISTA');
INSERT INTO CAMION
VALUES (200,'FAPENCIO');
INSERT INTO CAMION
VALUES (300,'JOFREY');
INSERT INTO ciudad
VALUES ('SIOUX CITY',1000);
INSERT INTO ciudad
VALUES('TOKYO',2000);
INSERT INTO CIUDAD
VALUES('SAN FRANCISCO',3000);
INSERT INTO CIUDAD
VALUES('INVERNALIA',2000000);

4. Consultas Simples
a. Cul es el nombre del cliente 433?
SELECT NOMB_CLIENTE
FROM CLIENTE
WHERE ID_CLIENTE=43

b. Cul es la ciudad destino del embarque #3244?


SELECT E.DESTINO
FROM EMBARQUE E, CIUDAD C
WHERE E.DESTINO=C.NOMB_CIUDAD
AND E.EMBARQUE_NUM=3244
c. Cules son los nmeros de los camiones que han llevado
paquetes(embarques) por encima de las 100 libras
SELECT CAMION_NUM
FROM EMBARQUE
WHERE PESO>100
d. D todos los datos de los embarques de mas de 20 libras
SELECT
EMBARQUE_NUM,ID_CLIENTE,PESO,CAMION_NUM,DESTINO,FECHA_EMBARQ
UE
FROM EMBARQUE
WHERE PESO>20
e. Cree una lista por orden alfabtico de los clientes con renta
anual de mas de $10 millones
SELECT NOMB_CLIENTE ,ID_CLIENTE ORDER BY NOMB_CLIENTE ASC
FROM CLIENTE
WHERE RENTA_ANUAL>10000000
f. Cul es el ID del cliente Wilson Brothers
SELECT ID_CLIENTE
FROM CLIENTE
WHERE NOMB_CLIENTE=WILSON BROTHERS
g. D los nombres y la renta promedio mensual de los clientes que
tienen renta anual que excede los 5 millones, pero que es menor de
los $10 millones

SELECT NOMB_CLIENTE, RENTA_ANUAL/12


FROM CLIENTE
WHERE RENTA_ANUAL>5000000 AND RENTA_ANUAL<10000000
h. D los IDs de los clientes que han enviado paquetes a Chicago
,St Louis o Baltimore
SELECT ID_CLIENTE

FROM EMBARQUE
WHERE DESTINO='CHIGACO'OR ' ST LOUIS' OR 'BALTIMORE';
i. D los nombres de los clientes que han enviado embarques a las
ciudades cuyo nombre empieza con C
SELECT C.NOMB_CLIENTE
FROM EMBARQUE E, CLIENTE C
WHERE
E.ID_CLIENTE=C.ID_CLIENTE
AND
DESTINO LIKE 'C%';
j. D los nombres de los clientes que han enviado embarques a las
ciudades cuyo nombre termina con City
SELECT C.NOMB_CLIENTE
FROM EMBARQUE E ,CLIENTE C
WHERE
E.ID_CLIENTE=C.ID_CLIENTE
AND
DESTINO LIKE '%CITY';
k. D los nombres de lo clientes que tienen una D como tercera
letra del nombre
SELECT C.NOMB_CLIENTE
FROM EMBARQUE E, CLIENTE C
WHERE
E.ID_CLIENTE=C.ID_CLIENTE
AND
DESTINO LIKE '__D%';
l. D los nombres de todos los clientes que sean minoristas
SELECT C.NOMB_CLIENTE
FROM EMBARQUE E,CLIENTE C
WHERE E.ID_CLIENTE=C.ID_CLIENTE
AND
TIPO_CLIENTE='MINORISTA';

5. Reuniones
a. Cmo se llaman los clientes que han enviado paquetes a Sioux
City?
SELECT C.NOMB_CLIENTE,E.DESTINO
FROM EMBARQUE E INNER JOIN CLIENTE C
ON (E.ID_CLIENTE=C.ID_CLIENTE)
AND E.DESTINO='SIOUX CITY';
b. A cuales destinos han hecho envos las compaas con renta
anual menor del milln

SELECT C.NOMB_CLIENTE, C.RENTA_ANUAL, E.DESTINO


FROM CLIENTE C INNER JOIN EMBARQUE E
ON (C.ID_CLIENTE=E.ID_CLIENTE)
AND C.RENTA_ANUAL<1000000;
c. Cules son los nombres y las poblaciones de las ciudades que
han recibido embaques que poseen ms de 100 libras
SELECT C.NOMB_CIUDAD,C.POBLACION,E.PESO
FROM CIUDAD C INNER JOIN EMBARQUE E
ON(C.NOMB_CIUDAD=E.DESTINO)
AND E.PESO>100;
d. Cules son los cliente que tienen mas de $5 millones en renta
anual y que han enviado embarques de menos de 1 libra ?
SELECT C.NOMB_CLIENTE,E.PESO,C.RENTA_ANUAL
FROM EMBARQUE E INNER JOIN CLIENTE C
ON(E.ID_CLIENTE=C.ID_CLIENTE)
AND C.RENTA_ANUAL>5000000
AND E.PESO<1;
e. Quines son los clientes qu tienen sobre los $5 millones en
renta anual y que han enviado embarques a San Francisco?
SELECT C.NOMB_CLIENTE,E.PESO,E.DESTINO
FROM EMBARQUE E INNER JOIN CLIENTE C
ON(E.ID_CLIENTE=C.ID_CLIENTE)
AND C.RENTA_ANUAL>5000000
AND (E.DESTINO='SAN FRANCISCO' OR E.PESO<1);
f. Quines son los choferes que han conducido embarques de
clientes que tienen renta anual sobre los $20 millones a ciudades
con poblacin por encima del milln?
SELECT
E.EMBARQUE_NUM,CA.NOMB_CHOFER,CL.NOMB_CLIENTE,CL.RENTA_ANUAL,CI.NOMB_CIUDAD,CI.POBLACI
ON

FROM EMBARQUE E INNER JOIN CAMION CA INNER JOIN CLIENTE CL INNER


JOIN CIUDAD CI
ON(E.ID_CLIENTE=CL.ID_CLIENTE)
AND E.DESTINO=CI.NOMB_CIUDAD
AND E.CAMION_NUM=CA.CAMION_NUM
AND CL.RENTA_ANUAL>20000000
AND CI.POBLACION>1000000;
6. SUBCONSULTAS.
a. Indique las ciudades que han recibido embarques de clientes
que tienen ms de 15 millones de renta anual.
SELECT DISTINCT (DESTINO)
FROM EMBARQUE
WHERE ID_CLIENTE IN (SELECT ID_CLIENTE
FROM CLIENTE
WHERE RENTA_ANUAL>15000000);

b. Indique los nombres de los choferes que han transportado


embarques que pesan ms de 100 libras.
SELECT NOMBRE_CHOFER
FROM CAMION
WHERE NROCAMION IN (SELECT NRO_CAMION
FROM EMBARQUE
WHERE PESO>100)
c. Indique el nombre y la renta anual de los clientes que han
enviado embarques que pesan ms de 100 libras.
SELECT NOMBRE_CLIENTE FROM CLIENTE
WHERE ID_CLIENTE
IN (SELECT ID_CLIENTE FROM EMBARQUE
WHERE PESO>100);

7. NOT EXISTS
a. Indique los clientes que han tenido embarque transportados
por cada camin
SELECT E.ID_CLIENTE
FROM EMBARQUE E
WHERE EXISTS (SELECT *
FROM CAMION C
WHERE C.CAMION_ID=E.CAMION_ID);
b. Indique las ciudades que han recibido embarques de todos los
clientes
SELECT CIU.NOMB_CIUDAD
FROM CIUDAD CIU
WHERE NOT EXISTS (
SELECT E.DESTINO
FROM EMBARQUE E
WHERE E.DESTINO=CIU.NOMB_CIUDAD
AND NOT EXISTS (
SELECT CLI.ID_CLIENTE
FROM CLIENTE CLI
WHERE CLI.ID_CLIENTE=E.ID_CLIENTE));

c. Indique los choferes que han transportado embarques a cada


una de las ciudades
SELECT C.NOMB_CHOFER, CAMION_ID
FROM CAMION C
WHERE EXISTS (SELECT E.CAMION_ID
FROM EMBARQUE
WHERE C.CAMION_ID=E.CAMION_ID);

8. FUNCIONES INTEGRADAS
a. SELECT AVG(PESO)
FROM EMBARQUE;
b. SELECT AVG(PESO)
FROM EMBARQUE
WHERE DESTINO = 'ATLANTIDA';
c. SELECT COUNT(*)
FROM EMBARQUE E JOIN CLIENTE C ON (E.ID_CLIENTE =
C.ID_CLIENTE)
WHERE C.ID_CLIENTE = 433;

d. SELECT MIN(POBLACION), MAX(POBLACION)


FROM CIUDAD;
e. SELECT SUM(PESO)
FROM EMBARQUE E JOIN CAMION C ON E.CAMION_NUM =
C.CAMION_NUM
WHERE CAMION_NUM = 82;
f. SELECT ID_CLIENTE, NOMB_CLIENTE
FROM CLIENTE
WHERE ID_CLIENTE IN (SELECT ID_CLIENTE, NOMB_CLIENTE
FROM CLIENTE
WHERE CLIENTE.RENTA_ANUAL > 0)
g. SELECT CL.NOMB_CLIENTE
FROM CLIENTE CL
WHERE EXISTS (SELECT *
FROM EMBARQUE E
WHERE (E.ID_CLIENTE = CL.ID_CLIENTE AND
E.PESO>25));
h. SELECT DISTINCT CL.NOMB_CLIENTE
FROM CLIENTE CL, EMBARQUE E
WHERE EXISTS (SELECT *
FROM CIUDAD CI
WHERE (E.DESTINO = CI.NOMB_CIUDAD ));
9. GROUP BY y HAVING
a. SELECT E.ID_CLIENTE,AVG(E.PESO)
FROM EMBARQUE E
GROUP BY ID_CLIENTE;
b. SELECT E.DESTINO,MAX(E.PESO)
FROM EMBARQUE E
GROUP BY E.DESTINO;
c. SELECT E.DESTINO,MIN(E.PESO)

FROM EMBARQUE E, CIUDAD C


WHERE E.DESTINO=C.NOMB_CIUDAD AND C.POBLACION>1000000
GROUP BY DESTINO;
d. SELECT C.NOMB_CIUDAD,AVG(E.PESO)
FROM EMBARQUE E, CIUDAD C
WHERE E.DESTINO=C.NOMB_CIUDAD
GROUP BY DESTINO
HAVING COUNT (*)>10;
10.

a. FABRICANTES ID_CLIENTE ( TIPO_CLIENTE = FABRICANTE CLIENTE)


LOUIS ID_CLIENTE ( DESTINO = ST.LOUIS EMBARQUE)
RESULTADO FABRICANTES U LOUIS

b. MILLON NOMB_CIUDAD ( POBLACION > 100000 CIUDAD)


ENVIO (NOMB_CIUDAD) DESTINO ( PESO=100 Y ID_CLIENTE=311
EMBARQUE)
RESULTADO MILLON ENVIO
c. CAMION_JAKE CAMION_# ( NOMB_CHOFER=JAKE STINSON CAMION)
DENVER CAMION_# ( DESTINO = DENVER EMBARQUE)
NO_DENVER ( CAMION_# CAMION) DENVER
RESULTADO CAMION_JAKE NO_DENVER
d. RENTA_DIEZ ID_CLIENTE ( RENTA_ANUAL>10000 CLIENTE)
T1 EMBARQUE*CIUDAD
T2 ID_CLIENTE ( PESO>=1 Y POBLACION<10000 T1)
RESULTADO RENTA_DIEZ T2
11. Operaciones de modificacin de la base de datos
a. Aada el camin 95 con el chofer Winston.
INTO Camion VALUES (95, 'Winston');
b. Borre de la base de datos todas las ciudades con poblacin por
debajo de 5000. No se olvide de actualizar la relacin
Embarque.
DELETE FROM Ciudad WHERE POBLACION < 5000;
DELETE FROM EMBARQUE WHERE ID_CIUDAD NOT IN (SELECT ID_CIUDAD
FROM CIUDAD)

c. Convierta el peso de cada envo a kilogramos, dividiendo el


peso por 2.2
UPDATE Embarque
SET peso= peso/2.2
13. Crear vistas para cada uno de los casos
a. Clientes con renta anual por debajo del milln.
CREATE VIEW VISTAA

AS SELECT ID_CLIENTE, NOMB_CLIENTE, RENTA_ANUAL, TIPO_CLIENTE


FROM CLIENTE
WHERE RENTA_ANUAL<1000000;
b. Clientes con renta anual entre $1 milln y $5 millones.
CREATE VIEW VISTAB
AS SELECT ID_CLIENTE, NOMB_CLIENTE, RENTA_ANUAL, TIPO_CLIENTE
FROM CLIENTE
WHERE RENTA_ANUAL>1000000 OR RENTA_ANUAL<5000000;
c. Clientes con renta anual por encima de los 5 millones.
CREATE VIEW VISTAC
AS SELECT ID_CLIENTE, NOMB_CLIENTE, RENTA_ANUAL, TIPO_CLIENTE
FROM CLIENTE
WHERE RENTA_ANUAL>5000000;
14.

Use las vistas anteriores para responder a las consultas

a.
SELECT NOMB_CHOFER
FROM camion
WHERE EXISTS (
SELECT *
FROM embarque
WHERE camion.CAMION_NUM=embarque.CAMION_NUM
AND ID_CLIENTE IN (
SELECT ID_CLIENTE
FROM vistac)
)
b.
SELECT POBLACION,NOMB_CIUDAD
FROM ciudad
WHERE EXISTS (
SELECT *
FROM embarque
WHERE NOMB_CIUDAD=embarque.DESTINO
AND ID_CLIENTE IN (
SELECT ID_CLIENTE
FROM vistab)
)
c.
SELECT NOMB_CHOFER,POBLACION
FROM camion,ciudad
WHERE EXISTS (
SELECT *
FROM embarque
WHERE NOMB_CIUDAD=embarque.DESTINO
AND CAMION.CAMION_NUM=EMBARQUE.CAMION_NUM
AND ID_CLIENTE IN (
SELECT ID_CLIENTE
FROM vistaa)
)

Potrebbero piacerti anche