Memperkenalkan klausa WHERE dan keadaan BETWEEN
Language Query Structured (SQL) menyediakan pengguna pangkalan data dengan keupayaan untuk membuat pertanyaan khusus untuk mengekstrak maklumat dari pangkalan data. Dalam artikel sebelumnya, kami meneroka mengekstrak maklumat dari pangkalan data menggunakan pertanyaan SQL SELECT . Mari berkembang pada perbincangan itu dan terokai bagaimana anda boleh melakukan pertanyaan lanjut untuk mendapatkan data yang sepadan dengan keadaan tertentu.
Mari kita pertimbangkan contoh berdasarkan pangkalan data Northwind yang biasa digunakan, yang sering mengangkut produk pangkalan data sebagai tutorial.
Berikut adalah petikan daripada jadual Produk pangkalan data:
ProductID | Nama Produk | SupplierID | QuantityPerUnit | Harga seunit | UnitsInStock |
---|---|---|---|---|---|
1 | Chai | 1 | 10 kotak x 20 beg | 18.00 | 39 |
2 | Chang | 1 | 24 - 12 oz botol | 19.00 | 17 |
3 | Syrup Aniseed | 1 | 12 - botol 550 ml | 10.00 | 13 |
4 | Perayaan Cajun Chef Anton | 2 | 48 - 6 oz balang | 22.00 | 53 |
5 | Chef Anton's Gumbo Mix | 2 | 36 kotak | 21.35 | 0 |
6 | Spread Boyenberry Nenek | 3 | 12 - 8 oz balang | 25.00 | 120 |
7 | Pear Organik Paman Bob | 3 | 12 - 1 lb pkgs. | 30.00 | 15 |
Syarat Sempadan Mudah
Sekatan pertama yang akan kami letakkan pada pertanyaan kami melibatkan syarat sempadan yang mudah. Kita boleh menentukan ini dalam klausa WHERE pertanyaan SELECT, dengan menggunakan pernyataan syarat sederhana yang dibina dengan pengendali standard, seperti <,>,> =, dan <=.
Pertama, mari kita cuba pertanyaan mudah yang membolehkan kita mengekstrak senarai semua produk dalam pangkalan data yang mempunyai UnitPrice lebih daripada 20.00:
Ini menghasilkan senarai empat produk, seperti yang ditunjukkan di bawah:
ProductName UnitPrice ------- -------- Chef Anton's Gumbo Mix 21.35 Chef Anton's Cajun Bake 22.00 Boysenberry Nenek Spread 25.00 Pears Dry Organ Uncle Bob 30.00Kita juga boleh menggunakan klausa WHERE dengan nilai rentetan. Ini pada asasnya sama dengan aksara kepada nombor, dengan A mewakili nilai 1 dan Z yang mewakili nilai 26. Sebagai contoh, kita dapat menunjukkan semua produk dengan nama yang bermula dengan U, V, W, X, Y atau Z dengan pertanyaan berikut:
SELECT ProductName FROM products WHERE ProductName> = 'T'Yang menghasilkan keputusan:
ProductName ------- Pir Pears Organic Uncle BobMengekspresikan Banjir menggunakan Batasan
Klausa WHERE juga membolehkan kami melaksanakan keadaan pelbagai pada nilai dengan menggunakan pelbagai syarat. Contohnya, jika kami mahu membuat pertanyaan kami di atas dan hadkan hasil kepada produk dengan harga antara jam 15.00 dan 20.00, kami boleh menggunakan pertanyaan berikut:
SELECT ProductName, UnitPrice FROM products WHERE UnitPrice> 15.00 AND UnitPrice <20.00Ini menghasilkan hasil yang ditunjukkan di bawah:
ProductName UnitPrice ------- -------- Chai 18.00 Chang 19.00Mengekspresikan Banjir dengan ANTARA
SQL juga menyediakan jalan pintas SATU sintaks yang mengurangkan bilangan syarat yang perlu kita sertakan dan membuat pertanyaan lebih mudah dibaca. Sebagai contoh, daripada menggunakan kedua-dua syarat WHERE di atas, kami dapat menyatakan pertanyaan yang sama seperti:
SELECT ProductName, UnitPrice FROM products WHERE UnitPrice ANTARA 15.00 DAN 20.00Seperti klausa keadaan kami yang lain, ANTARA bekerja dengan nilai rentetan juga. Jika kami ingin menghasilkan senarai semua negara yang bermula dengan V, W atau X, kami boleh menggunakan pertanyaan:
SELECT ProductName FROM products WHERE ProductName ANTARA "A" and "D"Yang menghasilkan keputusan:
ProductName ------- Aniseed Syrup Chai Chang Chef Anton's Gumbo Mix Chef Anton's Cajun PerasaKlausa WHERE adalah bahagian yang kuat dari bahasa SQL yang membolehkan anda mengehadkan hasil kepada nilai-nilai yang jatuh dalam lingkungan tertentu. Ia sangat biasa digunakan untuk membantu mengekspresikan logik perniagaan dan harus menjadi sebahagian daripada setiap toolkit profesional database.
Ia sering membantu menggabungkan klausa biasa ke dalam prosedur tersimpan untuk menjadikannya mudah diakses oleh orang-orang tanpa pengetahuan SQL.