Anda dapat mengatur alias tabel dalam SQL dengan mengetikkan pengenal tepat setelah nama tabel.
SELECT * FROM table t1;
Anda bahkan dapat menggunakan kata kunci AS
untuk menunjukkan alias.
SELECT * FROM table AS t1;
Apa bedanya jika ada?
Saya melihat orang DBA lama cenderung menulis pernyataan tanpa AS
, tetapi sebagian besar tutorial baru menggunakannya.
Pembaruan: Saya tahu apa tujuan dari alias tabel dan kolom. Saya ingin tahu, apa alasan memiliki kata kunci terpisah untuk menyetel alias saat berfungsi tanpa itu juga.
CREATE PROC Test @Param1 INT AS SELECT @Param1
Jawaban:
Tidak ada perbedaan antara kedua pernyataan di atas. AS hanyalah cara yang lebih eksplisit untuk menyebut alias
sumber
Semua orang yang menjawab sebelum saya benar. Anda menggunakannya sebagai nama pintasan alias untuk tabel saat Anda memiliki kueri panjang atau kueri yang memiliki gabungan. Berikut beberapa contoh.
Contoh 1
SELECT P.ProductName, P.ProductGroup, P.ProductRetailPrice FROM Products AS P
Contoh 2
SELECT P.ProductName, P.ProductRetailPrice, O.Quantity FROM Products AS P LEFT OUTER JOIN Orders AS O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456
Contoh 3 Ini adalah praktik yang baik untuk menggunakan kata kunci AS, dan sangat direkomendasikan, tetapi dimungkinkan untuk melakukan kueri yang sama tanpa satu (dan saya sering melakukannya).
SELECT P.ProductName, P.ProductRetailPrice, O.Quantity FROM Products P LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456
Seperti yang Anda ketahui, saya meninggalkan kata kunci AS di contoh terakhir. Dan itu bisa digunakan sebagai alias.
Contoh 4
SELECT P.ProductName AS "Product", P.ProductRetailPrice AS "Retail Price", O.Quantity AS "Quantity Ordered" FROM Products P LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456
Output dari Contoh 4
sumber
Jika Anda tidak yakin sintaks mana yang harus dipilih, terutama jika tampaknya tidak banyak yang memisahkan pilihan, bacalah buku tentang heuristik. Sejauh yang saya tahu, satu-satunya buku heuristik untuk SQL adalah 'Joe Celko's SQL Programming Style':
Dengan cara ini, jika tim Anda tidak menyukai konvensi tersebut, Anda dapat menyalahkan Celko - saya tahu saya menyukainya;)
UPDATE 1: IIRC untuk waktu yang lama, Oracle tidak mendukung
AS
kata kunci (nama korelasi sebelumnya), yang mungkin menjelaskan mengapa beberapa timer lama tidak menggunakannya secara biasa.UPDATE 2: istilah 'nama korelasi', meskipun digunakan oleh Standar SQL, tidak tepat. Konsep yang mendasarinya adalah bahwa ' variabel jarak '.
PEMBARUAN 3: Saya baru saja membaca ulang apa yang ditulis Celko dan dia salah: tabel tidak diganti namanya! Sekarang saya berpikir:
sumber
Kata
AS
kuncinya adalah memberi nama ALIAS untuk tabel database Anda atau ke kolom tabel. Dalam contoh Anda, kedua pernyataan itu benar tetapi ada keadaan di mana klausa AS diperlukan (meskipunAS
operator itu sendiri opsional), misalnyaSELECT salary * 2 AS "Double salary" FROM employee;
Dalam hal ini,
Employee
tabel memilikisalary
kolom dan kami hanya ingin gandakan gaji dengan nama baruDouble Salary
.Mohon maaf jika penjelasan saya kurang efektif.
Pembaruan berdasarkan komentar Anda, Anda benar, pernyataan saya sebelumnya tidak valid. Satu-satunya alasan yang dapat saya pikirkan adalah bahwa
AS
klausa tersebut telah ada lama di dunia SQL yang telah dimasukkan dalam RDMS saat ini untuk kompatibilitas ke belakang ..sumber
AS
tidak diperlukan atau dibutuhkan bahkan dalam kasus ini. CobaSELECT 1 + 1 "result"
.Penggunaannya lebih jelas jika Anda tidak menggunakan 'SELECT *' (yang merupakan kebiasaan buruk yang harus Anda hilangkan):
SELECT t1.colA, t2.colB, t3.colC FROM alongtablename AS t1, anotherlongtablename AS t2, yetanotherlongtablename AS t3 WHERE t1.colD = t2.colE...
sumber
Ini adalah cara formal untuk menentukan nama korelasi untuk entitas sehingga Anda bisa mengatasinya dengan mudah di bagian lain dari kueri.
sumber
Dalam
AS
hal ini adalah kata kunci opsional yang ditentukan dalam ANSI SQL 92 untuk mendefinisikan<<correlation name>
, biasanya dikenal sebagai alias untuk tabel.Tampaknya praktik terbaik TIDAK menggunakan
AS
kata kunci untuk alias tabel karena tidak didukung oleh sejumlah database yang umum digunakan.sumber
as
kata kunci alias tabel.Pada masa awal SQL, ini dipilih sebagai solusi untuk masalah bagaimana menangani nama kolom duplikat (lihat catatan di bawah).
Untuk meminjam pertanyaan dari jawaban lain:
SELECT P.ProductName, P.ProductRetailPrice, O.Quantity FROM Products AS P INNER JOIN Orders AS O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456
Kolom
ProductID
(dan mungkin lainnya) adalah umum untuk kedua tabel dan karena sintaks kondisi gabungan memerlukan referensi ke keduanya, 'kualifikasi titik' memberikan disambiguasi.Tentu saja, solusi yang lebih baik adalah tidak pernah mengizinkan nama kolom duplikat! Untungnya, jika Anda menggunakan
NATURAL JOIN
sintaks yang lebih baru , kebutuhan untuk variabel rentangP
danO
hilang:SELECT ProductName, ProductRetailPrice, Quantity FROM Products NATURAL JOIN Orders WHERE OrderID = 123456
Tetapi mengapa
AS
kata kunci opsional? Ingatan saya dari diskusi pribadi dengan anggota komite standar SQL (baik Joe Celko atau Hugh Darwen) adalah bahwa ingatan mereka adalah bahwa, pada saat menentukan standar, produk satu vendor (Microsoft?) Memerlukan penyertaannya dan vendor lain produk (Oracle's?) memerlukan kelalaiannya, jadi kompromi yang dipilih adalah menjadikannya opsional. Saya tidak memiliki kutipan untuk ini, Anda percaya atau tidak!Pada masa-masa awal model relasional, hasil perkalian silang (atau gabungan-theta atau gabungan-eku) dari relasi yang judulnya tidak terputus-putus tampak menghasilkan relasi dengan dua atribut dengan nama yang sama; Solusi Codd untuk masalah ini dalam kalkulus relasionalnya adalah penggunaan kualifikasi titik, yang kemudian ditiru dalam SQL (kemudian disadari bahwa apa yang disebut gabungan alami adalah primitif tanpa kerugian; yaitu, gabungan alami dapat menggantikan semua gabungan theta dan bahkan produk silang.)
Sumber: Business System 12, Catatan berupa slide presentasi yang diberikan pada TTM Implementers 'Workshop, University of Northumbria, 2-3 Juni 2011 oleh Hugh Darwen
sumber
AS
kata kunci itu opsional (jelas tidak ada kutipan!). Hugh pensiun beberapa tahun lalu. Saya pikir Celko mungkin masih aktif - apakah ingatannya menambah bobot? Bukti dan jejak kertas sama sekali tidak ada :(Jika Anda mendesain kueri menggunakan editor kueri di SQL Server 2012 misalnya, Anda akan mendapatkan ini:
SELECT e.EmployeeID, s.CompanyName, o.ShipName FROM Employees AS e INNER JOIN Orders AS o ON e.EmployeeID = o.EmployeeID INNER JOIN Shippers AS s ON o.ShipVia = s.ShipperID WHERE (s.CompanyName = 'Federal Shipping')
Namun menghapus AS tidak membuat perbedaan seperti berikut ini:
SELECT e.EmployeeID, s.CompanyName, o.ShipName FROM Employees e INNER JOIN Orders o ON e.EmployeeID = o.EmployeeID INNER JOIN Shippers s ON o.ShipVia = s.ShipperID WHERE (s.CompanyName = 'Federal Shipping')
Dalam hal ini penggunaan AS berlebihan tetapi di banyak tempat lain itu dibutuhkan.
sumber