SELECT SQL: Perintah Pertama yang Harus Kamu Kuasai
TL;DR
SELECT adalah perintah SQL untuk mengambil data dari tabel database, dengan bentuk dasar SELECT kolom FROM tabel. Kamu sebut kolom yang mau diambil setelah SELECT, lalu nama tabelnya setelah FROM. SELECT bintang mengambil semua kolom, tapi sebaiknya sebut kolomnya satu per satu supaya query lebih ringan dan nggak gampang rusak.
SELECT adalah perintah SQL buat minta data dari database. Kamu sebut kolom apa yang mau diambil, sebut tabelnya, tekan Run. Database ngasih jawabannya.
Query pertama orang biasanya bikin reaksi yang sama: "oh, gini doang?" Iya, gini doang. Dua baris, dan kamu udah narik data sendiri tanpa nunggu tim IT tiga hari.
Di bawah ada bentuk dasarnya, alias, DISTINCT, kolom hitungan, urutan eksekusi yang bikin banyak orang bingung, plus tabel latihan yang bisa kamu copy langsung.
Apa itu SELECT di SQL?
SELECT adalah perintah untuk membaca data dari satu atau lebih tabel di database. Bentuk paling dasarnya cuma butuh dua hal: kolom yang kamu mau, dan tabel tempat kolom itu tinggal.
SELECT kolom1, kolom2
FROM nama_tabel;
SELECT nggak pernah mengubah data. Dia cuma baca. Jadi kamu bebas jalanin berkali-kali, salah pun nggak apa-apa — nggak ada yang rusak.
Itu kenapa SELECT jadi perintah pertama yang diajarin di mana-mana. Risikonya nol, gunanya langsung kerasa.
Gimana cara nulis query SELECT pertama kamu?
Semua contoh di artikel ini pakai tabel transaksi milik toko_berkah — 8 baris penjualan retail awal Januari 2026. Bikin dulu tabelnya:
CREATE TABLE transaksi (
id INT PRIMARY KEY,
tanggal DATE NOT NULL,
kota VARCHAR(50),
kategori VARCHAR(50),
produk VARCHAR(100),
kasir VARCHAR(50),
jumlah INT,
harga_satuan DECIMAL(12,2),
total DECIMAL(12,2)
);
INSERT INTO transaksi (id, tanggal, kota, kategori, produk, kasir, jumlah, harga_satuan, total) VALUES
(1, '2026-01-03', 'Surabaya', 'Minuman', 'Kopi Sachet Gula Aren', 'Rina', 10, 2500.00, 25000.00),
(2, '2026-01-03', 'Bandung', 'Snack', 'Keripik Singkong', 'Doni', 5, 12000.00, 60000.00),
(3, '2026-01-04', 'Surabaya', 'Minuman', 'Teh Kotak', 'Rina', 24, 4000.00, 96000.00),
(4, '2026-01-05', 'Jakarta', 'Sembako', 'Beras Premium 5kg', 'Sari', 3, 75000.00, 225000.00),
(5, '2026-01-06', 'Bandung', 'Minuman', 'Kopi Susu Botol', 'Doni', 12, 9000.00, 108000.00),
(6, '2026-01-07', 'Jakarta', 'Snack', 'Biskuit Kaleng', 'Sari', 2, 55000.00, 110000.00),
(7, '2026-01-08', 'Surabaya', 'Sembako', 'Minyak Goreng 2L', 'Rina', 6, 38000.00, 228000.00),
(8, '2026-01-09', 'Bandung', 'Minuman', 'Kopi Sachet Gula Aren', 'Doni', 20, 2500.00, 50000.00);
Sekarang query pertama:
SELECT tanggal, produk, total
FROM transaksi;
Hasilnya 8 baris dengan tiga kolom. Kolom kota, kasir, dan lainnya nggak ikut, soalnya kamu nggak minta.
Kenapa SELECT * sebaiknya dihindari?
Tanda bintang artinya "ambil semua kolom".
SELECT * FROM transaksi;
Buat ngintip isi tabel yang baru pertama kali kamu lihat, ini wajar. Tapi jangan dipakai di query yang beneran dipakai orang lain, karena dua alasan.
Pertama, berat. Tabel transaksi e-commerce beneran gampang punya 40 kolom, dan kamu cuma butuh 3. Sisanya ikut ditarik lewat jaringan, dibuang percuma.
Kedua, rapuh. Begitu ada orang nambah kolom baru atau ngeser urutannya, laporan yang bergantung pada posisi kolom bakal geser diam-diam. Nggak error, cuma salah.
Sebut kolomnya. Ngetiknya cuma 5 detik lebih lama.
Gimana cara kasih nama alias di SELECT?
Nama kolom di database sering singkat dan jelek buat dibaca orang bisnis. Pakai AS buat ganti label di hasilnya:
SELECT
produk AS nama_produk,
total AS omzet,
harga_satuan AS harga
FROM transaksi;
Header di hasil query berubah, tapi nama kolom di tabel aslinya nggak kesentuh. Kalau alias-nya ada spasi, bungkus pakai tanda kutip ganda: AS "Total Omzet".
Kata AS sebenernya opsional — SELECT produk nama_produk juga jalan. Tapi tulis aja AS-nya, biar orang berikutnya yang baca query kamu nggak mikir dua kali. Detail lengkapnya ada di artikel alias SQL.
Bisa nggak bikin kolom baru langsung di SELECT?
Bisa. Kamu boleh nulis perhitungan di daftar kolom, dan database bikin kolom hasilnya di tempat:
SELECT
produk,
jumlah,
harga_satuan,
jumlah * harga_satuan AS total_hitung
FROM transaksi;
Kolom total_hitung nggak ada di tabel. Dia dihitung ulang tiap kali query jalan. Ini cara paling gampang buat ngecek apakah kolom total yang disimpan sistem kasir beneran cocok sama hasil hitungan — dan di data toko_berkah, 2 dari 8 baris ternyata selisih gara-gara diskon yang nggak kecatat.
Apa itu SELECT DISTINCT?
DISTINCT buang baris kembar dari hasil query.
SELECT DISTINCT kota FROM transaksi;
Tabel transaksi punya 8 baris, tapi query ini cuma ngasih 3: Surabaya, Bandung, Jakarta. Berguna banget waktu kamu mau tahu isi kolom kategori tanpa harus scroll ribuan baris.
Pembahasan lengkapnya ada di halaman fungsi DISTINCT.
SELECT digabung sama perintah lain
SELECT jarang jalan sendirian. Ini bentuk yang bakal kamu pakai tiap hari:
SELECT produk, total
FROM transaksi
WHERE kota = 'Surabaya'
ORDER BY total DESC
LIMIT 3;
Baca dari atas ke bawah: ambil produk dan total, dari tabel transaksi, cuma yang di Surabaya, urutin dari total terbesar, ambil 3 teratas. Hasilnya: Minyak Goreng 2L (228.000), Teh Kotak (96.000), Kopi Sachet Gula Aren (25.000).
Masing-masing bagiannya dibahas terpisah di WHERE dan ORDER BY.
Urutan nulis vs urutan eksekusi
Ini yang bikin pemula bingung: urutan kamu nulis beda dari urutan database ngerjain.
| Urutan nulis | Urutan eksekusi |
|---|---|
| 1. SELECT | 1. FROM |
| 2. FROM | 2. WHERE |
| 3. WHERE | 3. GROUP BY |
| 4. GROUP BY | 4. HAVING |
| 5. HAVING | 5. SELECT |
| 6. ORDER BY | 6. ORDER BY |
| 7. LIMIT | 7. LIMIT |
Efek praktisnya satu: alias yang kamu bikin di SELECT nggak bisa dipakai di WHERE, soalnya waktu WHERE jalan, alias-nya belum ada. Tapi di ORDER BY, alias bisa dipakai — dia jalan setelah SELECT.
-- Ini ERROR
SELECT jumlah * harga_satuan AS total_hitung
FROM transaksi
WHERE total_hitung > 100000;
-- Ini JALAN
SELECT jumlah * harga_satuan AS total_hitung
FROM transaksi
ORDER BY total_hitung DESC;
Kesalahan umum waktu nulis SELECT
- Lupa titik koma. Sebagian tool nggak masalah, tapi kalau kamu jalanin beberapa query sekaligus, tanpa titik koma semuanya nyampur jadi satu.
- Nulis nama kolom pakai kutip ganda.
SELECT "produk"di PostgreSQL artinya nama kolom yang case-sensitive, bukan teks. Buat teks, pakai kutip satu. - Salah eja nama kolom. Database nggak nebak-nebak.
producklangsung error, dan pesan errornya biasanya nyebutin nama kolom yang mirip. - Nyampur koma di kolom terakhir.
SELECT produk, total, FROM transaksi— koma sebelum FROM itu error, dan pesan errornya sering nggak nunjuk ke situ.
Standar resmi sintaks SELECT ada di dokumentasi PostgreSQL, dan kebanyakan database ngikutin bentuk yang sama.
FAQ SELECT SQL
Apa fungsi SELECT di SQL?
SELECT dipakai buat minta data dari tabel di database. Kamu sebut kolom apa yang mau diambil, lalu FROM nunjuk tabel mana yang jadi sumbernya. Hasilnya berupa tabel baru di layar, dan data aslinya nggak berubah sama sekali. Ini satu-satunya perintah SQL yang cuma baca, jadi aman kamu jalanin berkali-kali.
Kenapa SELECT * sebaiknya dihindari?
SELECT bintang narik semua kolom, termasuk yang nggak kamu butuhin. Di tabel dengan 40 kolom, itu bikin query lebih berat dan transfer data lebih besar. Masalah kedua lebih licik: kalau ada orang nambah atau mengurutkan ulang kolom, kode yang bergantung pada urutan kolom bisa rusak diam-diam.
Bisa nggak SELECT tanpa FROM?
Bisa, di sebagian besar database. SELECT 1 + 1 langsung ngasih hasil 2 tanpa nyentuh tabel apa pun. Ini berguna buat ngetes fungsi atau bikin nilai konstan. Di Oracle kamu tetap harus nulis FROM DUAL. Di PostgreSQL, MySQL, dan SQL Server, SELECT tanpa FROM jalan mulus.
Apa bedanya SELECT dan SELECT DISTINCT?
SELECT ngasih semua baris apa adanya, termasuk yang isinya kembar. SELECT DISTINCT buang duplikatnya dan cuma ngasih nilai unik. Kalau kolom kota punya 200 baris dengan 8 kota berbeda, SELECT kota ngasih 200 baris, sedangkan SELECT DISTINCT kota ngasih 8 baris.
Urutan nulis SELECT itu gimana?
Urutan nulisnya SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT. Tapi urutan kerjanya beda: database jalanin FROM dulu, baru WHERE, lalu GROUP BY, HAVING, baru SELECT, terakhir ORDER BY dan LIMIT. Itu alasan alias yang kamu bikin di SELECT nggak bisa dipakai di WHERE.
Rangkuman
SELECT butuh dua hal: kolom yang kamu mau, dan tabel asalnya. Sebut kolomnya satu-satu, jangan andalkan bintang.
Alias bikin hasil query enak dibaca. DISTINCT buang duplikat. Dan alias nggak bisa dipakai di WHERE, gara-gara urutan eksekusinya.
Copy tabel transaksi di atas ke database kamu, terus tulis 3 query sendiri. Nggak usah takut salah — SELECT nggak bisa ngerusak apa-apa.
Lanjut ke WHERE SQL buat belajar nyaring barisnya.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel Terkait
7 SQL Client Gratis Terbaik buat Analis Data (2026)
Nggak perlu bayar buat nulis query. Ini 7 SQL client gratis yang beneran dipakai analis, plus kelebihan dan kekurangannya masing-masing.
SQL Style Guide: Cara Nulis Query yang Enak Dibaca Tim
Sepuluh aturan SQL style guide yang bikin query kamu kebaca sama tim — dan sama kamu sendiri 6 bulan lagi. Lengkap dengan contoh sebelum-sesudah.
Take-Home Test SQL Data Analyst: Contoh Soal + Cara Ngerjainnya
Contoh soal take-home test SQL yang beneran dipakai perusahaan, dikerjain step by step — dari baca soal, nulis query, sampai nyusun insight yang bikin recruiter nengok.