Idenya
SELECT * FROM products; menampilkan semuanya. Itu praktis untuk melihat pertama kali, tapi di tempat kerja kamu hampir tidak pernah menginginkan semuanya. Laporan tentang harga tidak butuh tingkat stok, dan daftar email pelanggan tidak butuh tanggal pendaftaran. SELECT memungkinkanmu memilih persis kolom-kolom yang kamu butuhkan, dan itulah langkah pertama setiap query yang akan kamu tulis.
Bayangkan tabel sebagai spreadsheet yang lebar. FROM mengatakan sheet mana yang dibuka. SELECT mengatakan kolom mana yang tetap terlihat, dan dalam urutan apa.
Memilih kolom
Misalkan tim marketing sedang menyusun daftar harga untuk website. Mereka butuh nama dan harga setiap produk, tidak lebih. Tulis kolom-kolom yang kamu inginkan setelah SELECT, dipisahkan koma, dan database akan meninggalkan kolom lainnya:
SELECT name, price
FROM products;
name | price
----------------------+--------
French Press 600ml | 185000
Pour-over Kettle | 320000
Arabica Gayo 250g | 95000
Robusta Lampung 250g | 65000
Toraja Kalosi 250g | 110000
Ceramic Mug | 55000
Notebook A5 Dotted | 45000
Gel Pen Set | 38000
Desk Organizer | 89000
Wireless Mouse | 175000
USB-C Hub | 289000
Desk Lamp LED | 245000
Scented Candle | 75000
Throw Pillow | 120000
Bamboo Plant | 60000
(15 rows)
- Kolom-kolom muncul sesuai urutan yang kamu tulis, bukan urutan penyimpanannya di tabel.
- Tidak ada koma setelah kolom terakhir. Koma di belakang (
SELECT name, price, FROM ...) adalah salah satu error SQL yang paling umum. - Pergantian baris dan spasi tidak penting bagi database. Menaruh
FROMdi barisnya sendiri hanya membuat query lebih mudah dibaca.
Kamu bisa menaruh kolom-kolom dalam urutan apa pun yang kamu suka:
SELECT price, name, category
FROM products;
price | name | category
--------+----------------------+-------------
185000 | French Press 600ml | Kitchen
320000 | Pour-over Kettle | Kitchen
95000 | Arabica Gayo 250g | Coffee
...
(15 rows)
Cara SQL membaca query-mu
Kamu menulis SELECT lebih dulu, tapi database membaca FROM lebih dulu. Ia membuka tabelnya, lalu memilih kolom-kolomnya. Ingat itu, karena ini menjelaskan banyak aturan nanti:
| Kamu menulis | Database melakukan |
|---|---|
SELECT name, price | 2. simpan hanya kolom-kolom ini |
FROM products | 1. buka tabel ini |
Urutan ini akan bertambah saat kamu mempelajari WHERE, GROUP BY, dan ORDER BY, dan mengetahuinya menghemat berjam-jam kebingungan.
Saat ada yang salah
Error SQL terlihat menakutkan, tapi sangat spesifik. Minta kolom yang tidak ada:
SELECT name, prices
FROM products;
ERROR: column "prices" does not exist
Database memberi tahu persis nama mana yang tidak bisa ditemukannya. Perbaikannya hampir selalu salah ketik: di sini, kolomnya price, bukan prices. Cek tab Tables setiap kali kamu tidak yakin dengan sebuah nama.
Sekarang koma di belakang:
SELECT name, price,
FROM products;
ERROR: syntax error at or near "FROM"
"Syntax error at or near FROM" berarti "ada yang salah tepat sebelum FROM". Database membaca komanya, mengharapkan kolom lain, dan malah menemukan FROM.
Saat kamu mendapat syntax error, lihat kata yang disebutkannya, lalu lihat tepat sebelum kata itu. Di situlah kesalahannya biasanya berada.
Komentar
Dua tanda strip memulai komentar: semua yang ada setelah -- di baris itu diabaikan database. Pakai komentar untuk menjelaskan mengapa sebuah query ada:
-- Daftar harga untuk tim marketing, kampanye Juli
SELECT name, category, price
FROM products;
name | category | price
----------------------+-------------+--------
French Press 600ml | Kitchen | 185000
Pour-over Kettle | Kitchen | 320000
Arabica Gayo 250g | Coffee | 95000
...
(15 rows)
Kenapa tidak selalu memakai SELECT *?
* sempurna untuk menjelajahi tabel yang belum kamu kenal. Di query yang akan kamu simpan, sebutkan kolom-kolomnya:
- Lebih jelas. Siapa pun yang membaca
SELECT name, email FROM customerstahu persis isi laporannya. - Lebih aman. Kalau seseorang menambahkan kolom ke tabel bulan depan,
SELECT *diam-diam mengubah bentuk laporanmu. Dashboard atau script Python yang membacanya bisa rusak. - Lebih cepat. Di tabel besar, mengambil lebih sedikit kolom berarti lebih sedikit data yang dipindahkan. Dengan jutaan baris, itu penting.
Pakai SELECT * untuk melihat. Pakai kolom bernama untuk bekerja.
Beberapa query sekaligus
Kamu bisa menjalankan lebih dari satu pernyataan sekaligus, mengakhiri masing-masing dengan titik koma. Situs ini menampilkan setiap hasilnya secara terpisah:
SELECT name, city FROM customers;
SELECT name, department FROM employees;
name | department
-----------------+------------
Rina Hartono | Management
Agus Salim | Sales
Maya Anggraini | Operations
...
(12 rows)
Output di atas menampilkan hasil terakhir. Di editor, kamu akan melihat keduanya, satu setelah yang lain.
Gaya format
Tidak ada satu gaya resmi, tapi gaya ini dipakai luas dan mudah dibaca:
SELECT
name,
category,
price
FROM products;
- Keyword dengan huruf kapital (
SELECT,FROM), nama dengan huruf kecil. - Satu kolom per baris kalau ada lebih dari dua atau tiga. Menambah, menghapus, atau mengomentari sebuah kolom lalu hanya menyentuh tepat satu baris.
- Setiap klausa di barisnya sendiri, supaya strukturnya terlihat sekilas.
Mengapa ini penting untuk kode bersih
Memilih kolom dengan sengaja adalah versi SQL dari menamai variabel dengan baik: maksudmu jadi jelas. Query yang berbunyi SELECT name, email FROM customers mendokumentasikan dirinya sendiri. Dirimu di masa depan, rekan-rekan timmu, dan script-script Python-mu semuanya diuntungkan oleh query yang mengembalikan persis apa yang dijanjikannya, tidak lebih.
Rangkuman
SELECT col1, col2 FROM table;hanya mengembalikan kolom-kolom itu, dalam urutan itu.- Database membaca
FROMlebih dulu, laluSELECT. - Tidak ada koma setelah kolom terakhir. Error menunjuk ke kata setelah kesalahannya.
--memulai komentar.- Pakai
*untuk menjelajah, kolom bernama untuk apa pun yang kamu simpan.