Database
 sql >> Database >  >> RDS >> Database

SQL è uguale a (=) Operatore per principianti

L'operatore uguale (= ) è probabilmente l'operatore più comunemente usato in SQL. Confronta l'uguaglianza di due espressioni. Anche se hai appena iniziato il tuo viaggio SQL, probabilmente conoscerai questo operatore.

Tabella delle sorgenti

Immagina che il nostro database contenga la seguente tabella. Questa è la tabella che useremo per gli esempi in questa pagina.

SELECT * FROM Pets;

Risultato:

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

Esempio

Se volessimo avere tutti gli animali domestici con un determinato proprietario, potremmo farlo:

SELECT *
FROM Pets
WHERE OwnerId = 3;

Risultato:

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

La nostra query utilizza l'operatore uguale (= ) per confrontare l'uguaglianza del valore di OwnerId colonna e 3 .

In questo caso, il proprietario numero 3 ha 3 animali domestici.

Stringhe

Quando si confronta con un valore stringa, utilizzare le virgolette attorno alla stringa. Ad esempio, se volessimo ottenere informazioni su tutti gli animali domestici chiamati Fluffy, potremmo fare quanto segue:

SELECT *
FROM Pets
WHERE PetName = 'Fluffy';

Risultato:

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

La nostra query utilizza l'operatore uguale (= ) per confrontare l'uguaglianza del valore di PetName colonna e la stringa Fluffy .

Nel nostro caso, possiamo vedere che l'hotel per animali domestici ha attualmente due animali chiamati Fluffy.

Condizioni multiple

Se hai più condizioni, puoi utilizzare più operatori uguali.

In questo modo:

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

Risultato:

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

Possiamo vedere che ha restituito le righe in cui PetName la colonna era Fluffy o Tweet .

Negazione della condizione

Puoi usare il NOT operatore per negare la condizione fornita dall'operatore uguale. Ecco un esempio:

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

Risultato:

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

Un modo alternativo per farlo è usare l'operatore non uguale a, che è o <> o != (o entrambi) a seconda del tuo DBMS.

Valori NULL

Potresti aver notato che la nostra tabella di esempio originale contiene un paio di NULL valori nella colonna DOB.

Una colonna contenente NULL significa che non ha valore. Questo è diverso da 0 o false o anche una stringa vuota.

Non puoi utilizzare l'operatore uguale per confrontare NULL . In realtà, questo potrebbe dipendere dal tuo DBMS e dalla sua configurazione. Ma per ora, diamo un'occhiata a cosa succede se provo a confrontare la colonna DOB con NULL .

SELECT * FROM Pets 
WHERE DOB = NULL;

Risultato:

(0 rows affected)

Il modo per testare NULL è usare IS .

Pertanto, dovremmo riscrivere la dichiarazione di cui sopra come segue.

SELECT * FROM Pets 
WHERE DOB IS NULL;

Risultato:

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

NULL i valori possono essere una cosa difficile da capire per i principianti. In realtà, possono essere una cosa complicata per gli sviluppatori esperti da capire! In SQL, NULL ha un significato leggermente diverso da NULL nella maggior parte degli altri linguaggi di programmazione.

Ma la cosa importante da ricordare è che, in SQL, NULL significa mancanza di valore. Non c'è valore. Pertanto, non possiamo dire che sia uguale o meno a qualcos'altro, perché non esiste un valore con cui iniziare.

Se sei interessato, vedi SQL Server ANSI_NULLS Explained per vedere come puoi cambiare il modo NULL i valori vengono trattati in SQL Server.