SQL básico. Operadores en la cláusula Where.

¿Que es un operador en SQL? Un operador es un símbolo que especifica una acción a ejecutar en una o más expresiones. Existen diferentes tipos de operadores según su uso o aplicación en SQL.

Operadores de comparación en SQL.

En las anteriores secciones ya hemos visto el uso de un operador de comparación en la cláusula WHERE: el operador “=” (igual). En dichos ejemplos, hemos usado el operador “igual” para comparar dos expresiones: un campo o columna y una expresión literal (un número):

SELECT … WHERE modelo_id = 363 ORDER BY …;

Operador “=” (igual).

Sintaxis: expresión = expresión

El operador “igual” (=) compara las dos expresiones y regresa un valor de falso o verdadero o podemos decir que se cumple o no se cumple la condición. A los valores de falso y verdadero se le llaman valores “booleanos”. El operador “igual” (=) regresará el valor booleano verdadero (se cumple la condición) únicamente si las dos expresiones que está comparando son iguales, en caso contrario, regresará falso (no se cumple la condición de igualdad).

Operador “<” (menor que).

Sintaxis: expresión < expresión

Este operador regresará verdadero (la condición será verdadera) si la primera expresión es menor a la segunda expresión, si la primera expresión es igual o mayor a la segunda expresión, regresara falso.

Operador “>” (mayor que).

Sintaxis: expresión > expresión

Este operador regresará verdadero solamente cuando la primera expresión sea mayor a la segunda expresión, en caso contrario regresará falso.

Operador “<=” (menor o igual a).

Sintaxis: expresión <= expresión

Cuando la primera expresión sea menor o igual a la segunda expresión, regresará verdadero, en caso contrario, regresará falso.

Operador “>=” (mayor o igual a)

Sintaxis: expresión >= expresión

Si la primera expresión es mayor o igual a la segunda expresión, regresará verdadero, si no regresará falso.

Operador “<>” (diferente o no es igual a)

Sintaxis: expresión <> expresión

Si la primera expresión es diferente o no es igual a la segunda expresión, regresará verdadero. Cuando las expresiones son iguales, regresará falso.

Vamos a ver algunos ejemplos se sentencias usando los operadores de comparación anteriores. Omitiremos el operador “igual” (=) que ya hemos visto.

Escribe y ejecuta las siguientes sentencias que ejemplifican los operadores de comparación y analiza los resultados.

Operador < (menor que).
Operador > (mayor que).
Operador <= (menor o igual a)

Compara los resultados de esta sentencia que ejemplifica el operador “<=” (menor o igual a), con los resultados de la sentencia del operador “<” (menor que). Como existe el “id_producto” con valor 11, este se incluye en los resultados de esta última instrucción a diferencia de la otra sentencia que no lo incluye en los resultados.

Operador >= (mayor o igual a)

Al igual que la anterior, compara los resultados de esta última sentencia y la sentencia que ejemplifica el “>” (mayor que) que se vio más arriba. Esta última incluye el id_producto 14812.

Por último, para ejemplificar el operador “<>” (diferente o no igual a) vamos a ejecutar la siguiente sentencia sin incluir este operador y enseguida escribiremos la misma sentencia, pero ahora sí incluyendo el operador “<>” agregando la cláusula WHERE.

Lista los 5 “id_producto” menores.
Operador <> (diferente o no igual a).

Como puedes observar en esta última sentencia, le especificamos que solo muestre los registros o filas cuyo valor de su columna “id_producto” sea diferente o no igual a 11. Por eso en la segunda sentencia desaparece el registro que tiene el valor 11 en ese campo o columna. Pero ¿por qué aparece el registro o fila con el “id_producto” 48? Te lo dejo de tarea. Si algo no queda claro, escríbeme un comentario.

En la siguiente sección veremos otro tipo de operadores SQL: los operadores lógicos.

¡Hasta la próxima!

SQL básico. Cómo limitar el número de filas a regresar en una consulta.

Hasta el momento hemos visto como listar todas las filas de una tabla así como sólo mostrar las que cumplan cierta condición o filtro. En esta sección vamos a ver cómo limitar el número de filas que regresa una consulta mediante la subcláusula o comando LIMIT de SELECT, estén o no filtradas las filas. Cabe aclarar que no todos los motores de base de datos usan el comando LIMIT para limitar el número de filas. SQL Server por ejemplo, utiliza la subcláusual o comanto TOP, Oracle utiliza OFFSET FETCH o la función ROWNUM, etc., SQLite utiliza LIMIT.

Vayamos directamente al ejemplo. Ejecuta primero la siguiente sentencia y observa el resultado:

Consulta sin límite de filas.

Observa que la consulta recuperó o listó 184 filas. Ahora le agregamos el comando o subcláusula LIMIT a la instrucción SELECT. Observa que LIMIT va al final de la sentencia. Ejecuta la siguiente sentencia:

Consulta limitada a las primeras 5 filas.

Observa que sólo recupero las 5 primeras filas de la consulta anterior. Esto es debido a que agregando el comando SELECT la siguiente subcláusula al final:

… LIMIT número-filas;

Le estamos indicando que de los resultados de la consulta, solo nos muestre o recupere los número-filas (número de filas) indicadas. En nuestra consulta le especificamos que 5.

Veamos otra variante de la subcláusula LIMIT:

... LIMIT desplazamiento,número-filas;

Si el comando LIMIT es seguido por dos números enteros separados por comas, el primero (desplazamiento) le indica cuántas filas de las primeras que regresaría la consulta va a saltar o a ignorar y el segundo (número-filas) el número de filas que va mostrar. Se verá mejor con el siguiente ejemplo. Ejecuta y trata de entender que está pasando.

Consulta con desplazamiento y limite de filas.

Si observas los resultados en la primera imagen de esta sección, la primera consulta que hicimos sin limitar el número de filas, verás que ignoró las primeras 5 filas y partir de la fila 6 inclusive, nos mostró los 4 registros siguientes solamente.

Generalmente, LIMIT se va a usar con filas ordenadas, es decir, con instrucciones SELECT que incluyan el ORDER BY. Como ejercicio, practica haciendo tus propias consultas limitando los resultados con desplazamiento y sin desplazamiento.

En la siguiente sección veremos algunos operadores de la cláusula WHERE que ya hemos usado.

¡Hasta la próxima!

SQL básico. Cómo ordenar los resultados de una consulta.

En las consultas que hemos escrito el las secciones anteriores, los registros resultantes no aparecen en ningún orden. En bases de datos no siempre los resultado se muestran en el orden en que fueron agregados a la tabla. Pensar esto es un error común. Cada actualización de la tabla va alterando el orden de los registros en la misma. Para ordenar los resultados, la instrucción SELECT cuenta con la cláusula ORDER BY.

Cómo ordenar los resultados por un campo o columna en SQL.

La sintaxis más simple es la siguiente:

SELECT * FROM nombre-tabla ORDER BY nombre_campo;

O si queremos limitar el numero de columnas a mostrar:

SELECT lista-de-campos FROM nombre-tabla ORDER BY nombre_campo;

Escribe la siguiente sentencia, ejecútala y desplázate hasta ver los valores de la columna “id_marca”.

Resultados ordenador por “id_marca”.

Recuerda que el asterisco (*) indica mostrar todos las columnas que contiene la tabla. Si te desplazas hacia abajo de los resultados, veras que los registros se visualizan ordenados por el valor del campo o columna “id_marca” del valor más pequeño al mayor, numéricamente hablando, ya que la columna “id_marca” es de un tipo de dato numérico. Por defecto, la cláusula ORDER BY ordena los campos que se le indiquen en forma ascendente (de menor a mayor).

Se puede alterar este orden utilizando la palabra reservada DESC (descendente) inmediatamente después del nombre del campo separad por un espacio. Ejecuta el siguiente ejemplo y observa los resultados:

Ordenar los registros por “id_marca” en forma descendente.

Como puedes observar en los resultados, los registros de salida ahora aparecen ordenados en forma descendente, de mayor a menor valor, por la columna “id_marca”.

Nota importante: los registros NO son ordenados en la tabla, solo son ordenados en los resultados de la consulta.

Ordenar los resultados de una consulta SQL de sólo las filas seleccionadas.

Anteriormente vimos que listar todo el contenido de una tabla a veces es impráctico, sobre todo cuando la tabla contiene cientos de miles o millones de registros. Es más común limitar el numero de registros a mostrar a través de la cláusula WHERE como lo hemos visto antes. La sintaxis seria esta:

