0Pricing
SQL Interview Prep · Pelajaran

Memproyeksikan Kolom dan Jebakan Alias

Mengapa Anda tidak dapat mereferensikan alias SELECT di WHERE, dan bagaimana pewawancara menguji cakupan alias.

Memproyeksikan Kolom dan Jebakan Alias adalah pelajaran SQL Interview Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Interview Prep mencakup 4 pelajaran total.

Proyeksi: Memilih Kolom

Memilih kolom yang dikembalikan oleh kueri disebut proyeksi — itulah yang Anda lakukan setiap kali menulis SELECT. Dalam kode nyata, sebutkan kolom secara eksplisit; gunakan SELECT * hanya untuk eksplorasi cepat.

SELECT id, first_name, email
FROM employees;

Mengapa Pewawancara Tidak Menyukai SELECT *

Mengapa pewawancara tidak menyukai SELECT * dalam kode aplikasi? Penggunaan SELECT * rentan (urutan kolom dapat berubah), memboroskan lebar pita, mengurangi pemanfaatan indeks, dan menyembunyikan hal yang sebenarnya Anda perlukan. Sebutkan kolom Anda. 👍

Memberi Alias pada Kolom dengan AS

Alias mengganti nama kolom dalam keluaran Anda. Gunakan AS agar lebih jelas — alias sangat berguna pada kolom hasil perhitungan, karena memberikan judul yang bersih dan mudah dibaca untuk ekspresi yang rumit seperti gaji * 12.

SELECT first_name AS name,
       salary * 12 AS annual_salary
FROM employees;

Mengapit Alias yang Mengandung Spasi

Jika alias mengandung spasi atau kata yang dicadangkan, Anda harus mengapitnya dengan tanda kutip. Cara standar yang portabel adalah menggunakan tanda petik ganda. Kiat: gunakan saja nama snake_case agar tidak perlu mengapitnya.

SELECT salary AS "Annual Pay"
FROM employees;

Jebakan Besar: Cakupan Alias dalam WHERE

Inilah jebakan yang paling sering diuji: Anda mendefinisikan alias dalam SELECT, lalu memfilter berdasarkan alias tersebut dalam WHERE, dan operasi itu gagal. WHERE berjalan sebelum SELECT, sehingga alias tersebut belum ada.

-- This raises an error
SELECT salary * 12 AS annual_salary
FROM employees
WHERE annual_salary > 100000;

Alasannya: Urutan Eksekusi Logis

Solusinya adalah memahami urutan logis klausa: FROM, WHERE, GROUP BY, HAVING, SELECT, lalu ORDER BY. SELECT berada hampir di bagian akhir, sehingga klausa sebelumnya tidak dapat melihat aliasnya.

Perbaikan 1: Ulangi Ekspresinya

Solusi yang paling portabel sederhana saja: ulangi ekspresinya di WHERE, bukan aliasnya. Memang sedikit lebih panjang, tetapi selalu berfungsi di setiap basis data.

SELECT salary * 12 AS annual_salary
FROM employees
WHERE salary * 12 > 100000;

Perbaikan 2: Bungkus dalam Subkueri atau CTE

Jika mengulangi ekspresi yang panjang terasa kurang rapi, hitung ekspresi tersebut terlebih dahulu dalam subkueri atau CTE. Di sana, alias menjadi kolom sungguhan, sehingga WHERE bagian luar dapat melakukan penyaringan berdasarkan alias tersebut.

SELECT *
FROM (
  SELECT first_name, salary * 12 AS annual_salary
  FROM employees
) t
WHERE annual_salary > 100000;

Alias yang BOLEH Digunakan: ORDER BY

Kabar baiknya: ORDER BY dapat menggunakan alias SELECT karena dijalankan setelah SELECT. Jadi WHERE, GROUP BY, dan HAVING tidak dapat melihat alias—tetapi ORDER BY bisa.

SELECT first_name, salary * 12 AS annual_salary
FROM employees
ORDER BY annual_salary DESC;

Perbedaan Dialek yang Perlu Disebutkan

Perlu disebutkan: MySQL secara longgar mengizinkan alias dalam GROUP BY dan HAVING, sedangkan Postgres dan SQL Server mengikuti standar. Gunakan urutan logis sebagai dasar penalaran, lalu sebutkan pengecualian ini.

Alias Tabel vs Alias Kolom

Jangan sampai tertukar. Alias tabel mempersingkat nama tabel dan terlihat di mana pun, bahkan di WHERE. Alias kolom mengganti nama keluaran dan tidak terlihat di sana—keduanya justru berlawanan.

SELECT e.first_name, e.salary AS pay
FROM employees AS e
WHERE e.salary > 50000;

Uji Cepat

Uji jebakan utamanya.

Rangkuman

Rangkuman: pilih kolom secara eksplisit daripada menggunakan SELECT *, dan buat alias dengan AS. Alias SELECT tidak terlihat di WHERE/GROUP BY/HAVING, tetapi berfungsi di ORDER BY. Perbaiki masalah ini dengan mengulangi ekspresi atau menggunakan CTE.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Memproyeksikan Kolom dan Jebakan Alias” gratis?

Ya — teks lengkap “Memproyeksikan Kolom dan Jebakan Alias” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Interview Prep, upgrade ke CoddyKit PRO. Kursus SQL Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Memproyeksikan Kolom dan Jebakan Alias”?

Mengapa Anda tidak dapat mereferensikan alias SELECT di WHERE, dan bagaimana pewawancara menguji cakupan alias. Kamu berlatih SQL Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Interview Prep?

Tidak diperlukan pengalaman sebelumnya. SQL Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Memproyeksikan Kolom dan Jebakan Alias” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Interview Prep ini?

Ya. Setiap pelajaran SQL Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Memproyeksikan Kolom dan Jebakan Alias
  2. Kolom Terhitung dan Prioritas Ekspresi
  3. DISTINCT vs GROUP BY untuk Keunikan
  4. Ekspresi CASE dalam SELECT
← Kembali ke SQL Interview Prep