sql >> Base de Datos >  >> RDS >> Database

12 operadores SQL de uso común

En SQL, un operador es un carácter especial o palabra clave que especifica una acción que se realiza en una o más expresiones.

Los operadores de SQL son una parte integral de SQL y nos permiten escribir consultas que arrojan resultados relevantes.

En este artículo, presento 12 de los operadores SQL más utilizados al escribir consultas SQL.

Los Iguales (= ) Operador

El operador Igual (= ) es probablemente el operador más utilizado en SQL. Compara la igualdad de dos expresiones. Incluso si no está más que vagamente familiarizado con SQL, probablemente conocerá este operador.

Imagine que tenemos una base de datos para un hotel de mascotas y queremos obtener información sobre todas las mascotas llamadas Fluffy.

En ese caso, podríamos hacer esto:

SELECT PetId, PetName, DOB 
FROM Pets
WHERE PetName = 'Fluffy';

Resultado:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 6       | Fluffy    | 2020-09-17 |
+---------+-----------+------------+

Nuestra consulta usa el operador Igual a (= ) para comparar la igualdad del valor de PetName columna y la cadena Fluffy .

En nuestro caso, podemos ver que el hotel de mascotas actualmente tiene dos mascotas llamadas Fluffy.

El mayor que (> ) Operador

El operador Mayor que (> ) compara dos expresiones y devuelve TRUE si el operando izquierdo tiene un valor mayor que el operando derecho; de lo contrario, el resultado es FALSE .

SELECT PetName, DOB 
FROM Pets
WHERE DOB > '2020-01-01';

Resultado:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fluffy    | 2020-11-20 |
| Wag       | 2020-03-15 |
| Tweet     | 2020-11-28 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

En este caso, está comparando el valor de DOB columna y la fecha 2020-01-01 para ver si el DOB columna es mayor.

El menor que (< ) Operador

El operador Menor que (< ) hace lo contrario. Compara dos expresiones y devuelve TRUE si el operando izquierdo tiene un valor menor que el operando derecho; de lo contrario, el resultado es FALSE .

SELECT PetName, DOB 
FROM Pets
WHERE DOB < '2020-01-01';

Resultado:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
+-----------+------------+

El mayor o igual que (>= ) Operador

El operador Mayor que o Igual que (>= ) compara dos expresiones y devuelve TRUE si el operando izquierdo tiene un valor mayor o igual que el operando derecho; de lo contrario, devuelve FALSE .

SELECT PetName, DOB 
FROM Pets
WHERE DOB >= '2020-09-17';

Resultado:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fluffy    | 2020-11-20 |
| Tweet     | 2020-11-28 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

Tenga en cuenta que devolvió 2020-09-17 y todas las fechas posteriores a esa. Si hubiéramos usado el operador Mayor que (> ), solo se habrían devuelto las dos primeras filas.

El menor que o igual a (<= ) Operador

El operador Menor que o Igual a (<= ) compara dos expresiones y devuelve TRUE si el operando izquierdo tiene un valor menor o igual que el operando derecho; de lo contrario, el resultado es FALSE .

SELECT PetName, DOB 
FROM Pets
WHERE DOB <= '2020-09-17';

Resultado:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
| Wag       | 2020-03-15 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

Tenga en cuenta que devolvió 2020-09-17 y todas las fechas menos que eso. Si hubiésemos utilizado el operador Menor que (< ), solo se habrían devuelto las tres primeras filas.

El AND Operador

El AND El operador combina dos expresiones booleanas y devuelve TRUE cuando ambas expresiones son TRUE .

He aquí un ejemplo.

SELECT PetId, DOB 
FROM Pets
WHERE PetName = 'Fluffy'
AND DOB > '2020-01-01';

Resultado:

+---------+------------+
| PetId   | DOB        |
|---------+------------|
| 1       | 2020-11-20 |
| 6       | 2020-09-17 |
+---------+------------+

En este caso, solo obtenemos detalles de las mascotas cuyo nombre es Fluffy y su fecha de nacimiento está entre las dos fechas.

