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 |