Ringkasan :dalam tutorial ini, Anda akan mempelajari cara mengurutkan kumpulan hasil kueri menggunakan SQLite ORDER BY
klausa.
Pengantar SQLite ORDER BY
klausa
SQLite menyimpan data dalam tabel dalam urutan yang tidak ditentukan. Ini berarti bahwa baris dalam tabel mungkin atau mungkin tidak dalam urutan yang dimasukkan.
Jika Anda menggunakan SELECT
pernyataan untuk meminta data dari tabel, urutan baris dalam kumpulan hasil tidak ditentukan.
Untuk mengurutkan kumpulan hasil, tambahkan ORDER BY
klausa ke SELECT
pernyataan sebagai berikut:
SELECT
select_list
FROM
table
ORDER BY
column_1 ASC,
column_2 DESC;
Code language: SQL (Structured Query Language) (sql)
ORDER BY
klausa muncul setelah FROM
ayat. Ini memungkinkan Anda untuk mengurutkan kumpulan hasil berdasarkan satu atau beberapa kolom dalam urutan menaik atau menurun.
Dalam sintaks ini, Anda menempatkan nama kolom yang ingin Anda urutkan setelah ORDER BY
klausa diikuti oleh ASC
atau DESC
kata kunci.
ASC
kata kunci berarti naik.- Dan
DESC
kata kunci berarti turun.
Jika Anda tidak menentukan ASC
atau DESC
kata kunci, SQLite mengurutkan kumpulan hasil menggunakan ASC
pilihan. Dengan kata lain, ini mengurutkan hasil yang diatur dalam urutan menaik secara default.
Jika Anda ingin mengurutkan hasil yang ditetapkan oleh beberapa kolom, Anda menggunakan koma (,) untuk memisahkan dua kolom. ORDER BY
klausa mengurutkan baris menggunakan kolom atau ekspresi dari kiri ke kanan. Dengan kata lain, ORDER BY
klausa mengurutkan baris menggunakan kolom pertama dalam daftar. Kemudian, ia mengurutkan baris yang diurutkan menggunakan kolom kedua, dan seterusnya.
Anda dapat mengurutkan kumpulan hasil menggunakan kolom yang tidak muncul dalam daftar pilih SELECT
klausa.
SQLite ORDER BY
contoh klausa
Mari kita ambil tracks
tabel dalam database sampel untuk demonstrasi.
Misalkan, Anda ingin mendapatkan data dari kolom nama, milidetik, dan id album, Anda menggunakan pernyataan berikut:
SELECT
name,
milliseconds,
albumid
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Cobalah
SELECT
pernyataan yang tidak menggunakan ORDER BY
klausa mengembalikan kumpulan hasil yang tidak dalam urutan apa pun.
Misalkan Anda ingin mengurutkan kumpulan hasil berdasarkan AlbumId
kolom dalam urutan menaik, Anda menggunakan pernyataan berikut:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid ASC;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Kumpulan hasil sekarang diurutkan berdasarkan AlbumId
kolom dalam urutan menaik seperti yang ditunjukkan pada tangkapan layar.
SQLite menggunakan ASC
secara default sehingga Anda dapat menghilangkannya dalam pernyataan di atas sebagai berikut:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid;
Cobalah
Misalkan Anda ingin mengurutkan hasil yang diurutkan (berdasarkan AlbumId
) di atas dengan Milliseconds
kolom dalam urutan menurun. Dalam hal ini, Anda perlu menambahkan Milliseconds
kolom ke ORDER BY
klausa sebagai berikut:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid ASC,
milliseconds DESC;
Code language: SQL (Structured Query Language) (sql)
Cobalah
SQLite mengurutkan baris berdasarkan AlbumId
kolom dalam urutan menaik terlebih dahulu. Kemudian, itu mengurutkan hasil yang diurutkan yang ditetapkan oleh Milliseconds
kolom dalam urutan menurun.
Jika Anda melihat trek album dengan AlbumId
1, Anda menemukan bahwa urutan trek berubah di antara dua pernyataan.
SQLite ORDER BY
dengan posisi kolom
Alih-alih menentukan nama kolom, Anda dapat menggunakan posisi kolom di ORDER BY
klausa.
Misalnya, pernyataan berikut mengurutkan trek berdasarkan albumid
(kolom ke-3) dan milliseconds
(kolom ke-2) dalam urutan menaik.
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
3,2;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Angka 3 dan 2 mengacu pada AlbumId
dan Milliseconds
dalam daftar kolom yang muncul di SELECT
klausa.
Mengurutkan NULL
Di dunia database, NULL itu spesial. Ini menunjukkan bahwa informasi yang hilang atau data tidak berlaku.
Misalkan Anda ingin menyimpan ulang tahun seorang artis dalam sebuah tabel. Pada saat menyimpan rekaman artis, Anda tidak memiliki informasi ulang tahun.
Untuk mewakili informasi ulang tahun yang tidak diketahui dalam database, Anda dapat menggunakan tanggal khusus seperti 01.01.1900
atau ''
string kosong. Namun, kedua nilai ini tidak secara jelas menunjukkan bahwa tanggal lahir tidak diketahui.
NULL diciptakan untuk mengatasi masalah ini. Alih-alih menggunakan nilai khusus untuk menunjukkan bahwa informasi tersebut hilang, NULL digunakan.
NULL istimewa karena Anda tidak dapat membandingkannya dengan nilai lain. Sederhananya, jika kedua informasi tersebut tidak diketahui, Anda tidak dapat membandingkannya.
NULL bahkan tidak bisa dibandingkan dengan dirinya sendiri; NULL tidak sama dengan dirinya sendiri jadi NULL = NULL
selalu menghasilkan false.
Saat menyortir, SQLite menganggap NULL lebih kecil dari nilai lainnya.
Artinya NULL akan muncul di awal kumpulan hasil jika Anda menggunakan ASC atau di akhir kumpulan hasil saat Anda menggunakan DESC.
SQLite 3.30.0 menambahkan NULLS FIRST
dan NULLS LAST
pilihan ke ORDER BY
ayat. NULLS FIRST
opsi menentukan bahwa NULL akan muncul di awal set hasil sementara NULLS LAST
pilihan tempatkan NULL di akhir kumpulan hasil.
Contoh berikut menggunakan ORDER BY
klausa untuk mengurutkan trek berdasarkan komposer:
SELECT
TrackId,
Name,
Composer
FROM
tracks
ORDER BY
Composer;
Code language: SQL (Structured Query Language) (sql)
Pertama, Anda melihat bahwa NULL muncul di awal kumpulan hasil karena SQLite memperlakukannya sebagai nilai terendah. Saat Anda menggulir ke bawah hasilnya, Anda akan melihat nilai lain:
Contoh berikut menggunakan NULLS LAST
opsi untuk menempatkan NULL setelah nilai lain:
SELECT
TrackId,
Name,
Composer
FROM
tracks
ORDER BY
Composer NULLS LAST;
Code language: SQL (Structured Query Language) (sql)
Jika Anda menggulir ke bawah output, Anda akan melihat bahwa NULL ditempatkan di akhir kumpulan hasil:
Dalam tutorial ini, Anda telah belajar bagaimana menggunakan SQLite ORDER BY
klausa untuk mengurutkan kumpulan hasil menggunakan satu kolom, beberapa kolom dalam urutan menaik dan menurun.