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 OFFSETyang 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 LIMITdan OFFSET. Jika Anda menulis ORDER BYsetelah 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 digunakanASC

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 BYmemungkinkan 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).