You are on page 1of 7

BASES DE DATOS I

CONSULTA DE DATOS

curso 2008

Lenguaje SQL (Structured Query Language)

Es el lenguaje standard para manejo de datos en bases de datos


relacionales y el que utilizan la mayora de los DBMS comerciales (DB2,
Oracle, INGRES, SYBASE, SQL Server, etc.)

SQL se propuso inicialmente en 1970 y peridicamente se publican


versiones actualizadas de la norma.

Las expresiones en las implementaciones de SQL propias de cada


DBMS pueden diferir levemente respecto del standard.

Las sentencias DML del SQL se pueden usar interactivamente como un


lenguaje de consulta o se pueden insertar en programas de aplicacin.

En una consulta se especifica qu informacin se requiere, sin


especificar cmo obtenerla (no requiere mtodos de acceso a los datos).

Bases de Datos I 2

1
Sentencia SELECT
SELECT [ DISTINCT ] <lista atributos>
FROM <lista tablas>
[ WHERE condicin ]
[ GROUP BY <lista atributos grupo>
[ HAVING (condicin grupo) ] ]
[ ORDER BY <lista atributos orden> ] ;

El resultado es una tabla (si el resultado es un nmero, se considera como


una tabla con una fila y una columna)
DISTINCT permite eliminar duplicados
La condicin del WHERE restringir el conjunto de tuplas a recuperar
GROUP BY `factorea la relacin resultante en grupos, y se puede aplicar
un filtro sobre el grupo mediante HAVING (<lista tems> debe coincidir con
<lista atributos grupo>, aunque puede incluir funciones de agregado)
ORDER BY permite ordenar el resultado mediante una lista de campos en
<lista atributos orden>
Bases de Datos I 3

Ejemplo

N N N 1
INVESTIGADOR trabaja PROYECTO corresponde
INSTITUTO

categ proy_id duracion id_inst facultad


id_inv nom_inv nombre tema nombre

Bases de Datos I 4

2
Consultas de una tabla

Ej. 1:
1: Listar los identificadores y Ej. 2: Listar todos los datos de
nombres de los proyectos los Institutos

SELECT proy_id, nombre SELECT *


FROM PROYECTO ; FROM INSTITUTO;

Bases de Datos I 5

Consultas de una tabla - distinct

Ej. 3.a: Listar los temas de los Ej. 3.b: Listar los distintos temas
proyectos de los proyectos
SELECT tema SELECT DISTINCT tema
FROM PROYECTO ; FROM PROYECTO ;

Hay repeticiones
no se eliminan filas repetidas, a menos que
se indique explcitamente con DISTINCT

Bases de Datos I 6

3
Consultas de una tabla - condiciones

Ej. 4: Listar los nombres de los Ej. 5: Listar los nombres de los
proyectos de ms de 12 meses proyectos de ms de 12 meses
de duracin de duracin cuyo tema
comience con Bases
SELECT nombre
FROM PROYECTO SELECT nombre
WHERE duracion > 12; FROM PROYECTO
WHERE duracion >= 12
AND tema LIKE Bases% ;

Bases de Datos I 7

Consultas funciones de agregado

Permiten resumir el resultado de una consulta:


SUM( ) total de la columna especificada
Se aplican a
AVG( ) promedio de la columna especificada columnas de
MAX( ) valor mximo de la columna especificada tipo numrico
MIN ( ) valor mnimo de la columna especificada
COUNT ( ) cantidad de tuplas

Ej. 6: Indicar la cantidad de Ej. 7: Indicar duracin mnima y mxima


proyectos sobre el tema Base de los proyectos del instituto 2
de Datos
SELECT MIN (duracion) AS dmin,
SELECT COUNT (*) AS CantProy MAX (duracion) AS dmax
FROM PROYECTO FROM PROYECTO
WHERE tema = Bases de Datos; WHERE id_inst = 2;

Bases de Datos I 8

4
Consultas ordenamiento
Ej. 8: Listar id. y nombre de los proyectos de 2 aos de duracin,
ordenados por nombre
SELECT proy_id, nombre
FROM PROYECTO
WHERE duracion = 24
ORDER BY nombre;

Ej. 9: Listar los datos completos de los proyectos, ordenados por instituto
y duracin
SELECT * FROM PROYECTO
ORDER BY id_inst, duracion;

Bases de Datos I 9

Consultas de ms de una tabla

N N N 1
INVESTIGADOR trabaja PROYECTO corresponde INSTITUTO

categ proy_id duracio id_inst facultad


id_inv nom_inv nombre tema nombre
n

Ej. 10: Obtener los nombres de los proyectos del Instituto Inst2
SELECT PROYECTO.nombre
FROM PROYECTO, INSTITUTO
WHERE PROYECTO. id_inst = INSTITUTO. id_inst
AND INSTITUTO. nombre = Inst2;

Ej. 11: Listar los id. y nombre de los investigadores junto con el id. del
instituto en que trabajan
SELECT I.id_inv, I.nom_inv, P.id_inst
FROM INVESTIGADOR I, TRABAJA T, PROYECTO P
WHERE P.proy_id =T.proy_id AND I.id_inv=T.id_inv;

Bases de Datos I 10

5
Unin en SQL
Se requiere que ambas tablas tengan tipos de datos compatibles.
SELECT * FROM R
UNION [ALL]
SELECT * FROM S;
El operador elimina filas duplicadas, aunque se pueden conservar
usando la clusula ALL a continuacin de UNION.
Mediante la clusula CORRESPONDING, seguida por una lista de
nombres de columna, se permite unir dos tablas que no tienen
exactamente el mismo esquema Incluye solo las columnas
indicadas, como si se hiciera una proyeccin (si no se incluye la lista,
genera un resultado con solo las columnas comunes a ambas tablas)

SELECT * FROM R
UNION CORRESPONDING [ BY(col1, col2, )] [ALL]
SELECT * FROM S;

Bases de Datos I 11

Interseccin

La INTERSECCIN entre R y S (unin compatibles) genera otra


relacin de igual esquema y cuyas tuplas son todas las de R y S.

SELECT * FROM R
INTERSECT
SELECT * FROM S;
R: A B S: A B R INTERSECT S
a1 b1 a1 b1 A B
a2 b2 a3 b1 a1 b1

Tambin se puede usar ALL y CORRESPONDING

R: A B S: A B R INTERSECT ALL S
a1 b1 a1 b1 A B
a2 b2 a2 b2 a1 b1
a2 b2 a2 b2 a2 b2
a3 b1 a2 b2 a2 b2

Bases de Datos I 12

6
Diferencia

La DIFERENCIA entre R y S (unin compatibles) genera otra relacin de


igual esquema cuyas tuplas son todas las pertenecientes a R y no a S.
SELECT * FROM R
EXCEPT o MINUS
SELECT * FROM S;
Ej.:
R: A B S: A B R MINUS S: S MINUS R:
a1 b1 a1 b1 A B A B
a2 b2 a3 b1 a2 b2 a3 b1

Tambin se puede usar ALL y CORRESPONDING

R: A B S: A B R MINUS ALL S: S MINUS ALL R:


a1 b1 a1 b1 A B A B
a2 b2 a1 b1 a2 b2 a1 b1
a2 b2 a3 b1 a2 b2 a3 b1

Bases de Datos I 13

You might also like