Alias SQL: Bikin Nama Kolom dan Tabel Lebih Manusiawi
TL;DR
Alias SQL adalah nama sementara yang kamu kasih ke kolom atau tabel di dalam satu query, pakai keyword AS. Sintaksnya SELECT nama_kolom AS nama_baru FROM nama_tabel AS t. Alias cuma hidup selama query itu jalan dan gak mengubah nama asli di database. Alias kolom bisa dipakai di ORDER BY dan GROUP BY, tapi gak bisa di WHERE, gara-gara urutan eksekusi SQL.
Alias SQL adalah nama sementara yang kamu kasih ke kolom atau tabel di dalam satu query. Bikinnya pakai keyword AS.
Namanya cuma hidup selama query itu jalan. Nama asli di database gak ke-sentuh sama sekali.
Kedengarannya sepele. Tapi tanpa alias, kamu gak bisa nulis self join, gak bisa bikin subquery di klausa FROM, dan tiap laporan yang kamu kirim ke bos bakal punya header SUM(total_belanja) — bukan "Total Penjualan".
Apa itu alias di SQL?
Alias adalah nama pengganti buat kolom atau tabel yang cuma berlaku di dalam query tempat dia ditulis. Kamu tulis AS nama_baru setelah nama kolom atau tabel, dan hasil query bakal pakai nama itu.
Ada dua jenis alias di SQL:
- Alias kolom — ganti judul kolom di hasil query. Kepakai buat merapikan header laporan.
- Alias tabel — kasih nama pendek ke tabel. Kepakai buat mempersingkat JOIN dan buat mbedain tabel yang di-join ke dirinya sendiri.
Semua contoh di bawah pakai dua tabel toko_berkah: pelanggan (6 baris) dan transaksi (8 baris). DDL lengkapnya ada di bagian query kalau kamu mau ikut praktek.
Gimana cara bikin alias kolom di SQL?
Tulis AS setelah nama kolom, lalu nama barunya:
SELECT nama_pelanggan AS pelanggan,
kota AS asal_kota
FROM pelanggan;
Hasilnya:
| pelanggan | asal_kota |
|---|---|
| Wati Kurnia | Bandung |
| Toni Wijaya | Surabaya |
| Sinta Dewi | Bandung |
Alias jadi beneran kepakai waktu kolomnya hasil hitungan. Tanpa alias, header kolomnya bakal jelek banget:
SELECT id_pelanggan,
SUM(total_belanja) AS total_omzet,
COUNT(*) AS jumlah_transaksi,
SUM(total_belanja) / COUNT(*) AS rata_rata_belanja
FROM transaksi
GROUP BY id_pelanggan
ORDER BY total_omzet DESC;
Perhatiin ORDER BY total_omzet di baris terakhir. Alias boleh dipakai di ORDER BY — ini alasan lain kenapa ngasih alias itu ngirit ketikan.
Fungsi hitungannya sendiri aku bahas terpisah di halaman fungsi SUM.
Gimana cara bikin alias tabel?
Sama persis, tapi ditaruh setelah nama tabel di klausa FROM atau JOIN:
SELECT p.nama_pelanggan AS pelanggan,
p.kota,
t.tgl_transaksi AS tanggal,
t.total_belanja AS nilai
FROM transaksi AS t
JOIN pelanggan AS p ON t.id_pelanggan = p.id_pelanggan
ORDER BY t.tgl_transaksi;
Begitu tabelnya punya alias t dan p, kamu bisa nulis t.total_belanja alih-alih transaksi.total_belanja. Di query yang nge-join 4 tabel, ini nghemat ratusan karakter dan bikin query muat di satu layar.
Konvensi yang aku pakai: alias tabel 1–3 huruf, diambil dari huruf awal nama tabelnya. t buat transaksi, p buat pelanggan, pr buat produk. Jangan pakai a, b, c — tiga bulan lagi kamu sendiri yang bingung baca query-nya.
Kapan alias jadi wajib, bukan cuma mempercantik?
Ada tiga situasi di mana query kamu langsung error kalau alias-nya gak ada.
1. Self join
Kamu nge-join satu tabel ke salinan dirinya sendiri. Database gak bisa bedain mana tabel kiri dan mana tabel kanan kalau namanya sama.
SELECT a.nama_pelanggan AS pelanggan_1,
b.nama_pelanggan AS pelanggan_2,
a.kota
FROM pelanggan a
JOIN pelanggan b
ON a.kota = b.kota
AND a.id_pelanggan < b.id_pelanggan;
Query ini nyari pasangan pelanggan yang tinggal di kota sama. Tanpa alias a dan b, SQL langsung nolak. Contoh lengkapnya ada di artikel SELF JOIN SQL.
2. Kolom bernama sama di dua tabel
Kalau tabel pelanggan dan transaksi sama-sama punya kolom id_pelanggan, nulis SELECT id_pelanggan doang bikin error "ambiguous column". Alias tabel yang mastiin database tau kamu maksud yang mana.
3. Subquery di klausa FROM
PostgreSQL dan MySQL mewajibkan subquery di FROM punya alias:
SELECT ringkasan.kota,
ringkasan.total_omzet
FROM (
SELECT p.kota,
SUM(t.total_belanja) AS total_omzet
FROM transaksi t
JOIN pelanggan p ON t.id_pelanggan = p.id_pelanggan
GROUP BY p.kota
) AS ringkasan
WHERE ringkasan.total_omzet > 200000
ORDER BY ringkasan.total_omzet DESC;
Hapus AS ringkasan dan PostgreSQL bakal nyemprot: subquery in FROM must have an alias.
Kenapa alias gak bisa dipakai di WHERE?
Ini pertanyaan yang paling sering bikin pemula stuck. Query di bawah kelihatan masuk akal, tapi error:
-- SALAH
SELECT total_belanja * 0.11 AS ppn
FROM transaksi
WHERE ppn > 20000; -- column "ppn" does not exist
Penyebabnya urutan eksekusi. Database jalanin klausa dengan urutan begini:
- FROM — ambil tabelnya
- WHERE — saring barisnya
- GROUP BY — grupin
- HAVING — saring grupnya
- SELECT — di sini alias baru lahir
- ORDER BY — urutin
Waktu WHERE dieksekusi, alias ppn belum ada. Makanya error.
Perbaikannya: tulis ulang ekspresinya di WHERE.
SELECT id_transaksi,
total_belanja * 0.11 AS ppn
FROM transaksi
WHERE total_belanja * 0.11 > 20000;
Atau bungkus jadi subquery, terus saring di lapisan luar — lebih enak dibaca kalau ekspresinya panjang.
Urutan yang sama juga jelasin kenapa alias boleh di ORDER BY: klausa itu jalan setelah SELECT. Detail resminya ada di dokumentasi PostgreSQL soal table expressions.
Contoh kasus: laporan omzet per kota toko_berkah
Bu Sari minta satu tabel yang bisa langsung dia tempel ke laporan bulanan. Header-nya harus kebaca manusia, bukan bahasa mesin.
SELECT p.kota AS "Kota",
COUNT(t.id_transaksi) AS "Jumlah Transaksi",
SUM(t.total_belanja) AS "Total Penjualan"
FROM pelanggan p
JOIN transaksi t ON p.id_pelanggan = t.id_pelanggan
GROUP BY p.kota
ORDER BY "Total Penjualan" DESC;
| Kota | Jumlah Transaksi | Total Penjualan |
|---|---|---|
| Bandung | 5 | 868.500 |
| Surabaya | 3 | 419.000 |
Dari 8 transaksi di data ini, Bandung nyumbang 67% omzet cuma dari 3 pelanggan. Semarang nol — Bagas daftar 11 Januari tapi belum pernah belanja sekali pun.
Alias berspasi kayak "Total Penjualan" bikin hasil query bisa langsung diekspor ke Excel tanpa perlu rename kolom manual. Di PostgreSQL, SQLite, dan Oracle pakai tanda kutip ganda. MySQL pakai backtick. SQL Server pakai kurung siku.
Kesalahan umum waktu pakai alias
1. Lupa koma sebelum alias
SELECT nama_pelanggan kota FROM pelanggan; gak error — tapi hasilnya bukan yang kamu mau. SQL bakal nganggep kota itu alias buat kolom nama_pelanggan, dan kolom kota beneran gak ikut keluar. Bug diam-diam yang paling sering kejadian.
2. Nge-mix alias tabel dan nama tabel penuh
Begitu kamu nulis FROM transaksi AS t, nama transaksi gak bisa dipakai lagi di query itu. SELECT transaksi.total_belanja bakal error. Pilih satu, konsisten.
3. Alias yang nabrak keyword SQL
AS order, AS group, AS select — semuanya bikin masalah. Kalau kepaksa, bungkus pakai tanda kutip ganda. Lebih gampang: pilih nama lain.
4. Alias berspasi di query yang bakal di-nest
Header cantik enak buat laporan akhir. Tapi kalau query itu bakal jadi subquery buat query lain, tiap referensi ke "Total Penjualan" harus pakai kutip terus. Pakai total_penjualan di query dalam, alias cantik cuma di lapisan paling luar.
FAQ soal alias SQL
Keyword AS wajib ditulis?
Gak. SELECT total_belanja AS omzet dan SELECT total_belanja omzet hasilnya sama. Buat alias tabel, FROM transaksi t juga sah. Tapi nulis AS di alias kolom bikin query lebih gampang dibaca, dan ngurangin risiko bug "lupa koma" di atas.
Alias ngubah nama kolom di database?
Nggak. Alias cuma hidup selama query jalan. Nama kolom di tabel aslinya tetap utuh. Kalau kamu mau ganti nama kolom permanen, itu kerjaan ALTER TABLE.
Bisa gak alias dipakai di GROUP BY?
Di PostgreSQL dan MySQL bisa, soalnya dua database itu ngizinin alias SELECT dibaca di GROUP BY. Di SQL Server dan Oracle gak bisa — kamu harus tulis ulang ekspresi lengkapnya. Kalau query kamu harus jalan di banyak database, tulis ulang aja biar aman.
Alias tabel ngaruh ke performa gak?
Nol. Alias diproses waktu query di-parse, sebelum data disentuh. Query dengan alias dan tanpa alias punya rencana eksekusi yang sama persis. Alias murni buat manusia, bukan buat mesin.
Ringkasnya
Alias kolom bikin header laporan kebaca. Alias tabel bikin JOIN muat di satu layar.
Dan di tiga kasus — self join, kolom ambigu, subquery di FROM — alias itu syarat, bukan pilihan.
Satu aturan yang bikin kamu gak kena bug: kalau alias-nya ekspresi hitungan, jangan coba pakai dia di WHERE. Tulis ulang ekspresinya, atau bungkus jadi subquery.
Coba tulis ulang satu query panjang di kerjaan kamu pakai alias tabel. Lanjut latihannya di panduan SELECT SQL kalau kamu masih ngerapiin dasar-dasarnya.
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.