Sie sind auf Seite 1von 3

Introduccin

SQL tiene una sentencia bsica para recuperar informacin de una base de datos: SELECT. En SQL
hay muchas opciones y versiones de la sentencia SELECT, por lo que introduciremos sus
caractersticas gradualmente.

Qu es SQL?
El lenguaje SQL se puede considerar como una de las principales razones del xito comercial de las
bases de datos relacionales.
El lenguaje SQL proporciona una interfaz de lenguaje del ms alto nivel, por lo que el usuario slo
especifica lo que debe ser el resultado, dejando para el DBMS la optimizacin y las decisiones de
cmo ejecutar la consulta.
Originalmente, SQL se denominaba SEQUEL (Structured English Query Language) y fue diseado e
implementado por IBM Research a modo de interfaz para un sistema de base de datos relacional
conocido como SYSTEM R.
Un esfuerzo conjunto llevado a cabo por el Instituto Nacional Americano de Normalizacin (ANSI,
American National Standards lnstitute) y la Organizacin internacional para la normalizacin (ISO,
lnternational Standards Organization) llev a una versin estndar de SQL (ANSI 1986), denominada
SQL-86 o SQL1.
A continuacin, se desarroll un estndar revisado y mucho ms amplio, SQL2 (tambin conocido
como SQL-92). El siguiente estndar fue SQL-99. Se han propuesto otros estndares, como SQL3,
pero no han gozado de suficiente respaldo por parte de la industria.

Estructura SELECT-FROM-WHERE de las consultas bsicas de SQL


Recuperar la fecha de nacimiento y la direccin del empleado (o empleados) cuyo nombre sea Jos
Prez Prez.
SELECT FechaNac, Direccin
FROM EMPLEADO
WHERE Nombre='Jos' AND Apellido1 ='Prez' AND Apellido2='Prez';

Nombres de atributo ambiguos, alias y variables de tupla


Recuperar el nombre del departamento, nombre y la direccin de todos los empleados que trabajan
en el departamento 'Investigacin'.
SELECT Nombre, EMPLEADO. Nombre, Direccin
FROM EMPLEADO, DEPARTAMENTO
WHERE DEPARTAMENTO.Nombre = 'lnvestgacin' AND DEPARTAMENTO.NumeroDpto =
EMPLEADO.NumeroDpto;
Tablas como conjuntos en SQL
Crear una lista con el nmero de todos los proyectos en los que est implicado un empleado cuyo
primer apellido sea 'Prez', sea un trabajador o sea director del departamento que controla el
proyecto.
(SELECT DISTINCT NumProyecto
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NumDptoProyecto = NumeroDpto AND DniDirector = Dni AND Apellido1 = 'Prez')
UNION
(SELECT DISTINCT NumProyecto
FROM PROYECTO, TRABAJA_EN, EMPLEADO
WHERE NumProyecto = NumProy AND DniEmpleado = Dni AND Apellido1 = 'Prez');

Comparacin de subcadenas y operadores aritmticos:


Encontrar todos los empleados que hayan nacido durante la dcada de 1950
SELECT Nombre, Apellido1
FROM EMPLEADO
WHERE FechaNac LlKE ' _______ 5 _';

Recuperar todos los empleados del departamento 5 cuyo salario est entre 30.000 y 40.000.
SELECT *
FROM EMPLEADO
WHERE (Sueldo BETWEEN 30000 AND 40000) AND Dno = 5;
La condicin (Sueldo BETWEEN 30000 AND 40000) es equivalente a la condicin ((Sueldo >= 30000)
AND (Sueldo <= 40000)).

Ordenacin del resultado de una consulta


Recuperar una lista de empleados y de los proyectos en los que trabajan, ordenada por el
departamento. Dentro de cada departamento, ordenar alfabticamente los empleados por su
primer apellido y su nombre.
SELECT NombreDpto, Apellido1, Nombre, NombreProyecto
FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN, PROYECTO
WHERE NumeroDpto = Dno AND Dni = DniEmpleado AND NumProy = NumProyecto
ORDER BY NombreDpto, Apellido1, Nombre;

El orden predeterminado es el ascendente. Con la palabra clave DESC podemos ver el resultado
ordenado descendentemente. La palabra clave ASC permite especificar explcitamente el orden
ascendente. Por ejemplo, si deseamos el orden descendente para NombreDpto y el orden
ascendente para Apellido1, Nombre, la clusula ORDER BY se puede escribir de este modo:
ORDER BY NombreDpto DESC, Apellido1 ASC, Nombre ASC
Consultas SQL ms complejas
En la seccin anterior describimos algunos tipos bsicos de consultas SQL. Debido a la generalidad
y la potencia expresiva del lenguaje, hay muchas otras caractersticas que permiten consultas ms
complejas.

Comparaciones con valores NULL y lgica de tres valores


Recuperar el nombre de todos los empleados que no tienen supervisores.
SELECT Nombre, Apellido1
FROM EMPLEADO
WHERE SuperDni IS NULL;

Consultas anidadas, tuplas y comparaciones conjunto/multiconjunto


Crear una lista con el nmero de todos los proyectos en los que est implicado un empleado cuyo
primer apellido sea 'Prez', sea un trabajador o sea director del departamento que controla el
proyecto.
SELECT DISTINCT NumProyecto
FROM PROYECTO
WHERE NumProyecto IN
(SELECT NumProyecto
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NumDptoProyecto = NumeroDpto AND DniDirector = Dni AND Apellido1 = 'Prez')
OR
NumProyecto IN
(SELECT NumProy
FROM TRABAJA_EN, EMPLEADO
WHERE DniEmpleado = Dni ANO Apellido1 = 'Prez');

Funciones agregadas en SQL


Visualizar la suma de los salarios de todos los empleados, el salario ms alto, el salario ms bajo y el
sueldo medio.
SELECT SUM (Sueldo), MAX (Sueldo), MIN (Sueldo), AVG (Sueldo)
FROM EMPLEADO;

Das könnte Ihnen auch gefallen