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.

  • ๐Ÿ” Tujuan Inti: Klausul WHERE membatasi baris mana yang akan dipengaruhi oleh suatu pernyataan, sehingga SELECT, UPDATE, dan DELETE hanya memengaruhi baris yang cocok.
  • ๐Ÿ”— DAN Operauntuk: Baris hanya akan dikembalikan jika setiap kondisi bernilai benar, sehingga mempersempit himpunan hasil.
  • ๐Ÿ”€ OR Operauntuk: Baris akan dikembalikan ketika salah satu kondisi bernilai benar, sehingga memperluas himpunan hasil.
  • ๐Ÿ“‹ MASUK dan TIDAK MASUK: Kata kunci IN mencocokkan daftar nilai dalam satu ekspresi, sedangkan NOT IN mengecualikan daftar yang sama.
  • ๏ธ Perbandingan Operatorsi: Sama dengan (=), lebih besar dari (>), kurang dari (<), dan tidak sama dengan (<>) digunakan untuk memfilter kolom numerik, teks, dan tanggal.
  • โš ๏ธ Penanganan NULL: NULL tidak pernah cocok dengan = atau <>, jadi IS NULL dan IS NOT NULL diperlukan untuk memeriksa nilai yang hilang.

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.

klausa WHERE di MySQL

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

Pertanyaan Umum Demo Slot

WHERE menyaring setiap baris sebelum grupping, sehingga tidak dapat merujuk pada fungsi agregat. HAVING memfilter grup setelah GROUP BY dijalankan, menjadikannya tempat yang tepat untuk kondisi seperti COUNT(*) > 5.

Gunakan IS NULL atau IS NOT NULL. OperaOperator seperti = dan <> mengembalikan nilai tidak diketahui untuk NULL, jadi `postal_address` = NULL tidak menghasilkan kecocokan apa pun, sedangkan `postal_address` IS NULL akan berfungsi.

Ya, ketika kolom yang difilter diindeks, MySQL hanya membaca baris yang cocok, bukan memindai tabel. Bungkusping Kolom dalam sebuah fungsi, seperti YEAR(`date_of_birth`) = 1980, mencegah penggunaan indeks.

Ya. Asisten AI mengubah bahasa Inggris biasa menjadi SQL, dan MySQL Workbench dapat menjalankan hasilnya. RevPeriksa setiap kondisi terhadap skema Anda, karena sebuah model mungkin saja menciptakan nama kolom baru.

Uji dulu dengan SELECT. Klausa WHERE yang salah pada sebuah Kueri HAPUS atau PERBARUI Dapat mengubah setiap baris. Pratinjau baris yang cocok, lalu gunakan kembali kondisi yang sama untuk penulisan.

Ringkaslah postingan ini dengan: