SQL tiene una instrucción principal para recuperar información de una base de datos: el comando SELECT. Esta instrucción tiene muchas opciones.

En una consulta SQL puede omitirse la cláusula WHERE, lo que indica que no hay condiciones sobre las tuplas a seleccionar (TODAS las tuplas son seleccionadas). Si más de una relación es especificada en la cláusula FROM, y no existe cláusula WHERE, entonces el producto cruz (todas las posibles combinaciones de tuplas) de estas relaciones es seleccionado. Es importante especificar cada condición de selección y cada condición de asociación en la cláusula WHERE.

<condición> es una expresión de búsqueda condicional (lógica) que identifica las tuplas que van a ser recuperadas por la consulta. Esta consulta involucra solamente la relación EMPLEADO, señalada en la cláusula FROM. En la cláusula WHERE, la condición DNOMBRE = "Investigación" es una condición de selección.

La condición DNUMERO = NDEPTO es una condición de asociación, y asocia la llave foránea NDEPTO de la relación EMPLEADO, con el correspondiente número de departamento (DNUMERO) de la relación DEPARTAMENTO.

Para recuperar todos los valores de los atributos de las tuplas seleccionadas, se puede usar un asterisco (no es necesario poner todos los nombres), el cual significa todos los atributos.

En SQL, un mismo nombre puede ser usado por dos (o más) atributos en diferentes relaciones. Cuando esto sucede, y una consulta se refiere a dos o más atributos con el mismo nombre, el nombre de la relación debe ser puesto como prefijo del nombre de cada atributo, para evitar ambigüedad.

Por ejemplo, supongamos que los atributos NDEPTO y NPILA de EMPLEADO se llamaran DNUMERO y NOMBRE respectivamente, y el atributo DNOMBRE de DEPARTAMENTO también se llamara NOMBRE. En este caso, se pueden declarar nombres alternativos para la misma relación, llamados alias. El nombre del alias se escribe inmediatamente después del nombre de la relación.

También se puede declarar usando la palabra "AS", por ejemplo: EMPLEADO AS E. También es posible renombrar (como alias) todos los atributos de una relación en la cláusula FROM, de esta manera: EMPLEADO AS E(NP, AP1, AP2, RUT, FN, DIR, SE, SU, RUTS, ND).

Los alias pueden ser usados en cualquier consulta, no sólo cuando hay nombres repetidos. Los alias tienen sentido sólo en la consulta en que son definidos.

En una consulta SQL pueden aparecer tuplas duplicadas. Si no queremos que esto suceda, se puede usar la palabra DISTINCT en la cláusula SELECT, en cuyo caso sólo tuplas distintas aparecen en la relación.

En la consulta anterior obtenemos una tabla con la lista de salarios de todos los empleados. Sin embargo, si dos o más empleados ganan lo mismo, el mismo valor aparece varias veces en la tabla.

En SQL existe una operación UNION que regresa la unión (como en conjuntos) de relaciones, es decir, regresa todas las tuplas que aparecen en alguna de las relaciones. Las tuplas duplicadas son eliminadas del resultado, a menos que se especifique la cláusula ALL después de la operación.

El primer SELECT recupera los proyectos que involucran a "Pérez" como gerente del departamento que controla el proyecto, y el segundo SELECT regresa los proyectos que involucran a "Pérez" como trabajador en el proyecto. Note que si varios empleados tienen como primer apellido "Pérez", se recuperan los números de proyecto en que están involucrados todos ellos. Al aplicar la operación UNION a los dos SELECT, se obtiene el resultado deseado.

TAG: #Empleado

Lea también: