Alias SQL adalah fitur kecil yang bagus dari SQL yang memungkinkan Anda untuk menulis kode yang lebih ringkas dan membuat nama kolom ketika tidak ada nama kolom.
Ada dua tipe alias SQL; alias kolom, dan alias tabel. Dalam artikel ini, saya memberikan gambaran tentang keduanya.
Apa itu Alias dalam SQL?
Dalam SQL, alias adalah fitur yang memungkinkan kita untuk sementara menetapkan nama yang berbeda ke kolom atau tabel dalam kueri SQL kita. Ini memungkinkan kami untuk mengurangi jumlah kode dalam kueri kami, yang bisa sangat bermanfaat dalam kueri kompleks.
Ini juga memungkinkan kami untuk memberikan nama kolom ke aplikasi klien di mana tidak ada nama kolom (misalnya, saat menggunakan bidang terhitung).
Manfaat SQL Alias
Beberapa manfaat utama dari alias SQL meliputi:
- Memungkinkan Anda memberikan nama yang lebih mudah dibaca ke header kolom saat ditampilkan di hasil
- Memungkinkan aplikasi klien untuk merujuk ke bidang terhitung menurut nama yang tidak memiliki nama kolom
- Memungkinkan Anda untuk mengurangi kode dan membuat kueri Anda lebih ringkas
- Dapat digunakan sebagai teknik obfuscation untuk melindungi nama kolom yang mendasari kueri
Saya harus menunjukkan bahwa menetapkan alias tidak benar-benar mengubah nama kolom atau tabel. Ini hanya memberikan nama alternatif yang dapat digunakan untuk merujuknya.
Sintaks Alias
Untuk membuat alias dalam SQL, cukup ikuti nama kolom atau tabel dengan alias yang Anda pilih. Anda dapat secara opsional menggunakan AS
kata kunci antara nama kolom/tabel dan alias Anda.
Seperti ini untuk kolom:
SELECT Column1 AS Alias1
...
or
SELECT Column1 Alias1
...
Atau seperti ini untuk tabel:
...
FROM Table1 AS Alias1
...
or
...
FROM Table1 Alias1
...
Contoh berikut akan menggambarkan hal ini dengan lebih baik.
Kolom Alias
Mungkin alias yang paling umum digunakan adalah alias kolom. Alias kolom memungkinkan Anda memberikan nama sementara untuk kolom Anda.
Ini juga memungkinkan Anda untuk memberikan nama kolom di tempat yang tidak memiliki nama kolom.
Dua contoh berikut menunjukkan kueri yang sama yang ditulis dengan, dan tanpa alias kolom.
Tanpa Alias Kolom
Berikut adalah kueri SQL sederhana yang tidak gunakan alias kolom.
SELECT
f_name,
l_name
FROM customers;
Hasil:
+----------+----------+ | f_name | l_name | |----------+----------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +----------+----------+
Dalam hal ini, saya tidak memberikan alias kolom apa pun, sehingga nama kolom yang mendasari sebenarnya disajikan sebagai header kolom dalam hasil.
Dengan Alias Kolom
Ini query yang sama, kecuali kali ini saya menggunakan alias kolom.
SELECT
f_name AS FirstName,
l_name AS LastName
FROM customers;
Hasil:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
Perhatikan bahwa alias kolom digunakan sebagai header kolom dalam hasil.
Alias Kolom pada Bidang Terhitung
Alias kolom juga dapat digunakan pada bidang terhitung yang tidak memiliki nama kolom. Maksud saya tidak pada kolom yang dihitung, di mana ada nama kolom, tetapi pada bidang di mana nilainya diturunkan dari ekspresi selain nilai kolom sederhana.
"Bagaimana mungkin tidak ada nama kolom?" Anda mungkin bertanya.
Nah, ada banyak kesempatan di mana Anda mungkin menemukan bahwa tidak ada nama kolom yang dikembalikan dalam kueri. Pernahkah Anda melihat (No column name)
sebagai tajuk kolom hasil kueri Anda?
Ada banyak situasi di mana ini bisa terjadi.
Tanpa Alias Kolom
Berikut adalah contoh kueri yang tidak menampilkan tajuk kolom.
SELECT
f_name + ' ' + l_name
FROM customers;
Hasil:
+--------------------+ | (No column name) | |--------------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +--------------------+
Contoh ini menggabungkan nama depan dan nama belakang setiap pelanggan dan menyajikan hasilnya sebagai satu kolom. Satu-satunya masalah adalah DBMS tidak tahu apa yang harus disebut kolom.
Ini adalah kesempatan sempurna untuk sebuah alias!
Dengan Alias Kolom
Ini contoh yang sama, kecuali sekarang saya menetapkan alias kolom ke hasil.
SELECT
f_name + ' ' + l_name AS FullName
FROM customers;
Hasil:
+---------------+ | FullName | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
Hal yang baik tentang ini adalah, aplikasi klien apa pun sekarang dapat mengambil hasil ini dan merujuk ke bidang terhitung dengan aliasnya.
Perhatikan bahwa contoh di atas menggunakan operator rangkaian string SQL Server (+
). Di DB2, Oracle, PostgreSQL, dan SQLite, Anda harus menggunakan ||
. Dan di MySQL dan MariaDB, gunakan CONCAT()
fungsi. Meskipun ini tidak ada hubungannya dengan alias SQL, saya hanya berpikir saya akan menyebutkannya
Alias dengan Spasi
Dimungkinkan juga untuk membuat alias dengan spasi.
Saat Anda melakukan ini, kelilingi alias dengan tanda kutip ganda. Dalam beberapa DBMS, Anda dapat menggunakan karakter lain secara opsional (seperti tanda kurung siku []
di SQL Server).
SELECT
f_name + ' ' + l_name AS "Full Name"
FROM customers;
Hasil:
+---------------+ | Full Name | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
Ingatlah bahwa umumnya tidak dianggap praktik yang baik untuk memiliki spasi di alias. Spasi dapat menyebabkan segala macam masalah untuk aplikasi klien, dan karena alasan itu, Anda biasanya harus menghindari menyertakan spasi di alias kolom Anda.
Menghilangkan AS
Kata kunci
Seperti disebutkan, AS
kata kunci adalah opsional. Oleh karena itu, kita dapat menulis ulang salah satu contoh sebelumnya tanpa AS
kata kunci.
Ini salah satu contohnya.
SELECT
f_name FirstName,
l_name LastName
FROM customers;
Hasil:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
Meskipun Anda dapat menghilangkan AS
kata kunci, beberapa profesional SQL lebih suka untuk selalu menyertakannya, untuk alasan keterbacaan.
Sintaks mana pun yang Anda suka gunakan, saya akan merekomendasikan agar tetap konsisten. Jika Anda memilih untuk menghilangkan AS
kata kunci, lalu hilangkan di mana-mana. Jika Anda memilih untuk menyertakannya, sertakan di mana saja.
Alias Tabel
Alias tabel mirip dengan alias kolom, tetapi seperti namanya, alias tabel adalah untuk tabel.
Alias tabel juga dikenal sebagai nama korelasi .
Alias tabel sering digunakan saat melakukan join. Ini bisa sangat berguna dalam kueri yang kompleks, karena dapat membantu menjaga kode lebih ringkas dan lebih mudah dibaca.
Di bawah ini adalah dua contoh; satu tanpa alias tabel, dan satu dengan alias tabel.
Contoh Tanpa Alias Tabel
Berikut adalah contoh dasar kueri yang melakukan gabungan kiri antara dua tabel.
SELECT
PetTypes.PetType,
COUNT(Pets.PetTypeId) AS Count
FROM Pets
LEFT JOIN PetTypes
ON Pets.PetTypeId = PetTypes.PetTypeId
GROUP BY PetTypes.PetType
ORDER BY Count DESC, PetTypes.PetType;
Hasil:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Perhatikan bahwa kami mengeja nama setiap tabel di mana pun kami perlu merujuknya.
Contoh Dengan Alias Tabel
Ini contoh yang sama, kecuali dengan alias tabel.
SELECT
pt.PetType,
COUNT(p.PetTypeId) AS Count
FROM Pets AS p
LEFT JOIN PetTypes AS pt
ON p.PetTypeId = pt.PetTypeId
GROUP BY pt.PetType
ORDER BY Count DESC, pt.PetType;
Hasil:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Seperti alias kolom, AS
kata kunci adalah opsional dengan alias tabel. Di Oracle, AS
kata kunci bahkan tidak didukung dengan alias tabel (meskipun didukung dengan alias kolom).
Oleh karena itu, kita dapat menulis ulang contoh kita sebagai berikut.
SELECT
pt.PetType,
COUNT(p.PetTypeId) AS Count
FROM Pets p
LEFT JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId
GROUP BY pt.PetType
ORDER BY Count DESC, pt.PetType;
Hasil:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Bagaimanapun, hasil yang sama.