Database
 sql >> Base de Dados >  >> RDS >> Database

Operador SQL Equals (=) para iniciantes


O operador igual (= ) é provavelmente o operador mais usado em SQL. Ele compara a igualdade de duas expressões. Mesmo que você tenha acabado de começar sua jornada SQL, provavelmente conhecerá esse operador.

Tabela de origem


Imagine que nosso banco de dados contém a tabela a seguir. Esta é a tabela que usaremos para os exemplos nesta 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)

Exemplo


Se quiséssemos ter todos os animais de estimação com um determinado dono, poderíamos fazer isso:
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 |
+---------+-------------+-----------+-----------+------------+

Nossa consulta usa o operador igual (= ) para comparar a igualdade do valor do OwnerId coluna e 3 .

Neste caso, o proprietário número 3 tem 3 animais de estimação.

Cordas


Ao comparar com um valor de string, use aspas ao redor da string. Por exemplo, se quisermos obter informações sobre todos os animais de estimação chamados Fluffy, podemos fazer o seguinte:
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 |
+---------+-------------+-----------+-----------+------------+

Nossa consulta usa o operador igual (= ) para comparar a igualdade do valor do PetName coluna e a string Fluffy .

No nosso caso, podemos ver que o pet hotel atualmente possui dois pets chamados Fluffy.

Várias Condições


Se você tiver várias condições, poderá usar vários operadores de igual.

Assim:
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 ele retornou as linhas onde o PetName coluna era Fluffy ou Tweet .

Negando a condição


Você pode usar o NOT para negar a condição fornecida pelo operador equals. Aqui está um exemplo:
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       |
+---------+-------------+-----------+-----------+------------+

Uma maneira alternativa de fazer isso é usar o operador diferente de, que é <> ou != (ou ambos) dependendo do seu DBMS.

Valores NULOS


Você deve ter notado que nossa tabela de amostra original contém algumas NULL valores na coluna DOB.

Uma coluna contendo NULL significa que não tem valor. Isso é diferente de 0 ou false , ou até mesmo uma string vazia.

Você não pode usar o operador igual para comparar com NULL . Na verdade, isso pode depender do seu DBMS e de sua configuração. Mas, por enquanto, vamos ver o que acontece se eu tentar comparar a coluna DOB com NULL .
SELECT * FROM Pets 
WHERE DOB = NULL;

Resultado:
(0 rows affected)

A maneira de testar para NULL é usar IS .

Portanto, precisaríamos reescrever a afirmação acima da seguinte forma.
SELECT * FROM Pets 
WHERE DOB IS NULL;

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

NULL valores podem ser uma coisa complicada para os iniciantes entenderem. Na verdade, eles podem ser uma coisa complicada para desenvolvedores experientes entenderem! Em SQL, NULL tem um significado ligeiramente diferente para NULL na maioria das outras linguagens de programação.

Mas o importante a lembrar é que, em SQL, NULL significa a falta de um valor. Não há valor. Portanto, não podemos dizer que é igual ou não igual a outra coisa, porque não há valor para começar.

Se estiver interessado, consulte SQL Server ANSI_NULLS Explained para ver como você pode alterar o modo NULL os valores são tratados no SQL Server.