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

Operador SQL es igual a (=) para principiantes

El operador de igualdad (= ) es probablemente el operador más utilizado en SQL. Compara la igualdad de dos expresiones. Incluso si acaba de comenzar su viaje SQL, probablemente conocerá este operador.

Tabla de origen

Imagine que nuestra base de datos contiene la siguiente tabla. Esta es la tabla que usaremos para los ejemplos de esta página.

SELECT * FROM Pets;

Resultado:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+
(8 rows affected)

Ejemplo

Si quisiéramos tener todas las mascotas con un dueño determinado, podríamos hacer esto:

SELECT *
FROM Pets
WHERE OwnerId = 3;

Resultado:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
+---------+-------------+-----------+-----------+------------+

Nuestra consulta usa el operador igual (= ) para comparar la igualdad del valor del OwnerId columna y 3 .

En este caso, el propietario número 3 tiene 3 mascotas.

Cuerdas

Al comparar con un valor de cadena, use comillas alrededor de la cadena. Por ejemplo, si quisiéramos obtener información sobre todas las mascotas llamadas Fluffy, podríamos hacer lo siguiente:

SELECT *
FROM Pets
WHERE PetName = 'Fluffy';

Resultado:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

Nuestra consulta usa el operador igual (= ) 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.

Múltiples Condiciones

Si tiene varias condiciones, puede usar varios operadores iguales.

Así:

SELECT * FROM Pets 
WHERE PetName = 'Fluffy' OR PetName = 'Tweet';

Resultado:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

Podemos ver que devolvió las filas donde PetName la columna era Fluffy o Tweet .

Negar la Condición

Puedes usar el NOT operador para negar la condición proporcionada por el operador igual. He aquí un ejemplo:

SELECT *
FROM Pets
WHERE NOT PetName = 'Fluffy';

Resultado:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

Una forma alternativa de hacer esto es usar el operador no igual a, que es <> o != (o ambos) dependiendo de su DBMS.

Valores NULOS

Es posible que haya notado que nuestra tabla de muestra original contiene un par de NULL valores en la columna DOB.

Una columna que contiene NULL significa que no tiene valor. Esto es diferente a 0 o false , o incluso una cadena vacía.

No puede usar el operador de igualdad para comparar con NULL . En realidad, esto puede depender de su DBMS y su configuración. Pero por ahora, veamos qué sucede si trato de comparar la columna DOB con NULL .

SELECT * FROM Pets 
WHERE DOB = NULL;

Resultado:

(0 rows affected)

La forma de probar NULL es usar IS .

Por lo tanto, necesitaríamos reescribir la declaración anterior de la siguiente manera.

SELECT * FROM Pets 
WHERE DOB IS NULL;

Resultado:

+---------+-------------+-----------+-----------+-------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB   |
|---------+-------------+-----------+-----------+-------|
| 7       | 3           | 2         | Bark      | NULL  |
| 8       | 2           | 4         | Meow      | NULL  |
+---------+-------------+-----------+-----------+-------+

NULL Los valores pueden ser una cosa difícil de entender para los principiantes. En realidad, ¡pueden ser algo complicado para que los desarrolladores experimentados se familiaricen! En SQL, NULL tiene un significado ligeramente diferente a NULL en la mayoría de los demás lenguajes de programación.

Pero lo importante a recordar es que, en SQL, NULL significa la falta de un valor. No hay valor. Por lo tanto, no podemos decir que es igual o no igual a otra cosa, porque no hay ningún valor para empezar.

Si está interesado, consulte SQL Server ANSI_NULLS Explained para ver cómo puedes cambiar la forma NULL los valores se tratan en SQL Server.