Operadores en SQL

Los operadores son símbolos que especifican el tipo de cálculo que realizan las diferentes expresiones. Atendiendo a su naturaleza podemos dividirlos en:

  • Operadores aritméticos.
  • Operadores de comparación.
  • Operadores lógicos.
  • Operadores de concatenación.
  • Operadores especiales.

Aunque los operadores no sean exclusivos al uso de la cláusula WHERE de una SELECT, en esta sección nos centraremos en los más utilizados en la misma para el filtrado y aplicación de condiciones de una consulta. No obstante, el usuario tiene acceso a más información en la documentación de Microsoft referente a los tipos de operadores.

Operadores de comparación

Comprueban si dos expresiones son iguales. Entre estos comparadores encontramos:

Operador de igualdad simple (=)

Esta condición devolverá el registro/s cuyo valor del campo sea igual al de la condición que estemos buscando:

SELECT *
FROM Clientes c
WHERE c.idClientes = 3;
idClientes nombre apellidos direccion cuenta
3 Ana Fernandez Montero Av. de Santiago 11 998344567

También se puede filtrar por cadena de texto:

SELECT p.producto,
       p.precio,
       p.numeroProductos
FROM Pedidos p
WHERE p.descripcionProducto = 'Consola Sony';
producto precio numeroProductos
Play Station 5 549,95 4

Es importante mencionar que no podemos igualar a NULL de la siguiente manera: = NULL

Operador mayor que (>)

Este operador devolverá los registros cuyo valor del campo de la tabla sea mayor al valor que estemos introduciendo en la condición:

SELECT p.producto,
       p.precio,
       p.numeroProductos
FROM Pedidos p
WHERE p.precio > 549.95;
producto precio numeroProductos
MacBook Pro M1 2449,5 1

Operador mayor igual que (>=)

Este operador devolverá los registros cuyo valor del campo de la tabla sea mayor o igual al valor que estemos introduciendo en la condición:

SELECT p.producto,
       p.precio,
       p.numeroProductos
FROM Pedidos p
WHERE p.precio >= 549.95;
producto precio numeroProductos
Play Station 5 549,95 4
MacBook Pro M1 2449,5 1

Operador menor que (<)

Este operador devolverá los registros cuyo valor del campo de la tabla sea menor al valor que estemos introduciendo en la condición:

SELECT p.producto,
       p.precio,
       p.numeroProductos
FROM Pedidos p
WHERE p.precio < 549.95;
producto precio numeroProductos
Xiami Mi 11 286,95 15
Xbox series X 499,99 2
Echo DOT 3 39,99 50
Echo DOT 4 59,99 50
Nintendo Switch 299,99 3

Operador menor igual que (<=)

Este operador devolverá los registros cuyo valor del campo de la tabla sea menor o igual al valor que estemos introduciendo en la condición:

SELECT p.producto,
       p.precio,
       p.numeroProductos
FROM Pedidos p
WHERE p.precio <= 549.95;
producto precio numeroProductos
Xiami Mi 11 286,95 15
Play Station 5 549,95 4
Xbox series X 499,99 2
Echo DOT 3 39,99 50
Echo DOT 4 59,99 50
Nintendo Switch 299,99 3

Operador diferente a (<>)

Este operador devolverá los registros cuyo valor del campo de la tabla sea diferente al valor que estemos introduciendo en la condición:

SELECT *
FROM Clientes c
WHERE C.nombre <> 'Ana';

Este operador también podrá escribirse con el símbolo:!=

SELECT *
FROM Clientes c
WHERE C.nombre != 'Ana';
idClientes nombre apellidos direccion cuenta
1 Fernando García Rodriguez C/ Virgen del rosal 28 111222333
2 María Lopez ruiz C/ Alcalá 138 123456789
4 Luis Sanchez García C/ de la luz 21 447824556
5 Alejandro Valero Martinez C/ Serrano 67 778345112

Operador igual a NULL (IS NULL)

Este operador devolverá los registros cuyo valor del campo de la tabla sea NULL:

