Memilih Data Dalam Lingkaran dalam SQL

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:

Jadual Produk
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:

SELECT ProductName, UnitPrice FROM products WHERE UnitPrice> 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.00

Kita 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 Bob

Mengekspresikan 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.00

Ini menghasilkan hasil yang ditunjukkan di bawah:

ProductName UnitPrice ------- -------- Chai 18.00 Chang 19.00

Mengekspresikan 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.00

Seperti 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 Perasa

Klausa 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.