El OR Operador

El OR El operador combina dos expresiones booleanas y devuelve TRUE cuando cualquiera de las condiciones es TRUE .

He aquí un ejemplo.

SELECT 
    PetId, 
    PetName,
    DOB 
FROM Pets
WHERE PetName = 'Fluffy' OR PetName = 'Bark';

Resultado:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 6       | Fluffy    | 2020-09-17 |
| 7       | Bark      | NULL       |
+---------+-----------+------------+

Esto es básicamente lo opuesto a AND operador. Si hubiéramos usado AND , no se habrían devuelto filas, porque no podemos tener dos valores diferentes en una columna al mismo tiempo.

El BETWEEN Operador

El BETWEEN El operador nos permite especificar un rango para probar. Por ejemplo, podemos usarlo para devolver mascotas que nacieron entre dos fechas.

SELECT
    PetName,
    DOB
FROM Pets
WHERE DOB BETWEEN '2018-01-01' AND '2020-01-01';

Resultado:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
+-----------+------------+

El NOT Operador

El NOT El operador niega una entrada booleana (invierte el valor de cualquier expresión booleana). Por lo tanto devuelve TRUE cuando la expresión es FALSE .

Esto es lo que sucede cuando agregamos el NOT operador a nuestro ejemplo anterior.

SELECT
    PetName,
    DOB
FROM Pets
WHERE DOB NOT BETWEEN '2018-01-01' AND '2020-01-01';

Resultado:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fluffy    | 2020-11-20 |
| Wag       | 2020-03-15 |
| Tweet     | 2020-11-28 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

Esta vez tenemos todas las demás mascotas:las mascotas que no eran nacidos entre esas fechas.

En MariaDB, NOT se limita a negar el IN , BETWEEN y EXISTS cláusulas. La mayoría de los otros DBMS permiten NOT para negar cualquier expresión.

El IN Operador

El IN El operador determina si un valor especificado coincide con cualquier valor en una subconsulta o una lista.

He aquí un ejemplo.

SELECT 
    PetId, 
    PetName, 
    DOB 
FROM Pets
WHERE PetName IN ('Fluffy', 'Bark', 'Wag');

Resultado:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 4       | Wag       | 2020-03-15 |
| 6       | Fluffy    | 2020-09-17 |
| 7       | Bark      | NULL       |
+---------+-----------+------------+

Podríamos lograr el mismo resultado usando dos OR operadores:

SELECT 
    PetId, 
    PetName, 
    DOB 
FROM Pets
WHERE PetName = 'Fluffy' 
    OR PetName = 'Bark' 
    OR PetName = 'Wag';

Sin embargo, el IN operator es una forma más concisa de hacerlo. El IN El operador es especialmente beneficioso cuando tiene una larga lista de valores con los que comparar.

El IN operador casi siempre se ejecuta más rápido que múltiples OR operadores, especialmente en conjuntos de datos más grandes.

Otro beneficio del IN operador, es que puede contener otro SELECT lista. Esto se conoce como una subconsulta . Una subconsulta es una consulta anidada dentro de otra consulta (o incluso otra subconsulta).

He aquí un ejemplo.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets );

Resultado:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
+-------------+-----------+

Este ejemplo nos muestra cuántos tipos de mascotas hay en nuestro hotel para mascotas.

Podríamos usar el NOT operador para cambiar esto y ver cuántos tipos de mascotas no en nuestro hotel para mascotas.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId NOT IN ( SELECT PetTypeId FROM Pets );

Resultado:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 4           | Rabbit    |
+-------------+-----------+

Así que nuestra base de datos contiene un tipo de mascota de Rabbit , pero actualmente no tenemos conejos como mascotas.

El + y || Operadores de concatenación de cadenas

El + y || Los operadores de concatenación de cadenas le permiten concatenar cadenas. La concatenación de cadenas es la operación de unir cadenas de caracteres de extremo a extremo.

La razón por la que he enumerado dos operadores que hacen lo mismo es porque el + El operador es compatible con SQL Server y el || El operador es compatible con DB2, Oracle, PostgreSQL, SQLite.

