Unidad 3. Consultas simples (XI)


3.13. Selección de filas WHERE

La cláusula WHERE se emplea para especificar las filas que se desean recuperar del origen de datos.

WHERE <condicion_búsqueda> 

  <condicion_búsqueda> ::= 

        { [NOT]<predicado> 

          |(<condicion_búsqueda>)

         } 

         [{AND|OR} [NOT] {<predicado>|(<condicion_búsqueda>)}]

    [ ...n ] 

En el resultado de la consulta sólo aparecerán las filas que cumplan que la condición de búsqueda sea TRUE, los valores NULL no se incluyen, por lo tanto, en las filas del resultado. La condición de búsqueda  puede ser una condición simple o una condición compuesta por varias condiciones (predicados)  unidas por operadores AND y OR, no hay límite en cuanto al número de predicados que se pueden incluir. En las condiciones compuestas se pueden utilizar paréntesis para delimitar predicados y se aconseja su uso cuando se incluyen operadores AND y OR en la misma condición de búsqueda.

3.14. Predicados

En SQL tenemos 7 tipos de predicados,  condiciones básicas de búsqueda:

  • Comparación estándar
  • Pertenencia a un intervalo (BETWEEN)
  • Pertenencia a un conjunto (IN)
  • Test de valor nulo (IS NULL).
  • Coincidencia con patrón (LIKE)
  • Si contiene (CONTAINS)
  • FREETEXT

Comparación estándar.

Compara el valor de una expresión con el valor de otra. Para la comparación se pueden emplear  =  , <>  , !=, <  , <=  , !<, >  , >= ,!>

Sintaxis:

<expresion>  {=|<>|!=|>|>=|!>|<|<=|!<} <expresion>

<expresion> Puede ser:

  • Un nombre de columna,
  • una constante,
  • una función (inclusive la función CASE),
  • una variable,
  • una subconsulta escalar o
  • cualquier combinación de nombres de columna, constantes y funciones conectados mediante uno o varios operadores o una subconsulta.

Ejemplo:

Listar los "buenos" vendedores (los que han rebasado su cuota).


  SELECT numemp, nombre,  ventas, cuota

  FROM empleados

  WHERE ventas > cuota
numemp nombre ventas cuota
101 Antonio Viguer 30500,00 30000,00
102 Alvaro Jaumes 47400,00 35000,00
103 Juan Rovira 28600,00 27500,00
105 Vicente Pantalla 36800,00 35000,00
106 Luis Antonio 29900,00 27500,00
108 Ana Bustamante 36100,00 35000,00
109 María Sunta 39200,00 3000,00

Las columnas que aparecen en el WHERE no tienen por qué aparecer en la lista de selección, esta instrucción es igual de válida:

SELECT numemp, nombre

FROM empleados

WHERE ventas > cuota;

Hallar vendedores contratados antes de 1988.

SELECT numemp, nombre, contrato

FROM empleados

WHERE contrato < '01/01/1988';
numemp nombre contrato
101 Antonio Viguer 1986-10-20
102 Alvaro Jaumes 1986-12-10
103 Juan Rovira 1987-03-01
104 José González 1987-05-19

También podemos utilizar funciones, ésta es equivalente a la anterior:

SELECT numemp, nombre

FROM empleados

WHERE YEAR(contrato) < 1988;

La función YEAR(fecha) devuelve el año de una fecha.

Hallar oficinas cuyas ventas estén por debajo del 80% de su objetivo:

SELECT  oficina

FROM  oficinas

WHERE  ventas < (.8 * objetivo);

Hallar las oficinas dirigidas por el empleado 108:

SELECT  oficina

    FROM  oficinas

    WHERE  dir = 108;
Febrero-2010
Pág. 3.11

Atrás  Inicio  Adelante



.