Sei sulla pagina 1di 38

Consultas Bsicas en SQL

2013

SQL: Un lenguaje de BD relacionales

Al estudiar las operaciones del lgebra relacional, se entienden los tipos de solicitudes que se le puede pedir a una Base de Datos Relacional. El lgebra es un lenguaje de consulta de alto nivel porque sus operaciones se aplican a relaciones completas. Las consultas se escriben en forma de secuencias de operaciones que, al ejecutarse, producen un resultado, es decir, el usuario debe indicar como -en que orden- se deben ejecutar las mismas. A este tipo de lenguaje se los denomina Lenguaje Imperativo. En la actualidad no existen SGBD relacional que se basen directamente en el lgebra relacional. Los SGBD comerciales cuentan con una interfaz de Lenguaje Declarativo (no dicen cmo hacer una cosa, sino, qu cosa hacer) de alto nivel. De modo que el usuario deja que el SGBD se encargue de la optimizacin y de la ejecucin de las operaciones. 2013

SQL: Un lenguaje de BD relacionales


El Lenguaje Declarativo ms conocido es el SQL , cuyo nombre se deriva de Structured Query Languaje , (lenguaje de consulta estructurado). Originalmente, SQL se llamaba SEQUEL ( por Structured English Query Language: lenguaje estructurado de consultas en ingls) SQL es un lenguaje de base de datos completo; est compuesto de: Lenguaje de Definicin de Datos (LDD). Creacin y modificacin de esquemas. Lenguaje de Manipulacin de Datos (LMD): consulta y actualizacin. Definicin de vistas. Especificacin de seguridad y autorizacin. Definicin de restricciones de integridad. Especificacin de control de transacciones. SQL emplea los trminos tabla (table), fila (row) y columna (column), en vez de relacin, tupla y atributo, respectivamente.

2013

Los SGBD comerciales utilizan variantes de SQL Estndares SQL


Ao 1986 1989 1992 1999 Nombre SQL-86 SQL-89 SQL-92 SQL:1999 SQL2 SQL2000 Alias SQL-87 Comentarios Primera publicacin hecha por ANSI. Confirmada por ISO en 1987. Revisin menor. Revisin mayor. Se agregaron expresiones regulares, consultas recursivas (para relaciones jerrquicas), triggers y algunas caractersticas orientadas a objetos. Introduce algunas caractersticas de XML, cambios en las funciones, estandarizacin del objeto sequence y de las columnas autonumericas. ISO/IEC 9075-14:2006 Define las maneras en las cuales el SQL se puede utilizar conjuntamente con XML. Define maneras importar y guardar datos XML en una base de datos SQL, manipulndolos dentro de la base de datos y publicando el XML y los datos SQL convencionales en forma XML. Adems, proporciona facilidades que permiten a las aplicaciones integrar dentro de su cdigo SQL el uso de XQuery, lenguaje de consulta XML publicado por el W3C (World Wide Web Consortium) para acceso concurrente a datos ordinarios SQL y documentos XML.

2003 2006

SQL:2003 SQL:2006

Estructura SELECT-FROM-WHERE
La forma bsica de la sentencia SELECT, en ocasiones denominada correspondencia o bloque select-from-where, consta de las tres clusulas SELECT, FROM y WHERE y tiene la siguiente forma:

SELECT <lista de atributos> FROM <lista de tablas> WHERE <condicin>;

2013

Diagrama del esquema para la Base de datos Relacional EMPRESA


EMPLEADO
Nombre Inic Apellido NSS Fecha _Nac Direccin Sexo Salario NSSSup ND

DEPARTAMENTO NombreD

NmeroD

NSS-Jefe
NmeroD

Fecha-Inic-jefe
LocalizacinD NumD

LOCALIZACIN-DEPT PROYECTO
NombreP NmeroP

LocalizacinP

TRABAJA-EN NSSE

NP

Horas

DEPENDIENTE
NSSE NombreDependiente Sexo Fecha -Nto Parentesco

Estructura SELECT-FROM-WHERE
CONSULTA 0 Mostrar fecha de nacimiento y direccin del empleado John Smith C0: SELECT FROM WHERE FECHA_NAC, DIRECCION EMPLEADO NOMBRE = `John AND APELLIDO = `Smith;

2013

Estructura SELECT-FROM-WHERE
CONSULTA1 Mostrar el nombre, apellido y direccin de los empleados que trabajan en el departamento de Investigacin

C1:

SELECT FROM WHERE

NOMBRE, APELLIDO, DIRECCION EMPLEADO, DEPARTAMENTO NOMBRED = `Investigacin AND NUMEROD = ND;

2013

Estructura SELECT-FROM-WHERE
CONSULTA2 De cada proyecto ubicado en Stafford, haga una lista con el nmero de proyecto, nmero de departamento controlador y apellido, direccin y fecha de nacimiento del jefe de departamento.
C2: SELECT FROM WHERE
NUMEROP, NUMD, APELLIDO, DIRECCION, FECHA_NAC

PROYECTO, DEPARTAMENTO, EMPLEADO NUMD = NUMEROD AND NSS_JEFE = NSS AND LOCALIZACION = `Stafford;

2013

Manejo de nombres de atributos ambiguos y renombramiento (asignacin de alias)


CONSULTA3

C3:

SELECT FROM WHERE

NOMBRE, EMPLEADO.NOM, DIRECCION EMPLEADO,DEPARTAMENTO DEPARTAMENTO.NOM = `Investigacin AND DEPARTAMENTO.NUMEROD = EMPLEADO.NUMEROD;

2013

Manejo de nombres de atributos ambiguos y renombramiento (asignacin de alias)


CONSULTA 4 Por cada empleado, recupere su nombre de pila y apellido y los de su supervisor inmediato

C4:

SELECT FROM WHERE

E.NOMBRE, E.APELLIDO, S.NOMBRE, S.APELLIDO

EMPLEADO AS E, EMPLEADO AS S E.NSS_SUPERV = S.NSS;

2013

Manejo de nombres de atributos ambiguos y renombramiento (asignacin de alias)


CONSULTA5

C5:

SELECT FROM WHERE

E.NOMBRE, E.NOM, DIRECCION EMPLEADO E, DEPARTAMENTO D D.NOM = `Investigacin AND D.NUMEROD = E.NUMEROD;

2013

Clusula WHERE no especificadas y empleo del asterisco (*)


CONSULTA67

C6:

SELECT FROM

NSS EMPLEADO;

C7:

SELECT FROM

NSS, NOMBRED EMPLEADO, DEPARTAMENTO;

2013

Clusula WHERE no especificadas y empleo del asterisco (*)


CONSULTA89 C8: SELECT FROM WHERE * EMPLEADO ND = 5;

C9:

SELECT FROM WHERE

* EMPLEADO, DEPARTAMENTO NOMBRED = Investigacin AND ND = NUMEROD; 2013

Tablas como conjuntos en SQL


CONSULTA1011 C10: SELECT ALL SALARIO FROM EMPLEADO; Recupera el salario de todos los empleados

C11:

SELECT DISTINCT SALARIO FROM EMPLEADO; Recupera el valor de todos los salarios distintos 2013

Tablas como conjuntos en SQL


CONSULTA12 C12: (SELECT ALL NUMEROP FROM PROYECTO, DEPARTAMENTO, EMPLEADO WHERE NUMD = NUMEROD AND NSS_JEFE = NSS AND APELLIDO = Smith) UNION (SELECT DISTINCT NUMEROP FROM TRABAJA_EN, EMPLEADO WHERE NSSE= NSS AND APELLIDO = Smith);

2013

Prepare una lista con todos los proyectos en los que participa un empleado de apellido Smith, sea como empleado o como jefe del departamento que controla el proyecto.

2013

Comparaciones de subcadenas, operadores aritmticos y ordenacin


CONSULTA1314 Recuperar todos los empleados cuya direccin sea de Houston, Texas C13: SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE DIRECCION LIKE %HOUSTON, TX%; Recuperar todos los empleados que nacieron en la dcada de los 80 C14 SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE FECHA_NAC LIKE --/--/8-;

Comparaciones de subcadenas, operadores aritmticos y ordenacin


CONSULTA15 Deseamos conocer el efecto que resulte de aumentar el 10% al salario de todos los empleados que trabajan en el proyecto X

C15:

SELECT NOMBRE, APELLIDO, 1.1 * SALARIO FROM EMPLEADO, TRABAJA_EN, PROYECTO WHERE NSS = NSSE AND NP = NUMEROP AND NOMBREP = Producto X;

Tambin +, 2013

Comparaciones de subcadenas, operadores aritmticos y ordenacin


CONSULTA16 Recuperar los empleados del departamento 5 cuyo salario est entre 7000 y 10000 pesos

C16:

SELECT * FROM EMPLEADO WHERE (SALARIO BETWEEN 7000 AND 10000) AND ND = 5;

2013

Comparaciones de subcadenas, operadores aritmticos y ordenacin


CONSULTA17 Obtener una lista de los empleados y de los proyectos en los que trabajan, ordenados por departamentos y, dentro de cada departamento por nombre y apellido C17: SELECT NOMBRED, APELLIDO, NOMBRE, NOMBREP FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN, PROYECTO WHERE NUMEROD = ND AND NSS = NSSE AND NP = NUMEROP ORDER BY NOMBRED, APELLIDO, NOMBRE;

o
ORDER BY
NOMBRED DESC, APELLIDO ASC, NOMBRE ASC; 2013

Consultas SQL ms complejas Consultas anidadas y comparaciones de conjuntos


Consulta 16

Recuperar los nmeros de proyectos en que un Smith participa como jefe o que participa como empleado

CONSULTA18

Consultas SQL ms complejas Consultas anidadas y comparaciones de conjuntos


SELECT DISTINCT NUMEROP FROM PROYECTO WHERE NUMEROP IN ( SELECT NUMEROP FROM PROYECTO, EMPLEADO, DEPARTAMENTO WHERE NUMD = NUMEROD AND NSS_JEFE = NSS AND APELLIDO = Smith) OR NUMEROP IN ( SELECT NP FROM TRABAJA_EN, EMPLEADO WHERE NSSE = NSS AND APELLIDO = Smith); 2013

C18:

Consultas SQL ms complejas Consultas anidadas y comparaciones de conjuntos


CONSULTA19

Recuperar los NSS de los empleados que trabajan para la misma combinacin (proyecto, horas) en algn proyecto que trabaja el empleado con NSS= 123456789
C19: SELECT DISTINCT NSSE FROM TRABAJA_EN WHERE (NP, HORAS) IN ( SELECT NP, HORAS FROM TRABAJA_EN WHERE NSS = 123456789);

2013

Consultas SQL ms complejas Consultas anidadas y comparaciones de conjuntos


CONSULTA20 Recuperar los nombres de los empleados cuyo salario es mayor que el de todos los empleados del departamento 5 C20: SELECT APELLIDO, NOMBRE FROM EMPLEADO WHERE SALARIO > ALL ( SELECT SALARIO FROM EMPLEADO WHERE ND = 5);

2013

Consultas SQL ms complejas Consultas anidadas y comparaciones de conjuntos


CONSULTA21 Recuperar el nombre de los empleados que tengan un familiar dependiente con el mismo nombre de pila y sexo que el empleado C21:
SELECT FROM WHERE E.NOMBRE, E.APELLIDO EMPLEADO AS E E.NSS IN ( SELECT NSSE FROM DEPENDIENTE WHERE E.NOMBRE = NOMBRE_DEPENDIENTE AND
E.SEXO = SEXO);

2013

Consultas SQL ms complejas Consultas anidadas y comparaciones de conjuntos


CONSULTA22 Otra manera de expresar la consulta 21 C22: SELECT FROM WHERE E.NOMBRE, E.APELLIDO EMPLEADO AS E, DEPENDIENTE AS D E.NSS = D.NSSE AND E.SEXO = D.SEXO AND E.NOMBRE = D.NOMBRE_DEPENDIENTE;

2013

Consultas SQL ms complejas Consultas anidadas y comparaciones de conjuntos


CONSULTA23 Recupere el nombre de los empleados que trabajan en todos los proyectos controlados por el departamento n 5 C23: SELECT NOMBRE, APELLIDO
FROM WHERE EMPLEADO ( (SELECT NP FROM TRABAJA_EN WHERE NSS = NSSE) CONTAINS SELECT NUMEROP FROM PROYECTO WHERE NUMD = 5));

2013

Funciones EXISTS y UNIQUE en SQL