Aquí hay un ejemplo que funciona en SQL Server.

SELECT 
    FirstName,
    LastName,
    FirstName + LastName
FROM Owners;

Resultado:

+-------------+------------+--------------------+
| FirstName   | LastName   | (No column name)   |
|-------------+------------+--------------------|
| Homer       | Connery    | HomerConnery       |
| Bart        | Pitt       | BartPitt           |
| Nancy       | Simpson    | NancySimpson       |
| Boris       | Trump      | BorisTrump         |
+-------------+------------+--------------------+

En este caso, los propietarios tienen su nombre y apellido almacenados en diferentes columnas. En nuestro SELECT list, primero los recuperamos individualmente, pero también los recuperamos nuevamente, usando un operador de concatenación para unirlos.

Sin embargo, hay un par de problemas con nuestros resultados.

  • No hay espacio entre el nombre y el apellido.
  • No hay nombre de columna.

Afortunadamente, esto es fácil de solucionar.

Podemos usar la misma operación de concatenación para incluir espacios entre el nombre y el apellido.

Y podemos usar un alias de columna para el resultado concatenado para proporcionar un nombre de columna en el conjunto de resultados.

SELECT 
    FirstName,
    LastName,
    FirstName + ' ' + LastName AS FullName
FROM Owners;

Resultado:

+-------------+------------+---------------+
| FirstName   | LastName   | FullName      |
|-------------+------------+---------------|
| Homer       | Connery    | Homer Connery |
| Bart        | Pitt       | Bart Pitt     |
| Nancy       | Simpson    | Nancy Simpson |
| Boris       | Trump      | Boris Trump   |
+-------------+------------+---------------+

Si está utilizando DB2, Oracle, PostgreSQL, SQLite, cambie + para || y debería funcionar bien.

Si usa MySQL o MariaDB, deberá usar CONCAT() función para concatenar cadenas.

El LIKE Operador

El LIKE operador le permite hacer coincidencia de patrones. Determina si una cadena de caracteres específica coincide con un patrón específico. Un patrón puede incluir caracteres regulares y caracteres comodín.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '%.com';

Resultado:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | [email protected] |
| Bart        | Pitt       | [email protected]  |
+-------------+------------+-------------------+

En este ejemplo, utilicé LIKE operador junto con el % operador comodín para devolver los propietarios cuyas direcciones de correo electrónico terminan en .com .

¡Operador adicional! El % Operador comodín

El % El operador comodín coincide con cualquier cadena de cero o más caracteres. Se puede usar como prefijo o sufijo, y también se puede usar en medio de una cadena.

Tiende a usarse más comúnmente como sufijo y tiene un uso limitado en medio de patrones, aunque existen algunos casos de uso válidos para usarlo en medio de un patrón, como los siguientes:

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '[email protected]%.com';

Resultado:

+-------------+------------+------------------+
| FirstName   | LastName   | Email            |
|-------------+------------+------------------|
| Bart        | Pitt       | [email protected] |
+-------------+------------+------------------+

En este caso, no sabíamos la dirección de correo electrónico de bart, pero sabíamos que empezaba con [email protected] y terminó en .com . Por lo tanto, pudimos usar LIKE junto con el % operador comodín para completar el resto.

Tenga en cuenta que esta técnica puede devolver muchas filas irrelevantes, dependiendo de los datos y de cómo construya su declaración SQL.

También tenga en cuenta que las consultas que contienen LIKE La cláusula puede ejecutarse mucho más lentamente que otras consultas, y probablemente debería evitar usar LIKE cláusula a menos que realmente la necesite. Usando el % operador como prefijo puede ser particularmente lento.

Eso no quiere decir que no debas usarlo en absoluto. El LIKE operator es una parte integral de SQL, y encontrará muchos escenarios en los que será la única opción (o al menos, la mejor opción).

Más operadores SQL

Consulte mi lista completa de operadores de SQL para ver un montón de otros operadores que no están incluidos aquí.