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 |