CONSULTA24 C24: SELECT FROM WHERE E.NOMBRE, E.APELLIDO EMPLEADO AS E EXISTS (SELECT * FROM DEPENDIENTE WHERE E.NSS = NSSE AND
SEXO= E.SEXO AND E.NOMBRE = NOMBRE_DEPENDIENTE);

Devuelve TRUE si al menos existe una Otra forma de escribir la consulta 21 y 22

2013

Funciones EXISTS y UNIQUE en SQL


CONSULTA25 Recuperar el nombre y apellido de los empleados que no tienen dependientes C25: SELECT FROM WHERE NOMBRE, APELLIDO EMPLEADO NOT EXISTS (SELECT * FROM DEPENDIENTE WHERE E.NSS = NSSE);

2013

Funciones EXISTS y UNIQUE en SQL


CONSULTA26 Recuperar los nombres de los jefes que tienen por lo menos un familiar dependiente C26: SELECT FROM WHERE NOMBRE, APELLIDO EMPLEADO EXISTS (SELECT * FROM DEPENDIENTE WHERE NSS = NSSE) AND EXISTS (SELECT * FROM DEPARTAMENTO WHERE NSS = NSS_JEFE);

2013

Conjuntos explcitos y NULLS en SQL


CONSULTA2728 Recuperar el NSS de los empleados que trabajan en los proyectos 1, 2 o 3 C27: SELECT DISTINCT NSSE FROM TRABAJA_EN WHERE NP IN (1, 2, 3); Recuperar el nombre y apellido de los empleados que no tienen supervisor C28: SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE NSS_SUPERV IS NULL; 2013

Funciones agregadas y de agrupacin


CONSULTA2930
Hallar la suma de salarios de todos los empleados, el salario mayor, el salario mnimo y la media del salario C29: SELECT SUM (SALARIO), MAX (SALARIO), MIN (SALARIO), AVG (SALARIO) FROM EMPLEADO;
Hallar la suma de salarios de todos los empleados del departamento Investigacin, el salario mayor, el salario mnimo y la media del salario de dicho departamento

C30:

SELECT FROM WHERE

SUM (SALARIO), MAX (SALARIO), MIN (SALARIO), AVG (SALARIO) EMPLEADO, DEPARTAMENTO ND = NUMEROD AND NOMBRED = Investigacin ;

2013

Funciones agregadas y de agrupacin


CONSULTA3132 Recuperar el total de empleados de la Empresa C31: SELECT COUNT (*) FROM EMPLEADO; Recuperar el total de empleados que trabajan en el departamento de Investigacin SELECT COUNT (*) FROM EMPLEADO, DEPARTAMENTO WHERE ND = NUMEROD AND NOMBRED = Investigacin;

C32:

2013

Funciones agregadas y de agrupacin


CONSULTA3334 Recuperar la cantidad de salarios diferentes que tiene la Empresa C33: SELECT COUNT (DISTINCT SALARIO) FROM EMPLEADO; Recuperar el Nombre y apellido de los empleados que tienen mas de dos dependientes a su cargo C34: SELECT APELLIDO, NOMBRE FROM EMPLEADO WHERE (SELECT COUNT (*) FROM DEPENDIENTE WHERE NSS = NSSE) > 2; 2013

Funciones agregadas y de agrupacin

Recuperar el ND, la cantidad de empleados que trabajen en l y el promedio de salario por departamento.

C35:

SELECT ND, COUNT (*), AVG(SALARIO) FROM EMPLEADO GROUP BY ND;

2013

Funciones agregadas y de agrupacin


CONSULTA3536 De cada proyecto en el que trabajen ms de dos empleados, recupere su nmero, su nombre y el nmero de empleados que trabajan en l

C36:

SELECT NUMEROP, NOMBREP, COUNT (*) FROM PROYECTO, TRABAJA_EN WHERE NUMEROP = NP GROUP BY NUMEROP, NOMBREP HAVING COUNT(*) > 2;
2013

Resumen de consultas en SQL

SELECT <atributos y lista de funciones> FROM <lista de tablas> [WHERE <condicin>] [GROUP BY <atributo(s) de agrupacin>] [HAVING <condicin de agrupacin>] [ORDER BY <lista de atributos>]

2013

Potrebbero piacerti anche