Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Operator SQL NOT untuk Pemula

Dalam SQL, NOT operator meniadakan input Boolean (itu membalikkan nilai ekspresi Boolean apa pun). Oleh karena itu mengembalikan TRUE ketika ekspresinya FALSE .

Tabel Sumber

Tabel berikut digunakan untuk contoh di halaman ini.

SELECT * FROM Pets;

Hasil:

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

Contoh 1

Berikut adalah contoh sederhana untuk mendemonstrasikan NOT operator.

SELECT * FROM Pets 
WHERE PetName NOT LIKE 'F%';

Hasil:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 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       |
+---------+-------------+-----------+-----------+------------+

Dalam hal ini, kami menggunakan NOT operator untuk meniadakan hasil LIKE operator. Permintaan kami mengembalikan semua hewan peliharaan yang tidak dimulai dengan huruf F.

Contoh 2 – Menggunakan NOT dengan Operator Perbandingan

Jika Anda menggunakan NOT operator untuk meniadakan operator perbandingan, Anda harus sedikit mengubah sintaks Anda dari yang digunakan pada contoh sebelumnya.

Misalnya, jika Anda ingin menggunakannya untuk meniadakan operator yang sama (= ), gunakan sintaks berikut:

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

Hasil:

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

Ini mengembalikan semua hewan peliharaan yang namanya bukan Fluffy.

Dalam contoh ini, kami menempatkan NOT operator di depan nama kolom. Jika kami tidak melakukannya, kami akan menerima pesan kesalahan seperti ini:

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

Hasil:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '='.

Kami juga bisa mencapai hasil yang sama dengan menggunakan tidak sama dengan operator (baik <> atau != tergantung pada DBMS Anda).

Misalnya, ini:

SELECT * FROM Pets 
WHERE PetName <> 'Fluffy';

Atau ini:

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

Contoh 3 – Sintaks yang Sama dengan Operator Logika

Ternyata, kita juga dapat menggunakan sintaks tersebut saat menggunakan operator logika, seperti LIKE operator yang kita gunakan pada contoh pertama.

Oleh karena itu, kita dapat menulis ulang contoh pertama ini:

SELECT * FROM Pets 
WHERE NOT PetName LIKE 'F%';

Hasil:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 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       |
+---------+-------------+-----------+-----------+------------+

Jika Anda tidak yakin apa perbedaannya, kami memindahkan NOT operator dari setelah PetName kolom, ke sebelumnya.

Berikut adalah dua pernyataan bersama:

SELECT * FROM Pets 
WHERE PetName NOT LIKE 'F%';

SELECT * FROM Pets 
WHERE NOT PetName LIKE 'F%';

Contoh 4 – Meniadakan Beberapa Kondisi

NOT operator hanya meniadakan satu kondisi. Jika Anda memiliki beberapa kondisi yang perlu Anda ingkari, gunakan NOT separate yang terpisah operator untuk setiap kondisi,

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

Hasil:

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

Contoh 5 – Prioritas

Saat menggunakan kondisi gabungan, di mana Anda memiliki beberapa operator, NOT operator dievaluasi sebelum operator logis apa pun, tetapi setelah operator apa pun. operator perbandingan,

Saat dua operator dalam ekspresi memiliki tingkat prioritas yang sama, mereka dievaluasi dari kiri ke kanan berdasarkan posisinya dalam ekspresi. Namun, Anda dapat menggunakan tanda kurung untuk menentukan urutan evaluasi setiap ketentuan yang Anda inginkan.

Ini contohnya.

SELECT * FROM Pets 
WHERE 
    NOT PetName = 'Fluffy'
    OR NOT PetName = 'Wag'
    AND NOT DOB > '2020-01-01';

Hasil:

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

Kami tidak menggunakan tanda kurung apa pun di sini, dan semua ketentuan ditiadakan dengan NOT operator, dan dengan demikian AND operator lebih diutamakan daripada OR operator.

Namun, kita dapat menggunakan tanda kurung untuk menentukan bahwa OR kondisi harus dievaluasi sebelum AND kondisi.

SELECT * FROM Pets 
WHERE 
    (NOT PetName = 'Fluffy'
    OR NOT PetName = 'Wag')
    AND NOT DOB > '2020-01-01';

Hasil:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
+---------+-------------+-----------+-----------+------------+

Dalam hal ini kita mendapatkan hasil yang berbeda.

Contoh 6 – Meniadakan Operator ANTARA

Ini contoh lain, kali ini menggunakan NOT operator untuk meniadakan hasil BETWEEN operator.

SELECT * FROM Pets 
WHERE DOB NOT BETWEEN '2018-10-01' AND '2020-09-17';

Hasil:

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

Dalam contoh ini, kami mengembalikan semua baris di mana DOB kolom tidak antara 2018-10-01 dan 2020-09-17 .

Dalam hal ini, dua baris cocok dengan kriteria tersebut, dan oleh karena itu, dua baris dikembalikan.

Ini adalah hasil kebalikan dari kueri berikut:

SELECT * FROM Pets 
WHERE DOB BETWEEN '2018-10-01' AND '2020-09-17';

Hasil:

+---------+-------------+-----------+-----------+------------+
| 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 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

Dalam contoh ini, kami mengembalikan semua baris di mana DOB kolom adalah antara 2018-10-01 dan 2020-09-17 .

Dalam hal ini, empat baris cocok dengan kriteria itu, dan oleh karena itu, empat baris dikembalikan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menginstal dan Mengonfigurasi ClickHouse di Ubuntu 20.04

  2. Huawei GaussDB

  3. Menggunakan Lacak Kausalitas untuk Memahami Eksekusi Kueri

  4. Grup Facebook teratas untuk Analytics, Big Data, Data Mining, Hadoop, NoSQL, Data Science

  5. Mencadangkan Database SQL dengan VDP Advanced SQL Agent