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.