Pertanyaan SELECT memilih medan yang dipaparkan (SELECT), jadual yang digunakan (FROM) dan rekod yang dikekalkan (WHERE). Hasilnya ialah jadual baharu yang lebih kecil.
Ini kemahiran teras dalam pangkalan data dan penaakulan pertanyaan. Jadual Plants yang sama daripada pelajaran pertama digunakan di sini.
| PlantID | Name | Type | Price | Stock | Indoor |
|---|---|---|---|---|---|
| P01 | Fern | Foliage | 12.50 | 8 | TRUE |
| P02 | Cactus | Succulent | 6.00 | 25 | TRUE |
| P03 | Rose | Flowering | 15.00 | 0 | FALSE |
| P04 | Mint | Herb | 4.50 | 40 | FALSE |
| P05 | Orchid | Flowering | 28.00 | 3 | TRUE |
| P06 | Basil | Herb | 5.00 | 12 | FALSE |
| P07 | Aloe | Succulent | 9.50 | 15 | TRUE |
| P08 | Hibiscus | Flowering | 18.00 | 6 | FALSE |
Bagaimana membina pertanyaan?
Tulis dalam susunan yang sama setiap kali:
SELECT field1, field2
FROM table
WHERE condition
Gunakan * selepas SELECT untuk memaparkan setiap medan. Letakkan nilai teks dalam tanda petikan dan biarkan nombor tanpa petikan. Operator perbandingan ialah =, <> (tidak sama), <, <=, > dan >=.
Untuk mengisih hasil, tambah ORDER BY field di hujung (menaik secara lalai, DESC untuk menurun).
Contoh berlangkah
Soalan: senaraikan nama dan harga setiap tumbuhan yang berharga lebih daripada 10.00, yang termurah dahulu.
Langkah 1, pilih medan untuk dipaparkan: Name, Price.
Langkah 2, pilih jadual: Plants.
Langkah 3, tulis syarat: Price > 10.
Langkah 4, tambah isihan: ORDER BY Price.
SELECT Name, Price
FROM Plants
WHERE Price > 10
ORDER BY Price
Langkah 5, uji setiap rekod. Fern 12.50 lulus, Cactus 6.00 gagal, Rose 15.00 lulus, Mint 4.50 gagal, Orchid 28.00 lulus, Basil 5.00 gagal, Aloe 9.50 gagal, Hibiscus 18.00 lulus.
Langkah 6, isih mengikut harga: 12.50, 15.00, 18.00, 28.00.
| Name | Price |
|---|---|
| Fern | 12.50 |
| Rose | 15.00 |
| Hibiscus | 18.00 |
| Orchid | 28.00 |
Empat baris dipulangkan. Menyemak kelapan-lapan rekod, bukan hanya yang kelihatan sesuai, menjadikan jawapan betul.
Kesilapan yang perlu diawasi
Kesilapan lazim ialah meletakkan medan yang diuji dalam SELECT dan bukan WHERE.
Jawapan salah:
SELECT Price > 10 FROM PlantsIni meminta pangkalan data memaparkan satu perbandingan, bukan menapis rekod.
Pembetulan: SELECT menyenaraikan lajur untuk dipaparkan; WHERE memegang ujian. Kesilapan kedua ialah tidak meletakkan tanda petikan pada teks, seperti Type = Herb.
Semak sendiri
1. Tulis pertanyaan untuk nama semua herba.
Lihat jawapan
SELECT Name
FROM Plants
WHERE Type = "Herb"
Hasil: Mint, Basil.
2. Berapa baris yang dipulangkan oleh SELECT * FROM Plants WHERE Stock < 10?
Lihat jawapan
Stock di bawah 10: Fern (8), Rose (0), Orchid (3), Hibiscus (6). Itu 4 baris.
3. Apa yang berubah jika anda menulis Price >= 28 dan bukan Price > 28?
Lihat jawapan
> 28 tidak memulangkan baris, kerana tiada harga melebihi 28.00. >= 28 memulangkan Orchid (28.00).
Ke mana selepas ini?
Seterusnya, gabungkan syarat dengan pengumpulan Boolean yang betul, kemudian cuba set latihan modul. Jalankan pertanyaan anda sendiri dalam makmal latihan SQL baca sahaja.
Jika anda mahu guru menyemak cara anda membina setiap pertanyaan, lihat tuisyen Computer Science dalam talian satu dengan satu kami.