SELECT: Membaca Data dari Tabel
SELECT * dan memilih kolom tertentu, alias dengan AS, kolom hitungan, DISTINCT, serta urutan kerja SELECT di balik layar.
Analogi: SELECT itu seperti memesan dari menu restoran. Kamu tidak mengubah isi dapur, hanya meminta lauk (kolom) apa saja yang ingin disajikan di piringmu. SELECT * berarti "bawakan semuanya", sedangkan menyebut kolom berarti "hanya nasi dan ayamnya, tanpa sambal".
Menampilkan seluruh isi tabel
SELECT * FROM buku;
Tanda * berarti "semua kolom". Cocok untuk mengintip data, tetapi di aplikasi sungguhan sebaiknya sebut kolom yang dibutuhkan saja: lebih cepat dan lebih jelas.
Memilih kolom tertentu
SELECT judul, harga FROM buku;
Urutan kolom hasil mengikuti urutan yang kamu tulis, bukan urutan di tabel.
Alias: memberi nama pada kolom hasil
SELECT judul AS "Judul Buku", harga AS harga_normal FROM buku;
Alias yang mengandung spasi atau huruf besar harus diapit kutip ganda. Ingat aturan emas PostgreSQL: kutip tunggal untuk teks, kutip ganda untuk nama.
Kolom hasil hitungan
SELECT bisa menghitung langsung:
SELECT judul, harga, harga * 90 / 100 AS harga_diskon_10 FROM buku;
SELECT judul, harga * stok AS nilai_stok FROM buku;
Operator yang tersedia: + - * / dan % (sisa bagi). Hati-hati: di PostgreSQL bilangan bulat dibagi bilangan bulat menghasilkan bilangan bulat.
SELECT 7 / 2; -- 3 (bukan 3.5!)
SELECT 7 / 2.0; -- 3.5000000000000000
SELECT 7::numeric / 2; -- 3.5000000000000000
Menggabungkan teks dengan ||
SELECT judul || ' oleh ' || penulis AS keterangan FROM buku;
Operator || menyambung teks. Jika salah satu bagian NULL, hasil seluruhnya NULL (nanti kita atasi dengan COALESCE).
DISTINCT: membuang duplikat
SELECT DISTINCT penulis FROM buku;
Tanpa DISTINCT, penulis "Tim Dongeng" muncul dua kali karena punya dua buku. Dengan DISTINCT, setiap penulis muncul sekali.
Urutan kerja SELECT (penting!)
Walau kita menulis SELECT di awal, database mengerjakannya dengan urutan: FROM (ambil tabel) → WHERE (saring baris) → GROUP BY → HAVING → SELECT (pilih/hitung kolom) → ORDER BY (urutkan) → LIMIT. Memahami urutan ini membantu kamu menebak kenapa suatu query error, misalnya alias dari SELECT belum bisa dipakai di WHERE.
Kasus nyata: daftar harga untuk kasir
Kasir hanya perlu judul dan harga, bukan seluruh kolom. Mengirim data berlebih memperlambat aplikasi di jaringan yang padat:
SELECT judul, harga FROM buku;
-- dengan alias agar mudah dibaca di laporan
SELECT judul AS "Judul Buku", harga * 90 / 100 AS "Harga Promo 10%" FROM buku;
Kesalahan yang sering terjadi
- Memakai
SELECT *di kode aplikasi produksi. Boros dan rawan rusak saat struktur tabel berubah. - Memakai alias SELECT di klausa
WHERE. Alias belum "lahir" saat WHERE dijalankan (lihat urutan kerja di atas). - Lupa bahwa
7 / 2menghasilkan 3. Ubah salah satu angka menjadi desimal atau gunakan::numeric.