Apakah Fasal MANA di MySQL?
DI MANA Klausa dalam MySQL adalah kata kunci yang digunakan untuk menentukan kriteria data atau baris yang tepat yang akan dipengaruhi oleh pernyataan SQL yang ditentukan. Klausa MANA boleh digunakan dengan pernyataan SQL seperti INSERT, UPDATE, SELECT, dan DELETE untuk menyaring rekod dan melakukan pelbagai operasi pada data.
Kami melihat bagaimana membuat pertanyaan dari pangkalan data menggunakan pernyataan SELECT dalam tutorial sebelumnya. Pernyataan SELECT mengembalikan semua hasil dari jadual pangkalan data yang ditanyakan.
Namun demikian, ada kalanya kita mahu mengehadkan hasil pertanyaan kepada keadaan yang ditentukan. Klausa MANA di SQL sangat berguna dalam situasi seperti itu.

DI MANA klausa Sintaks
Sintaks asas untuk klausa WHERE apabila digunakan dalam pernyataan MySQL SELECT WHERE adalah seperti berikut.
SELECT * FROM tableName WHERE condition;
SINI
- "SELECT * FROM tableName" adalah pernyataan SELECT standard
- "DI MANA" adalah kata kunci yang menyekat set hasil pertanyaan pilihan kami dan "syarat" adalah penapis yang akan diterapkan pada hasil. Penapis boleh berupa, satu nilai atau sub pertanyaan.
Sekarang mari kita lihat contoh praktikal .
Andaikan kita ingin mendapatkan maklumat peribadi ahli dari jadual ahli yang diberi nombor keahlian 1, kita akan menggunakan skrip berikut untuk mencapainya.
SELECT * FROM `members` WHERE `membership_number` = 1;
Menjalankan skrip di atas di meja kerja MySQL pada "myflixdb" akan menghasilkan hasil berikut.
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
MANA klausa digabungkan dengan - DAN Operator LOGIKAL
Keadaan DI MANA di MySQL apabila digunakan bersama dengan operator logik AND, hanya dilaksanakan sekiranya SEMUA kriteria penapis yang ditentukan dipenuhi. Sekarang mari kita lihat contoh praktikal - Andaikan kita ingin mendapatkan senarai semua filem dalam kategori 2 yang dikeluarkan pada tahun 2008, kita akan menggunakan skrip yang ditunjukkan di bawah ini untuk mencapai itu.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Melaksanakan skrip di atas di meja kerja MySQL terhadap "myflixdb" menghasilkan hasil berikut.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
DI MANA klausa digabungkan dengan - ATAU Operator LOGIKAL
Klausa DI MANA ketika digunakan bersama dengan operator ATAU, hanya dilaksanakan jika ada atau seluruh kriteria penapis yang ditentukan dipenuhi. Skrip berikut mendapat semua filem dalam kategori 1 atau kategori 2SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Melaksanakan skrip di atas di meja kerja MySQL terhadap "myflixdb" menghasilkan hasil berikut.
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 |
MANA klausa digabungkan dengan - Kata Kunci IN
Klausa WHERE dalam MySQL, apabila digunakan bersama dengan kata kunci IN hanya mempengaruhi baris yang nilainya sepadan dengan senarai nilai yang diberikan dalam kata kunci IN. Pernyataan MySQL IN membantu mengurangkan bilangan klausa ATAU yang mungkin anda gunakan. Pertanyaan MySQL WHERE IN berikut memberikan baris di mana bilangan_anggota adalah 1, 2 atau 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Melaksanakan skrip di atas di meja kerja MySQL terhadap "myflixdb" menghasilkan hasil berikut.
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
DI MANA klausa digabungkan dengan - TIDAK DALAM Kata Kunci
Klausa DI MANA apabila digunakan bersama dengan kata kunci NOT IN TIDAK mempengaruhi baris yang nilainya sepadan dengan senarai nilai yang diberikan dalam kata kunci NOT IN. Pertanyaan berikut memberikan baris di mana bilangan_anggota BUKAN 1, 2 atau 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Melaksanakan skrip di atas di meja kerja MySQL terhadap "myflixdb" menghasilkan hasil berikut.
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 |
DI MANA klausa digabungkan dengan - PERBANDINGAN Operator
Operator perbandingan yang kurang daripada (), sama dengan (=), tidak sama dengan () boleh digunakan dengan Klausa DI MANA= Sama dengan
Skrip berikut mendapat semua anggota wanita dari jadual ahli menggunakan operator perbandingan yang sama.SELECT * FROM `members` WHERE `gender` = 'Female';
Melaksanakan skrip di atas di meja kerja MySQL terhadap "myflixdb" menghasilkan hasil berikut.
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Lebih hebat daripada
Skrip berikut mendapat semua pembayaran yang lebih besar daripada 2.000 dari jadual pembayaran. PILIH * DARI `pembayaran` DI MANA` jumlah_bayar`> 2000; Melaksanakan skrip di atas di meja kerja MySQL terhadap "myflixdb" menghasilkan hasil berikut.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 mendapat semua filem yang id kategori bukan 1.SELECT * FROM `movies` WHERE `category_id`<> 1;Melaksanakan skrip di atas di meja kerja MySQL terhadap "myflixdb" menghasilkan hasil berikut.
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 |
Ringkasan
- Klausa SQL WHERE digunakan untuk menyekat bilangan baris yang dipengaruhi oleh pertanyaan SELECT, UPDATE atau DELETE.
- Keadaan MANA di SQL boleh digunakan bersama dengan operator logik seperti AND dan OR, operator perbandingan seperti, = dll.
- Apabila digunakan dengan pengendali logik AND, semua kriteria mesti dipenuhi.
- Apabila digunakan dengan pengendali logik ATAU, mana-mana kriteria mesti dipenuhi.
- Kata kunci IN digunakan untuk memilih baris yang sesuai dengan senarai nilai.
Brain Teaser Mari kita anggap bahawa kita ingin mendapatkan senarai filem yang disewa yang belum dikembalikan tepat pada waktunya 25/06/2012. Kita boleh menggunakan klausa pernyataan SQL WHERE bersama dengan operator yang kurang daripada perbandingan dan operator logik DAN untuk mencapai itu.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Melaksanakan skrip di atas di meja kerja MySQL memberikan hasil berikut.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |