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.