MySQL Klausa WHERE: AND, OR, IN, NOT IN Contoh Query
โก Ringkasan Cerdas
MySQL Klausul WHERE menyaring baris sebelum mencapai kumpulan hasil, menerapkan kriteria yang tepat pada pernyataan SELECT, UPDATE, dan DELETE. Memahami operator AND, OR, IN, NOT IN, dan perbandingan memungkinkan pemula untuk mengambil data yang tepat sesuai kebutuhan kueri.

Apa yang dimaksud dengan Klausul WHERE MySQL?
MANA Clause in MySQL adalah kata kunci yang digunakan untuk menentukan kriteria pasti data atau baris yang akan terpengaruh oleh pernyataan SQL yang ditentukan. Klausa WHERE dapat digunakan dengan pernyataan SQL seperti INSERT, UPDATE, SELECT, dan DELETE untuk memfilter data dan melakukan berbagai operasi pada data.
Kami melihat cara menanyakan data dari a Database menggunakan pernyataan SELECT pada tutorial sebelumnya. Pernyataan SELECT mengembalikan semua hasil dari tabel database yang ditanyakan.
Namun, ada kalanya kita ingin membatasi hasil kueri pada kondisi tertentu. Klausa WHERE dalam SQL sangat berguna dalam situasi seperti itu, dan cara kerjanya sama dalam Kueri HAPUS atau PERBARUI seperti halnya pada kueri SELECT.
Sintaks klausa WHERE
Sintaks dasar klausa WHERE adalah sebagai berikut.
SELECT * FROM tableName WHERE condition;
SINI
- โPILIH * DARI Nama tabelโ adalah standar PILIH pernyataan
- "DI MANA" adalah kata kunci yang membatasi kumpulan hasil, dan "kondisi" adalah filter yang diterapkan pada hasil. Filter tersebut dapat berupa rentang, nilai tunggal, atau sub-kueri.
Misalkan kita ingin mendapatkan detail anggota dari tabel anggota, dengan nomor keanggotaan 1. Skrip di bawah ini akan mewujudkannya.
SELECT * FROM `members` WHERE `membership_number` = 1;
Menjalankan skrip ini di MySQL meja kerja Saat menjalankan perintah โmyflixdbโ akan menghasilkan hasil di bawah ini.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
Satu syarat saja jarang cukup. Bagian di bawah ini menggabungkan klausa WHERE dengan operator logis.
Klausa WHERE dikombinasikan dengan โ DAN LOGIS Operator
Dengan operator logika AND, sebuah baris hanya akan dikembalikan jika SEMUA kriteria yang ditentukan terpenuhi.
Misalkan kita menginginkan semua film dalam kategori 2 yang dirilis pada tahun 2008. Skrip di bawah ini mewujudkannya.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Menjalankan skrip di atas terhadap โmyflixdbโ menghasilkan hasil berikut.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
AND mempersempit himpunan hasil. OR memperluasnya.
Klausa WHERE dikombinasikan dengan โ OR LOGIS Operator
Dengan operator OR, sebuah baris akan dikembalikan jika SALAH SATU kriteria yang ditentukan terpenuhi.
Skrip berikut akan mengambil semua film yang termasuk dalam kategori 1 atau kategori 2.
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Hasil yang diperoleh ditampilkan di bawah ini.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Menggabungkan banyak kondisi OR menjadi sulit dibaca. Kata kunci IN memecahkan masalah itu.
Klausa WHERE dikombinasikan dengan โ IN Kata kunci
Klausul WHERE, bila digunakan bersama dengan kata kunci IN, hanya memengaruhi baris yang nilainya sesuai dengan daftar yang diberikan. IN mengurangi jumlah klausa OR yang seharusnya Anda tulis.
Berikut ini MySQL Query WHERE IN memberikan baris di mana membership_number adalah 1, 2, atau 3.
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Hasil yang diperoleh ditampilkan di bawah ini.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
NOT IN melakukan penyaringan yang berlawanan.
Klausa WHERE dikombinasikan dengan โ TIDAK MASUK Kata kunci
Dengan kata kunci NOT IN, klausa WHERE mengecualikan setiap baris yang nilainya cocok dengan daftar yang diberikan.
Kueri berikut memberikan baris di mana membership_number BUKAN 1, 2, atau 3.
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Hasil yang diperoleh ditampilkan di bawah ini.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
WHERE juga menyaring nilai berdasarkan ukuran dan kesamaan, menggunakan operator perbandingan.
Klausa WHERE dikombinasikan dengan โ PERBANDINGAN Operatorso
Operator perbandingan kurang dari (<), sama dengan (=), lebih besar dari (>) dan tidak sama dengan (<>) semuanya dapat digunakan dengan klausa WHERE.
= Sama dengan
Skrip berikut mendapatkan semua anggota perempuan dari tabel anggota menggunakan operator perbandingan sama dengan.
SELECT * FROM `members` WHERE `gender` = 'Female';
Hasil yang diperoleh ditampilkan di bawah ini.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Lebih besar dari
Skrip berikut mendapatkan semua pembayaran yang lebih besar dari 2,000 dari tabel pembayaran.
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
Hasil yang diperoleh ditampilkan di bawah ini.
| payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
|---|---|---|---|---|---|
| 1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
| 3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
<> Tidak Sama Dengan
Skrip berikut mendapatkan semua film yang id kategorinya bukan 1.
SELECT * FROM `movies` WHERE `category_id` <> 1;
Hasil yang diperoleh ditampilkan di bawah ini.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 5 | Daddy's Little Girls | NULL | 2007 | 8 |
| 6 | Angels and Demons | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schultz | 2005 | 8 |
Referensi Cepat: Klausa WHERE Operatorso
Operator yang paling sering dipasangkan dengan WHERE dirangkum di bawah ini. Definisi lengkapnya terdapat di bagian selanjutnya. MySQL referensi operator.
| Operator | Arti | Contoh kondisi |
|---|---|---|
| = | Sama dengan | `gender` = 'Perempuan' |
| <> | Tidak sebanding dengan | `category_id` <> 1 |
| > / | Lebih besar dari / lebih kecil dari | `jumlah_dibayar` > 2000 |
| DAN/ATAU | Semua kriteria / kriteria apa pun | `category_id` = 2 DAN `year_released` = 2008 |
| MASUK / TIDAK MASUK | Mencocokkan/mengecualikan daftar | `nomor_keanggotaan` DALAM (1,2,3) |
| IS NULL / IS NOT NULL | Tes untuk nilai yang hilang | `postal_address` IS NULL |
โ ๏ธ Catatan: NULL tidak pernah cocok dengan = atau <>. Gunakan IS NULL atau IS NOT NULL ketika sebuah kolom mungkin tidak memiliki nilai.
Asah Otak: Temukan Film yang Dikembalikan Terlambat
Misalkan kita ingin mencari film-film sewaan yang tidak dikembalikan hingga batas waktu 25/06/2012. Dengan menggabungkan klausa WHERE dengan operator kurang dari dan AND, kita dapat mencapai hal tersebut.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Menjalankan skrip di atas dalam MySQL workbench memberikan hasil sebagai berikut.
| reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
|---|---|---|---|---|---|
| 14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |

