Ejecicios De Sql
El lenguaje SQL
Notas by Dr. Luciano García-Bañuelos
Estructura básica de una consulta
SELECT [DISTINCT] Lista-de-atributos Lista-de-relaciones FROM WHERE Predicado-de-selección
πA (σθ (R1×R2×...×Rn))
© L. García-Bañuelos 2
1
Algunos comentarios
La parte SELECT indica la lista de atributos a proyectar en el resultado La clausula opcional DISTINCTelimina tuplas duplicadas en el resultado
Este es el comportamiento normal en teoría de conjuntos
El caracter * puede substituir a la lista de atributos, e indica que todos serán proyectados
La parte FROM especifica una lista de relaciones sobre las cuales se calculará un producto cartesiano La parte WHERE especifica la condición de selección Nótese que esta parte es opcional
© L.García-Bañuelos 3
Nuestra primera consulta
¿Cuál es el nombre de los empleados que ganan más de 34000?
EMP
NE 1 2 3 4 5 6 7 8 NOMBRE J. Pérez M. López A. Lira J. Mirón B. Cortina L. Cosio R. Barco J. Aspe PUESTO Gerente Analista Analista Consultor Ingeniero Programador Programador Gerente SAL 40000 34000 34000 40000 34000 24000 24000 40000 NOMBRE J. Pérez J. Mirón J. Aspe
πNOMBRE(σsal>34000 (EMP)) σsal>34000 EMP
select NOMBRE from EMP where sal>34000
© L. García-Bañuelos
4
2
Álgebra relacional y SQL
σ θ(R) select * from R where θ
π A(R)
select A from R
R×S
select * from R, S
© L. García-Bañuelos
5
Ejemplos (1/3)
EMP
NE 1 8 NOMBRE J. Pérez J. Aspe PUESTO Gerente Gerente SAL 40000 40000 NP 1 2
PROY
NOMBRE Textil IS e-Portal PRESUPUESTO 2000000 2500000 NG1 1
select * from EMP, PROY where EMP.NE = PROY.NG
NE 1 1 NOMBRE J. Pérez J. Pérez PUESTO Gerente Gerente
EMP
EMP.NE=PROY.NG
PROY
SAL 40000 40000
NP 1 2
NOMBRE Textil IS e-Portal
PRESUPUESTO 2000000 2500000
NG 1 1
© L. García-Bañuelos
6
3
Ejemplos (2/3)
EMP
NE 1 8 NOMBRE J. Pérez J. Aspe PUESTO Gerente Gerente SAL 40000 40000 NP 1 2
PROY
NOMBRE TextilIS e-Portal PRESUPUESTO 2000000 2500000 NG 1 1
select E.NOMBRE from EMP E, PROY P where E.NE = P.NG
NOMBRE J. Pérez J. Pérez
select DISTINCT EMP.NOMBRE from EMP, PROY where EMP.NE = PROY.NG
NOMBRE J. Pérez
Podemos asignar nombres cortos a cada relación
© L. García-Bañuelos
7
Ejemplos (3/3)
SQL provee un operador especial para buscar cadenas con expresiones regulares
EMP
NE1 2 3 4 5 6 7 8 NOMBRE J. Pérez M. López A. Lira J. Mirón B. Cortina L. Cosio R. Barco J. Aspe PUESTO Gerente Analista Analista Consultor Ingeniero Programador Programador Gerente SAL 40000 34000 34000 40000 34000 24000 24000 40000 NOMBRE J. Pérez M. López
select NOMBRE from EMP where NOMBRE like ‘%ez’
© L. García-Bañuelos
8
4
Unión
Busquemos los nombres de los gerentes de losproyectos
EMP2 EMP1
NE 1 4 8 NOMBRE J. Pérez J. Mirón J. Aspe PUESTO Gerente Consultor Gerente SAL 40000 40000 40000 NE 2 3 4 5 NOMBRE M. López A. Lira J. Mirón B. Cortina PUESTO Analista Analista Consultor Ingeniero SAL 34000 34000 40000 34000
PROY
NP 1 2 NOMBRE Textil IS e-Portal PRESUPUESTO 2000000 2500000 NG 1 3
© L. García-Bañuelos
9
Versión en SQL
La siguiente consulta es unarespuesta válida:
select EMP1.NOMBRE from EMP1, PROY where EMP1.NE = PROY.NG UNION select EMP2.NOMBRE from EMP2, PROY where EMP2.NE = PROY.NG
© L. García-Bañuelos
10
5
Intersección
Busquemos ahora los nombres de los empleados que aparecen en ambas relaciones
EMP1
NE 1 4 8 NOMBRE J. Pérez J. Mirón J. Aspe PUESTO Gerente Consultor Gerente SAL 40000 40000 40000 NE 2 3 4 5
EMP2NOMBRE M. López A. Lira J. Mirón B. Cortina PUESTO Analista Analista Consultor Ingeniero SAL 34000 34000 40000 34000
select NOMBRE from EMP1 INTERSECT select NOMBRE from EMP2
© L. García-Bañuelos 11
Diferencia
Busquemos ahora los nombres de los empleados que están en EMP1 pero no en EMP2
EMP1
NE 1 4 8 NOMBRE J. Pérez J. Mirón J. Aspe PUESTO Gerente Consultor Gerente SAL 40000 40000 40000...
Regístrate para leer el documento completo.