SELECT *
FROM Clientes
WHERE cuenta IS NULL;

Recordamos que no puede usarse el operador de igualdad simple = NULL

Operadores lógicos

Los operadores lógicos, validan la veracidad de condiciones específicas.

Operador LIKE

Este operador nos permite buscar registros tomando en cuenta toda o solo una parte de una cadena string:

SELECT *
FROM Clientes c
WHERE c.direccion LIKE '%Santi%';
idClientes nombre apellidos direccion cuenta
3 Ana Fernandez Montero Av. de Santiago 11 998344567

El operador LIKE también permite buscar por el inicio de una cadena:

SELECT p.producto,
       p.precio,
       p.numeroProductos
FROM Pedidos p
WHERE p.producto LIKE 'X%';
producto precio numeroProductos
Xiami Mi 11 286,95 15
Xbox series X 499,99 2

Igualmente podremos buscar por el/los carácter/es finales de una cadena:

SELECT p.producto,
       p.precio,
       p.numeroProductos
FROM Pedidos p
WHERE p.producto LIKE '%Switch';
producto precio numeroProductos
Nintendo Switch 299,99 3

Operador condicional OR

Este operador se utiliza para validar varias condiciones. Si alguna de ellas se cumple, la SELECT devolverá el registro determinado:

SELECT *
FROM Pedidos p
WHERE p.totalPrecio > 2500
OR p.fechaPedido > '2022-08-01'
idPedidos producto descripcionProducto precio fechaPedido numeroProductos totalPrecio idClientes
1 Xiami Mi 11 Smartphone 286,95 2022-07-09 15 4304,25 3
5 Echo DOT 3 Altavoz Alexa 39,99 2022-09-01 50 1999,5 4
6 Echo DOT 4 Altavoz Alexa 59,99 2022-09-01 50 2999,5 4
7 Nintendo Switch Consola Nintendo 299,99 2022-09-05 3 899,97 5

En este caso observamos que, si bien no todos los registros devueltos tienen un totalPrecio mayor a 2500 incumpliéndose dicha condición, el resto cumple la condición respectiva a la fechaPedido.

Operador condicional AND

Este operador se utiliza para validar varias condiciones. Se deben cumplir todas para que la SELECT devuelva la información:

SELECT *
FROM Pedidos p
WHERE p.totalPrecio > 2500
AND p.fechaPedido > '2022-08-01'
AND p.producto LIKE '%DOT%';
idPedidos producto descripcionProducto precio fechaPedido numeroProductos totalPrecio idClientes
6 Echo DOT 4 Altavoz Alexa 59,99 2022-09-01 50 2999,5 4

Operador IN

El operador IN permite filtrar una lista de valores para devolver los registros correspondientes:

SELECT *
FROM Clientes c
WHERE C.nombre IN ('Fernando',
                  'Alejandro',
                  'Luis');
idClientes nombre apellidos direccion cuenta
1 Fernando García Rodriguez C/ Virgen del rosal 28 111222333
4 Luis Sanchez García C/ de la luz 21 447824556
5 Alejandro Valero Martinez C/ Serrano 67 778345112

Operador BETWEEN

Este operador devolverá los registros comprendidos en un rango de valores.

SELECT * FROM Pedidos p
WHERE p.fechaPedido
BETWEEN '2022-07-15' AND '2022-09-01';
idPedidos producto descripcionProducto precio fechaPedido numeroProductos totalPrecio idClientes
2 Play Station 5 Consola Sony 549,95 2022-07-18 4 2199,8 2
5 Echo DOT 3 Altavoz Alexa 39,99 2022-09-01 50 1999,5 4
6 Echo DOT 4 Altavoz Alexa 59,99 2022-09-01 50 2999,5 4

Operador de negación: NOT

Este operador devolverá los registros que no cumplan las condiciones especificadas:

SELECT cuenta F
ROM Clientes
WHERE cuenta IS NOT NULL;

Esta ejecución devolverá todas las cuentas de la tabla Clientes.

cuenta
111222333
123456789
447824556
778345112
998344567