SELECT * FROM nombre-tabla WHERE condición ORDER BY nombre-campo;

Si queremos limitar el numero de columnas reemplaza el asterisco (*) por una lista de columnas o campos que quieras mostrar. Observa que la cláusula que ordena los resultados ORDER BY va siempre después de la cláusula WHERE que filtra los resultados. Internamente la base de datos primero ejecuta el filtrado (WHERE) y una vez que tiene los resultados filtrados, ejecuta el ordenamiento sobre estos. Se dice que la cláusula WHERE tiene más prioridad que ORDER BY en el orden de ejecución de una sentencia SQL.

Escribe y ejecuta la siguiente sentencia y observa los resultados:

Consulta filtrada y ordenada.

Los resultados de la consulta sólo muestra 184 registros que corresponden a los productos que son de la marca 363 y están ordenados por la columna “nombre” en forma ascendente. Como el campo nombre es de tipo TEXT, los valores son ordenados en forma alfabética de la A a la Z. Pero recuerda que el tipo de dato TEXT también soporta caracteres numéricos y especiales, si algún nombre de producto empezara por ejemplo, con el caracter “1”, digamos que tuviera el valor en la columna nombre de “1 y 1”, este valor aparecería antes que el valor “Adaptador”. Los números dentro de un campo tipo TEXT son tratados como caracteres y no como números.

De los valores “11” y “9” dentro de un campo TEXT, si se ordenara ascendentemente aparecería primero el valor “11” que el “9”. Si fuera un campo de tipo numérico, entonces ahí si aparecería primero el 9 y después el 11. Recuerda que cuando se está ordenando un campo TEXT se compara caracter por caracter y el caracter “1” es menor que el caracter “9”. Así que cualquier valor que empiece con “1” digamos que “1000”, seguirá siendo menor que “9”. Los caracteres especiales tienen menor valor que los caracteres numéricos. Ejecuta el siguiente ejemplo y observa como son ordenados los resultados:

Resultados filtrados y ordenados por “modelo”.

Observa que ahora los resultados están ordenados por la columna “modelo”. Puedes observar que los caracteres especiales, en este caso las comillas dobles (“) son de valor menor, enseguida siguen los caracteres numéricos y al final los caracteres alfabéticos.

Haz como práctica los mismos dos ejercicios anteriores pero ordenados en forma descendente.

Cómo ordenar los resultados de una consulta SQL por más de un campo o columna.

La sintaxis para ordenar los resultados por más de un campo o columna de una consulta SQL es la siguiente:

SELECT lista-columnas FROM nombre-tabla ORDER BY columna-1 ORDEN-1, columna-2 ORDEN-2, columna-N orden-N;

O con la clásusula WHERE:

SELECT lista-columnas FROM nombre-tabla WHERE condición ORDER BY columna-1ORDEN-1, columna-2 ORDEN-2, columna-N orden-N;

Donde lista-columnas puede ser una lista de columnas como ya hemos visto o un asterisco (*) para indicar todos los campos y orden-N pueden ser las palabras reservadas o comandos que indican el tipo de orden ASC (ascendente) o DESC (descendente). Por defecto si se omite el orden, se asume que es en orden ascendente. Veamos un ejemplo:

Ordenar por más de un campo o columna.

Ejecuta la sentencia anterior y desliza la barra de desplazamiento para ver todos los resultados. Observa que muestra sólo los productos de la marca 363, enseguida ordena los resultados por el campo “id_categoria” en forma ascendente (por defecto) y después por cada conjunto de filas con el mismo valor en “id_categoria” ordena por “nombre” del producto en forma ascendente (por defecto). Ahora cambiemos el orden de la columna “nombre” a descendente.

Ordenado por más de un campo y diferente orden.

Ejecuta la sentencia y observa los resultados. La categoría sigue ordenada en forma ascendente, pero ahora el nombre de los producto lo muestra en forma descendente.Las filas cambiaron de posición. Por último ejecuta la siguiente sentencia:

Ambos campos en el mismo orden.

Ahora, los registros aparecerán ordenados por categoría y luego por nombre de producto en orden descendente ambos. Por último prueba ordenar primero por la columna “nombre” y después por la columna “id_categoria” en el orden que gustes. Y observa los resultados.

En la siguiente sección veremos cómo limitar el numero de filas que regresa una consulta SELECT.

¡Hasta pronto!