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

SQL DAN Operator untuk Pemula

Dalam SQL, AND operator memungkinkan Anda untuk memeriksa beberapa kondisi saat memfilter kueri Anda.

AND operator menggabungkan dua ekspresi Boolean dan mengembalikan TRUE ketika kedua ekspresi TRUE .

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

Berikut adalah contoh sederhana untuk mendemonstrasikan AND operator.

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

Hasil:

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

Seperti yang diharapkan, itu hanya mengembalikan baris di mana PetName kolom adalah Fluffy dan DOB kolom lebih besar dari 2020-11-01 .

Dalam hal ini, hanya satu baris yang cocok dengan kriteria tersebut, dan oleh karena itu, hanya satu baris yang dikembalikan.

Dikombinasikan dengan Operator Lain

Kriteria pemfilteran Anda dapat menggabungkan ekspresi yang menggunakan operator lain selain AND operator.

Berikut adalah contoh yang menyertakan OR operator.

SELECT * FROM Pets 
WHERE (PetName = 'Fluffy' OR PetName = 'Tweet')
AND DOB >= '2020-11-20';

Hasil:

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

Perhatikan bahwa saya mengelilingi OR kondisi dengan tanda kurung. Saya melakukannya untuk menentukan urutan di mana setiap ekspresi harus dievaluasi.,

Secara default, AND operator dievaluasi sebelum OR operator. SQL memiliki urutan prioritas operator yang ditentukan dalam ekspresi, dan ini menentukan bahwa AND operator dievaluasi sebelum OR operator.

Namun, Anda bisa menggunakan tanda kurung untuk mengganti prioritas operator yang ditentukan dalam ekspresi. Segala sesuatu dalam tanda kurung dievaluasi untuk mengembalikan nilai tunggal. Nilai tersebut dapat digunakan oleh operator mana pun di luar tanda kurung tersebut.

Dengan kata lain, Anda dapat menggunakan tanda kurung untuk menentukan urutan yang Anda inginkan agar setiap operator logika dievaluasi dalam sebuah ekspresi.

Untuk menunjukkan masalah ini, lihat hasilnya saat kami menghapus tanda kurung.

SELECT * FROM Pets 
WHERE PetName = 'Fluffy' OR PetName = 'Tweet'
AND DOB >= '2020-11-20';

Hasil:

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

Sekarang kita mendapatkan hasil yang berbeda.

Ini karena, kueri sekarang memeriksa PetName = 'Tweet' AND DOB >= '2020-11-20' pertama, lalu centang OR ekspresi PetName = 'Fluffy' .

Seolah-olah kita meletakkan tanda kurung di sekitar AND ekspresi, seperti ini:

SELECT * FROM Pets 
WHERE PetName = 'Fluffy' OR (PetName = 'Tweet'
AND DOB >= '2020-11-20');

Namun, untuk lebih membingungkan, kami dapat mengatur ulang kueri kami sehingga kami tidak menggunakan tanda kurung, namun tetap mendapatkan hasil yang sama seperti contoh pertama kami dengan tanda kurung.

Seperti ini:

SELECT * FROM Pets 
WHERE DOB >= '2020-11-20' 
AND PetName = 'Fluffy' OR PetName = 'Tweet';

Hasil:

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

Dalam hal ini, AND ekspresi dievaluasi terlebih dahulu, seperti yang diharapkan. Urutan ekspresi kebetulan berbaris sehingga DOB >= '2020-11-20' AND PetName = 'Fluffy' dievaluasi terlebih dahulu, jadi kami mengecualikan hewan peliharaan lain bernama Fluffy karena DOB its jatuh di luar kisaran itu. Baru setelah itu, adalah OR ekspresi dievaluasi sebagai kondisi alternatif untuk AND kami yang ada hasil.

Oleh karena itu, sangat disarankan untuk menggunakan tanda kurung saat menggunakan banyak operator. Melakukan hal ini memastikan bahwa kueri dievaluasi persis seperti yang Anda inginkan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Estimasi Kardinalitas untuk Predikat pada Ekspresi COUNT

  2. Cara Menginstal pgAdmin 4 di Ubuntu 20.04/18.04/16.04

  3. Penyaringan Tabel di Meja Kerja IRI

  4. Menjembatani RDBMS dan NoSQL:Pengantar 2DX UI cluster

  5. Cara Memesan Secara Abjad dalam SQL