El lenguaje de consulta estructurado (SQL) proporciona a los usuarios de la base de datos la capacidad de crear consultas personalizadas para extraer información de las bases de datos. En un artículo anterior, exploramos la extracción de información de una base de datos utilizando consultas SQL SELECT. Expandiremos esa discusión y exploraremos cómo puede realizar consultas avanzadas para recuperar datos que coincidan con condiciones específicas.
Consideremos un ejemplo basado en la base de datos Northwind, que frecuentemente se envía con productos de base de datos como tutorial.
He aquí un extracto de la tabla de productos de la base de datos:
ProductoIDNombreProductoSuministradorIDCantidadPorUnidadPrecioUnidadUnidadesEnStock1Chai110 cajas x 20 bolsas18.00392Chang124 – Botellas de 12 oz19.00173Jarabe Anisado112 – Botellas de 550 ml10.00134Sazonador Cajún del Chef Antón248 – frascos de 6 oz22.00535Chef Antón’s Gumbo Mix236 cajas21.3506Grandma’s Boysenberry Spread312 – frascos de 8 oz25.001207Tío Bob’s Organic Dried Pears312 – 1 lb pkgs.30.0015Tabla de productos
Condiciones de contorno simples
Las primeras restricciones que pondremos en nuestra consulta se refieren a condiciones de contorno simples. Podemos especificarlas en la cláusula WHERE de la consulta SELECT, utilizando simples sentencias de condición construidas con operadores estándar, tales como <,>,,>=, y <=.
Primero, probemos una consulta simple que nos permita extraer una lista de todos los productos de la base de datos que tengan un precio unitario de más de 20.00:
Seleccione el nombre del producto, el precio unitario de los productos en cualquier parte del mundo.
Esto produce una lista de cuatro productos, como se muestra a continuación:
También podemos usar la cláusula WHERE con valores de cadena. Esto básicamente iguala caracteres a números, con A representando el valor 1 y Z representando el valor 26. Por ejemplo, podríamos mostrar todos los productos con nombres que empiecen por U, V, W, X, Y o Z con la siguiente consulta:
SELECCIONAR NOMBRE DE PRODUCTOS EN TODO EL LUGAR NOMBRE DE PRODUCTO>= ‘T’
Lo que produce el resultado:
Nombre del producto———-Tío Bob’s Organic Dried Pears
Expresar rangos usando límites
La cláusula WHERE también nos permite implementar una condición de rango sobre un valor utilizando múltiples condiciones. Por ejemplo, si quisiéramos tomar nuestra consulta anterior y limitar los resultados a productos con precios entre las 15.00 y las 20.00 horas, podríamos usar la siguiente consulta:
SELECCIONE el nombre del producto, el precio unitario de los productos en cualquier parte del mundo, 15.00 Y el precio unitario < 20.00
>.
Esto produce el resultado que se muestra a continuación:
Nombre del producto Precio de la unidad---------- --------Chai 18.00Chang 19.00
Expresar rangos con ENTRE
SQL también proporciona un acceso directo ENTRE la sintaxis que reduce el número de condiciones que necesitamos incluir y hace que la consulta sea más legible. Por ejemplo, en lugar de utilizar las dos condiciones WHERE anteriores, podríamos expresar la misma consulta como:
Seleccione el nombre del producto, el precio unitario de los productos en cualquier lugar entre 15,00 y 20,00 Al igual que con nuestras otras cláusulas de condiciones, ENTRE ellas también funciona con valores de cadena. Si quisiéramos producir una lista de todos los países que empiezan por V, W o X, podríamos utilizar la consulta:
SELECCIONAR EL NOMBRE DE PRODUCTOS EN TODOS LOS LUGARES Nombre de producto ENTRE "A" y "D"
Lo que produce el resultado:
La cláusula WHERE es una parte potente del lenguaje SQL que le permite restringir los resultados a valores que se encuentran dentro de los rangos especificados. Se utiliza muy comúnmente para ayudar a expresar la lógica del negocio y debería formar parte del conjunto de herramientas de todo profesional de bases de datos. A menudo es útil incorporar cláusulas comunes en un procedimiento almacenado para hacerlo accesible a aquellos que no tienen conocimientos de SQL.