Cuando se necesita consultar la información existente en las tablas se debe utilizar el comando de
consultas de SQL, SELECT.
Primero se analizará la consulta sobre una tabla, para lo cual se utilizará la tabla EMPLEADO
mostrada en la figura.
SELECT *
FROM empleado;
En algunas ocasiones solo se necesitarán consultar algunos campos de una determinada tabla, lo
cual se logra especificando en la cláusula SELECT los campos a ser visualizados separados por
comas de la siguiente manera:
Ahora se visualizarán solo los campos CODIGO, NOMBRE y SALARIO de todos los registros o
empleados que se encuentren en la tabla EMPLEADO.
En la cláusula SELECT también se pueden utilizar expresiones, como se mencionó al comienzo del
documento. Suponiendo que en la tabla EMPLEADO los salarios de los trabajadores son mensuales
y mediante una consulta se pretende mostrar los salarios anuales de dichos trabajadores, el
comando de consulta quedará así:
Note que en el comando anterior se realiza una multiplicación entre el campo SALARIO y la
constante 12 (lo que se conoce como una expresión).
Las únicas operaciones que se pueden utilizar en la cláusula SELECT son la multiplicación, la
división, la suma y la resta, o cualquier combinación de las anteriores. También se debe tener en
cuenta que estás operaciones siguen las reglas de precedencia, ampliamente conocidas, y que la
precedencia de estas operaciones se puede alterar si son encerradas entre paréntesis.
Ahora, si se observa el resultado de la consulta, cada columna que se despliega tiene una
cabecera que es exactamente el nombre del campo o la expresión que se ha colocado en la
cláusula SELECT. Esta cabecera puede modificarse haciendo uso de los alias de campo de la
siguiente manera.
Note que la tercera columna desplegada no muestra como cabecera SALARIO*12 sino que es
reemplazada por SALARIO_ANUAL, el alias de campo. Todos los campos o expresiones de la
cláusula SELECT pueden tener alias de campo simplemente es colocar después del nombre de
campo o expresión el alias deseado separado por un espacio.
Hasta el momento todas las consultas realizadas despliegan los campos detallados en la cláusula
SELECT para todos los registros de la tabla sobre la cual se realiza la consulta. Se pueden
restringir los registros visualizados introduciendo una nueva cláusula al comando de consulta, la
cláusula WHERE. La cláusula WHERE verifica que los registros a mostrar como resultado de la
consulta sean aquellos registros que cumplan con la condición o condiciones allí expresadas. Las
condiciones se expresan mediante operandos y operadores.
Los operandos pueden ser campos, expresiones o constantes, mientras que los operadores los
podemos clasificar en tres grupos: de comparación, lógicos y SQL.
Las dos primeras clasificaciones son ampliamente conocidas y solo se mencionarán los
operadores. De comparación: >, <, =, >=, <=, <> o ¡=; y lógicos: AND, OR, NOT.
La tercera clasificación está compuesta por los siguientes operadores: IN, BETWEEN .. AND .. y
LIKE; su uso será mostrado a través de ejemplos.
Operador IN:
SELECT codigo, nombre, salario
FROM empleado
WHERE codigo IN (10, 30, 50);
El ejemplo anterior mostrará el CODIGO, NOMBRE y SALARIO de los trabajadores cuyo código se
encuentre en la lista mostrada después del operador IN, es decir, mostrará aquellos trabajadores
que tengan el código 10 o el código 30 o el código 50. El operador IN no encierra intervalos de
valores sino que opera sobre valores puntuales. La anterior consulta es equivalente a:
En este ejemplo a diferencia del anterior el operador BETWEEN encierra un intervalo de valores
que va desde el código 10 hasta el código 50, incluyendo los extremos; es decir, la condición es
cumplida por todos los trabajadores que tengan desde el código 10 hasta el código 50. Ahora el
operador no aplica a valores puntuales sino a un intervalo de valores.
Operador LIKE:
En el ejemplo los trabajadores que cumplen con la condición son todos aquellos cuyo nombre
comience por “E” sin importar cuantos caracteres existan después de la “E”, lo cual es expresado
mediante el carácter %.
También podemos filtrar los nombres que terminen en “a” (WHERE nombre LIKE ‘%a’) o los
nombres que en cualquier posición tengan “ch” (WHERE nombre LIKE ‘%ch%’).
Los resultados de las consultas realizadas anteriormente aparecen en el orden en el cual los
registros fueron insertados en la tabla. Este orden puede ser modificado mediante la cláusula
ORDER BY. La cláusula ORDER BY tienes las opciones de realizar ordenamientos ascendentes
(ASC), ordenamiento que asume por defecto, y ordenamiento descendentes (DESC). Ejemplos:
En este ejemplo el ordenamiento se está realizando por nombre y de manera ascendente que es
el tipo de ordenamiento que se asume por defecto. El ejemplo anterior es equivalente a:
Los ordenamientos también pueden expresarse por la posición del campo en la cláusula SELECT.
Ejemplo:
Igual a los dos ejemplos anteriores el resultado de esta consulta es ordenado por nombre de
manera ascendente, porque el nombre se encuentra en la segunda posición en la cláusula
SELECT.
El ordenamiento también puede realizarse por múltiples campos y a cada campo se le puede
aplicar un tipo diferente de ordenamiento. Ejemplo:
De la tabla EMPLEADO se puede obtener bastante información del empleado, pero cuando se
requiere conocer en qué departamento está ubicado un trabajador solo se tiene acceso al código
del departamento donde el empleado labora.
Si se requiere que la consulta arroje además del nombre y salario del trabajador, el nombre del
departamento donde está ubicado, es necesario buscar el nombre del departamento en la tabla
DEPARTAMENTO. Lo anterior implica que la información requerida debe ser extraída de dos tablas.
REGLA: Si en la consulta participan 2 tablas la cláusula WHERE debe expresar por lo menos una
relación; si participan 3 tablas la cláusula WHERE debe expresar por lo menos dos relaciones; si
participan “n” tablas la cláusula WHERE debe expresar por lo menos “n-1” relaciones. Nótese que
se hace uso del término “por lo menos” porque además de las condiciones obligatorias (aquellas
que relacionan las tablas) pueden existir condiciones propias del ejercicio. Como claridad a lo
anterior, analice el siguiente ejemplo:
Observe en esta consulta que existen dos condiciones a pesar de solo estar involucradas dos
tablas. La primera condición “empleado.codigo_dept = departamento.codigo” es obligatoria
porque establece la relación entre las dos tablas y evita el producto cartesiano; y la segunda
“empleado.codigo BETWEEN 10 AND 50” es la condición particular de la consulta.
Note que en este ejemplo el nombre de la tabla que se anteponía a cada campo ha sido
reemplazado por una letra y en la cláusula FROM cada nombre de tabla está seguida por una de
las letras que se anteponen a los nombres de campos. Esta notación a reemplazado el nombre de
la tabla por un ALIAS DE TABLA el cual es definido en la cláusula FROM, por lo que, “e.nombre” se
refiere al campo NOMBRE de la tabla EMPLEADO debido a que “e” se ha definido como alias de la
tabla empleado.
TALLERES
1. Escribir una consulta que muestre el código y nombre de los estudiantes de las facultades
100, 150 y 200. Ordene el resultado por facultad y por código de estudiante.
2. Escribir una consulta que muestre código del estudiante, nombre del estudiante, nombre de
la asignatura, nota1, nota2 y nota3, para las asignaturas perdidas en el periodo 20061.
4. Escribir una consulta que muestre código de la asignatura y nombre de la asignatura para
aquellas asignaturas que contengan LAB en su nombre, ordene el resultado por nombre de
asignatura
5. Escribir una consulta que muestre el nombre del estudiante, el código de la asignatura, y el
nombre de la asignatura, para los estudiantes cuyo nombre comience por JOSE, ordene el
resultado por nombre del estudiante y por código de la asignatura.
6. Escribir una consulta que muestre periodo, nombre del estudiante, código de asignatura y
promedio de notas, para los estudiantes de apellidos PEREZ PEREZ, ordene la consulta por
periodo, nombre de estudiante y código de asignatura.
7. Escribir una consulta que muestre periodo, código del estudiante y código de la asignatura
de todas las asignaturas cursadas del periodo 20051 al periodo 20062 por el estudiante cuyo
código es 150150150, ordene el resultado por periodo y código de la asignatura.
8. Escribir una consulta que muestre periodo, nombre del estudiante y nombre de la asignatura
para aquellos estudiantes que ganaron el primer examen en el periodo 20051, ordene el
resultado por nombre del estudiante.
9. Escribir una consulta que muestre el código del trabajador, nombre del trabajador y nombre
del departamento de los departamentos 10, 25 y 55, ordene el resultado por nombre del
departamento.
10. Escribir una consulta que muestre código del trabajador, nombre del trabajador e
incremento porcentual del salario para aquellos trabajadores cuyo incremento porcentual de
salario fue inferior a 10%, ordene el resultado por el incremento porcentual.
11. Escribir una consulta que muestre los conceptos y valores correspondientes que se
cancelaron a JUAN PEREZ en el periodo 200508.
12. Escribir una consulta que muestre todos los descuentos realizados a JUAN PEREZ en el
periodo 200509 (TIPO_CONCEPTO=’D’).
13. Escribir una consulta que muestre el código del trabajador y nombre del trabajador para
aquellos trabajadores que el 30 de Junio de 2006 cumplan 20 o más años de labores.
15. Escribir una consulta que muestre el código del trabajador, nombre del trabajador, código
del jefe y nombre del jefe, para todos los trabajadores.
16. Escribir una consulta que muestre el código del estudiante y el apellido del estudiante de
todos los estudiantes que al día de hoy tengan libros prestados.
17. Escribir una consulta que muestre el código del libro y el título del libro de los libros que
actualmente estén prestados.
18. Escribir una consulta que muestre el código del estudiante y el código del libro para los
cuales se les ha otorgado un plazo en el préstamo mayor de una semana.
19. Escribir una consulta que muestre el nombre del estudiante y el nombre del libro para los
préstamos que se vencieron en el mes de junio de 2006.
20. Escribir una consulta que muestre el nombre del estudiante y el nombre del libro para los
préstamos que se realizaron en el segundo semestre del 2006.
21. Escribir una consulta que muestre el código del libro, nombre del libro y autor para todos los
libros que en su titulo tengan la palabra INGENIERIA y que el nombre del autor comience
por ALBERT.