Saltar la navegación

3.4. Condiciones

Las consultas SQL que recuperan todas las filas de una tabla únicamente son útiles para generar informes sobre la base de datos. Generalmente se desea seleccionar solamente parte de las filas de una tabla, y sólo se incluirán esas filas en los resultados.

La cláusula WHERE se emplea para especificar las filas que se desean recuperar. Prueba en la base de datos Neptuno los siguientes ejemplos:


select NombreProducto, UnidadesEnExistencia, PrecioUnidad FROM Neptuno.Productos WHERE UnidadesEnExistencia>100;

select Nombre, Apellidos, Direccion FROM Neptuno.Empleados WHERE Ciudad="Londres";

select Nombre, Apellidos, Direccion, Ciudad FROM Neptuno.Empleados WHERE Ciudad<>"Londres";

select NombreCompañia, Direccion, Ciudad FROM Neptuno.Clientes WHERE Pais="Canada";

 

Where

La cláusula WHERE consta de la palabra clave WHERE seguida de una condición de búsqueda que especifica las filas a recuperar. Conceptualmente, SQL recorre cada fila de la tabla seleccionada, una a una, y aplica la condición de búsqueda. Esta condición de búsqueda puede producir uno de los tres resultados:

  • Si la condición de búsqueda es cierta, la fila se incluye en los resultados de la consulta.
  • Si la condición de búsqueda es falsa, la fila se excluye de los resultados de la consulta.
  • Si la condición de búsqueda tiene un valor NULL (desconocido), la fila se excluye de los resultados de la consulta.

Condiciones de búsqueda

SQL ofrece un rico conjunto de condiciones de búsqueda que permiten especificar muchos tipos diferentes de consultas eficaz y naturalmente. Las condiciones de búsqueda son cinco según el estándar ANSI/ISO:

Comparación

Compara el valor de una expresión con el valor de otra.

Es la más utilizada. En esta consulta, SQL calcula y compara los valores de dos expresiones SQL por cada fila de datos. Las expresiones pueden ser tan simples como un nombre de columna o una constante, o pueden ser expresiones aritméticas más complejas. SQL ofrece seis modos de comparar dos expresiones (=, <>, <, <=, >, >=).

SELECT Nombre,Apellidos,Cargo FROM Neptuno.Empleados WHERE FechaNacimiento<'1960/01/01';

SELECT NombreProducto,UnidadesEnExistencia FROM Neptuno.Productos WHERE UnidadesEnExistencia>=120;

Rango

Examina si el valor de una expresión cae dentro de un rango especificado de valores.

SQL proporciona una forma diferente de condición de búsqueda con el test de rango (BETWEEN). El test de rango comprueba si el valor del dato se encuentre entre dos valores especificados o no (NOT BETWEEN).

SELECT Nombre,Apellidos,FechaContratacion FROM Neptuno.Empleados WHERE FechaContratacion BETWEEN '1990/01/01' AND '2000/01/01';

SELECT NombreProducto,UnidadesEnExistencia FROM Neptuno.Productos WHERE UnidadesEnExistencia BETWEEN 50 AND 75;

SELECT NombreProducto,UnidadesEnExistencia FROM Neptuno.Productos WHERE UnidadesEnExistencia NOT BETWEEN 20 AND 120;

Pertenencia a conjunto

Comprueba si el valor de una expresión se corresponde con uno de un conjunto de valores.

Examina si un valor de dato coincide con uno de una lista de valores objetivo mediante la sentencia IN. Veamos varios ejemplos:

SELECT NombreCompañia,Ciudad FROM Neptuno.Clientes WHERE Ciudad IN ("Berlin","Madrid","Marsella");

SELECT NombreProducto,UnidadesEnPedido FROM Neptuno.Productos where UnidadesEnPedido IN (10,20,50);

Correspondencia con patrón

Comprueba si el valor de una columna que contiene datos de cadena de caracteres se corresponde a un patrón especificado.

Se puede utilizar un test de comparación simple para recuperar las filas en donde el contenido de una columna de texto se corresponde con un cierto texto particular. Sin embargo, uno puede olvidar fácilmente el nombre exacto de la empresa. El test de correspondencia con patrón (LIKE) comprueba si el valor de dato de una columna se ajusta a un patrón especificado. El patrón es una cadena que puede incluir uno o más caracteres comodines. Estos caracteres comodines son el signo de porcentaje (%) y el subrayado (_). El carácter comodín signo de porcentaje (%) se corresponde con cualquier secuencia de cero o más caracteres. El carácter comodín subrayado (_) se corresponde con cualquier carácter simple.

Observa la diferencia entre estas consultas:

SELECT NombreCompañia,NombreContacto,Telefono FROM Neptuno.Clientes WHERE Ciudad="Berna"

SELECT NombreCompañia,NombreContacto,Telefono,Ciudad FROM Neptuno.Clientes WHERE Ciudad LIKE "Ber%"

SELECT NombreCompañia,NombreContacto,Telefono,Ciudad FROM Neptuno.Clientes WHERE Ciudad LIKE "Ber%n%"

SELECT NombreProducto,UnidadesEnPedido FROM Neptuno.Productos WHERE NombreProducto LIKE "%c_r__";

SELECT NombreProducto,UnidadesEnPedido FROM Neptuno.Productos WHERE NombreProducto LIKE "%c_r%";

Valor nulo

Comprueba si una columna tiene un valor NULL (desconocido).

En algunas ocasiones es útil comprobar explícitamente los valores NULL en una condición de búsqueda y manejarlos directamente. SQL proporciona un test especial de valor nulo (IS NULL) para tratar este caso. La forma negada del test de valor nulo (IS NOT NULL) encuentra las filas que no contienen un valor NULL.

Por ejemplo, la consulta siguiente utiliza el test de valor nulo para hallar las compañías que no tienen fax:

SELECT NombreCompañia, Telefono, Fax FROM Neptuno.Clientes WHERE Fax IS NULL;

SELECT NombreCompañia, Telefono, Fax FROM Neptuno.Clientes WHERE Fax IS NOT NULL;