Database
 sql >> Base de données >  >> RDS >> Database

Opérateur SQL égal à (=) pour les débutants

L'opérateur égal (= ) est probablement l'opérateur le plus couramment utilisé en SQL. Il compare l'égalité de deux expressions. Même si vous venez tout juste de commencer votre parcours SQL, vous connaissez probablement cet opérateur.

Tableau des sources

Imaginez que notre base de données contient le tableau suivant. C'est le tableau que nous utiliserons pour les exemples sur cette page.

SELECT * FROM Pets;

Résultat :

+---------+-------------+-----------+-----------+------------+
| 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)

Exemple

Si nous voulions obtenir tous les animaux avec un certain propriétaire, nous pourrions faire ceci :

SELECT *
FROM Pets
WHERE OwnerId = 3;

Résultat :

+---------+-------------+-----------+-----------+------------+
| 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 |
+---------+-------------+-----------+-----------+------------+

Notre requête utilise l'opérateur égal (= ) pour comparer l'égalité de la valeur du OwnerId colonne et 3 .

Dans ce cas, le propriétaire numéro 3 a 3 animaux de compagnie.

Chaînes

Lors de la comparaison avec une valeur de chaîne, utilisez des guillemets autour de la chaîne. Par exemple, si nous voulions obtenir des informations sur tous les animaux nommés Fluffy, nous pourrions procéder comme suit :

SELECT *
FROM Pets
WHERE PetName = 'Fluffy';

Résultat :

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

Notre requête utilise l'opérateur égal (= ) pour comparer l'égalité de la valeur du PetName colonne et la chaîne Fluffy .

Dans notre cas, nous pouvons voir que l'hôtel pour animaux de compagnie a actuellement deux animaux appelés Fluffy.

Plusieurs conditions

Si vous avez plusieurs conditions, vous pouvez utiliser plusieurs opérateurs égal.

Comme ceci :

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

Résultat :

+---------+-------------+-----------+-----------+------------+
| 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 |
+---------+-------------+-----------+-----------+------------+

Nous pouvons voir qu'il a renvoyé les lignes où le PetName la colonne était soit Fluffy ou Tweet .

Négation de la condition

Vous pouvez utiliser le NOT pour annuler la condition fournie par l'opérateur égal. Voici un exemple :

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

Résultat :

+---------+-------------+-----------+-----------+------------+
| 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       |
+---------+-------------+-----------+-----------+------------+

Une autre façon de procéder consiste à utiliser l'opérateur différent de, qui est soit <> ou != (ou les deux) selon votre SGBD.

Valeurs NULLES

Vous avez peut-être remarqué que notre exemple de table d'origine contient quelques NULL valeurs dans la colonne DOB.

Une colonne contenant NULL signifie qu'il n'a aucune valeur. Ceci est différent de 0 ou false , ou même une chaîne vide.

Vous ne pouvez pas utiliser l'opérateur égal pour comparer avec NULL . En fait, cela peut dépendre de votre SGBD et de sa configuration. Mais pour l'instant, regardons ce qui se passe si j'essaie de comparer la colonne DOB à NULL .

SELECT * FROM Pets 
WHERE DOB = NULL;

Résultat :

(0 rows affected)

La façon de tester NULL est d'utiliser IS .

Par conséquent, nous aurions besoin de réécrire la déclaration ci-dessus comme suit.

SELECT * FROM Pets 
WHERE DOB IS NULL;

Résultat :

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

NULL les valeurs peuvent être difficiles à comprendre pour les débutants. En fait, ils peuvent être difficiles à comprendre pour les développeurs expérimentés ! En SQL, NULL a une signification légèrement différente de NULL dans la plupart des autres langages de programmation.

Mais la chose importante à retenir est que, en SQL, NULL signifie l'absence d'une valeur. Il n'y a pas de valeur. Par conséquent, nous ne pouvons pas dire qu'il est égal ou non à quelque chose d'autre, car il n'y a pas de valeur de départ.

Si vous êtes intéressé, consultez SQL Server ANSI_NULLS Explained pour voir comment vous pouvez changer la façon dont NULL les valeurs sont traitées dans SQL Server.