4.1 BATAS
Jika Anda berharap kueri SQL mengembalikan terlalu banyak data, Anda dapat membatasi jumlah maksimumnya terlebih dahulu. Lagi pula, tabel bisa berisi ribuan atau bahkan jutaan baris.
SQL membuatnya sangat mudah untuk membatasi jumlah baris dalam hasil kueri menggunakan LIMIT
. Kata kunci ini digunakan di akhir kueri SQL dan terlihat seperti ini:
LIMIT quantity
Mari tulis kueri pada tabel produk, yang berisi daftar produk toko kita. Tetapi karena kami memiliki toko yang sangat sukses dan kami menjual banyak produk, kami hanya ingin mendapatkan 10 baris pertama dari jawabannya. Seperti inilah permintaan itu:
SELECT * FROM product
LIMIT 10
Dan kami mendapatkan hasil kueri berikut:
pengenal | nama | merek | harga | menghitung |
---|---|---|---|---|
1 | Meja | IKEA | 20.00 | 15 |
2 | Kursi | IKEA | 5.00 | 45 |
3 | Sofa | IKEA | 80.00 | 10 |
4 | Tempat tidur | IKEA | 75.00 | 10 |
5 | Lemari | Bosch | 125.00 | 15 |
6 | Rak | Rak | 25.00 | 114 |
7 | televisi | LG | 350.00 | 4 |
8 | Lampu | LG | 15.00 | 100 |
9 | Meja rias | IKEA | 99.00 | 10 |
10 | Piring | Bosch | 199.00 | 10 |
Sekarang kami hanya akan meminta 5 baris pertama. Seperti inilah permintaan itu:
SELECT * FROM product
LIMIT 5
Kami mendapatkan hasil kueri berikut:
pengenal | nama | merek | harga | menghitung |
---|---|---|---|---|
1 | Meja | IKEA | 20.00 | 15 |
2 | Kursi | IKEA | 5.00 | 45 |
3 | Sofa | IKEA | 80.00 | 10 |
4 | Tempat tidur | IKEA | 75.00 | 10 |
5 | Lemari | Bosch | 125.00 | 15 |
4.2 PENGHENTIAN
Terakhir kali kami mempelajari cara membatasi jumlah baris dalam respons server. Dan sekarang, alih-alih ribuan baris dari tabel produk, kita bisa mendapatkan 10 baris pertama dan menampilkannya kepada pengguna. Itu sempurna. Tapi bagaimana kita menampilkan 10 baris kedua? Dan yang ketiga?
Jika kita menulis LIMIT 20
, atau LIMIT 30
, bukankah server akan mengembalikan masing-masing 20 dan 30 baris?
Untuk kasus inilah SQL memiliki kata kunci khusus OFFSET
yang dapat digunakan untuk meminta server melewati N baris dalam responsnya. Kata kunci ini digunakan di akhir kueri SQL (setelah LIMIT
) dan terlihat seperti:
OFFSET quantity
Mari tulis kueri pada tabel produk dan coba dapatkan catatan 11 hingga 15. Dengan kata lain, kita meminta server untuk mengembalikan 5 baris kepada kita, tetapi lewati 10 baris pertama dari respons terlebih dahulu. Seperti inilah permintaan itu:
SELECT * FROM product
LIMIT 5
OFFSET 10
Kami mendapatkan hasil kueri berikut:
pengenal | nama | merek | harga | menghitung |
---|---|---|---|---|
sebelas | Kursi berlengan | Bosch | 44.00 | 8 |
12 | pot bunga | Bunga pintar | 99.00 | 9 |
13 | Berdiri | IKEA | 100.00 | 10 |
Server hanya mengembalikan 3 baris, yang berarti total ada 13 baris di tabel kami. Server melewatkan 10 pertama dan mengembalikan 5 berikutnya.
4.3 PILIH BERBEDA
Kata kunci lain yang berguna adalah DISTINCT
. Ini digunakan ketika ada catatan duplikat di tabel dan kami ingin menghapus duplikatnya.
Dari mana datangnya duplikat di tabel kami? Mungkin tidak ada duplikat di tabel, tetapi sebagai hasil kueri, itu mudah. Mari tulis kueri yang akan mengembalikan merek dari semua produk yang kita jual. Seperti inilah permintaan itu:
SELECT brand FROM product
Kami mendapatkan hasil kueri berikut:
merek |
---|
IKEA |
IKEA |
IKEA |
IKEA |
Bosch |
Bosch |
LG |
LG |
IKEA |
Bosch |
Bosch |
Bunga pintar |
IKEA |
Sangat mudah untuk melihat bahwa ada baris duplikat di tabel ini. Ini untuk memastikan tidak ada duplikat dan Anda perlu menggunakan kata kunci DISTINCT
. Seperti inilah tampilan permintaan yang diperbaiki:
SELECT DISTINCT brand
FROM product
Kami mendapatkan hasil kueri berikut:
merek |
---|
IKEA |
Bosch |
LG |
Bunga pintar |
Jauh lebih baik. Bukankah begitu? ;)
4.4 PESAN OLEH
Dan akhirnya kami harus menyortir . Untuk mengurutkan hasil kueri, Anda perlu menggunakan kata kunci ORDER BY
. Secara teknis, ini adalah dua kata, tetapi esensinya tidak penting. Dua kata, satu operator.
Itu harus ditulis setelah kata kunci WHERE
, tapi sebelum LIMIT
dan OFFSET
. Jika Anda menulis ORDER BY
setelah LIMIT
, maka server SQL hanya akan mengembalikan kesalahan kepada Anda.
Secara umum, operator ini terlihat seperti ini:
ORDER BY column order
Dimana kolom adalah nama kolom pada tabel/hasil pengurutan. Dan urutannya adalah urutan sortir.
Urutan sortir dapat terdiri dari tiga jenis:
ASC
(dari Naik) - naik;DESC
(dari Turun) - turun;- Tidak ditentukan - akan digunakan
ASC
Mari tulis kueri yang akan mengembalikan daftar produk yang diurutkan berdasarkan harga dalam urutan menaik. Seperti inilah permintaan itu:
SELECT * FROM product
ORDER BY price ASC
LIMIT 10
Kami mendapatkan hasil kueri berikut:
pengenal | nama | merek | harga | menghitung |
---|---|---|---|---|
2 | Kursi | IKEA | 5.00 | 45 |
8 | Lampu | LG | 15.00 | 100 |
1 | Meja | IKEA | 20.00 | 15 |
6 | Rak | Bosch | 25.00 | 114 |
sebelas | Kursi berlengan | Bosch | 44.00 | 8 |
4 | Tempat tidur | IKEA | 75.00 | 10 |
3 | Sofa | IKEA | 80.00 | 10 |
12 | pot bunga | Bunga pintar | 99.00 | 9 |
9 | Meja rias | IKEA | 99.00 | 10 |
13 | Berdiri | IKEA | 100.00 | 10 |
Kami akan mendapatkan hasil yang sama jika kami tidak menentukan urutan pengurutan - kami akan melewatkan kata ASC
.
4.5 ORDER BY di beberapa kolom
Operator ORDER BY
memungkinkan Anda mengurutkan hasil berdasarkan beberapa kolom. Ini bisa sangat berguna ketika kolom pertama memiliki banyak elemen duplikat. Bentuk umum dari operator ini adalah sebagai berikut:
ORDER BY column 1 order 1, column 2 order 2, column 3 order 3
Dengan kata lain, jika setelah mengurutkan berdasarkan kolom pertama Anda memiliki beberapa nilai identik di dekatnya, maka nilai tersebut diurutkan berdasarkan kolom kedua, dan seterusnya.
Mari tulis kueri yang akan mengurutkan produk kita berdasarkan merek, dan untuk produk dengan merek yang sama - dalam urutan menurun dari nomornya. Seperti inilah permintaan itu:
SELECT * FROM product
ORDER BY brand ASC, count
DESC
Kami mendapatkan hasil kueri berikut:
pengenal | nama | merek | harga | menghitung |
---|---|---|---|---|
6 | Rak | Bosch | 25.00 | 114 |
5 | Lemari | Bosch | 125.00 | 15 |
10 | Piring | Bosch | 199.00 | 10 |
sebelas | Kursi berlengan | Bosch | 44.00 | 8 |
2 | Kursi | IKEA | 5.00 | 45 |
1 | Meja | IKEA | 20.00 | 15 |
9 | Meja rias | IKEA | 99.00 | 10 |
13 | Berdiri | IKEA | 100.00 | 10 |
4 | Tempat tidur | IKEA | 75.00 | 10 |
3 | Sofa | IKEA | 80.00 | 10 |
8 | Lampu | LG | 15.00 | 100 |
7 | televisi | LG | 350.00 | 4 |
12 | pot bunga | Bunga pintar | 99.00 | 9 |
Perhatikan baik-baik tabel - barisnya diurutkan berdasarkan nama merek (urutan abjad), dan baris dengan nama merek yang sama diurutkan berdasarkan nomor produk dalam urutan menurun (kolom terakhir).
GO TO FULL VERSION