37 SQL Takma ad (Alias)
SQL Takma adları tablo ve kolonlarımıza verdiğimiz kısa isimlerdir. Özellikle uzun sorguları daha anlaşılır yaparlar. Takma ad verirken AS kullanılması tavsiye edilir ama bir çok veritabanı motoru AS kullanmadan da takma ad verilmesine izin verir.
SELECT C.* FROM Customer C;
SELECT C.* FROM Customer AS C;
Buradaki C.* kullanımı takma ad verdiğimiz bir tablonun tüm kolonlarını seçmek için güzel bir kullanımdır.
37.1 Takma ad hesaplanan kolonlar
Özellikle sorgulardaki hesaplanan kolonlara isim vermek için yararlıdırlar.
SELECT C.FirstName || ' '|| C.LastName AS TamAdi FROM Customer AS C;
Benzer bir şekilde toplam fonksiyonlarına isim vermek için de yararlıdırlar.
SELECT AVG(Total) AS OrtalamaFaturaDegeri FROM Invoice i;
37.2 Takma ad GUI sorgu yazımı
Takma adın bir diğer yararı GUI araçlarında otomatik sorgu yazımında yardımcı olmalarıdır.
37.3 Takma ad birleşim (join)
İleride göreceğimiz birleşim (join) kullanımında da çok işe yararlar. Eğer 2 aynı tablo aynı kolon isimlerine sahip iseler ya bunların tablo_adi.kolon_adi diye uzun uzun yazmamız gerekir. Ama takma ad kullanımı ile bunlar daha anlaşılır olurlar. Aşağıdaki örneğe bakınız.
SELECT
Track.TrackId, Track.Name,Album.AlbumId,
Album.Title,Artist.ArtistId, Artist.NameFROM Track
JOIN Album ON Album.AlbumId = Track.AlbumId
JOIN Artist ON Artist.ArtistId = Album.ArtistId;
Bu sorgu takma adlar kullanarak hem daha kısa hem daha anlaşılır olarak yazılabilir.
SELECT
As TrackName,A.AlbumId,
T.TrackId, T.Name AS ArtistName
A.Title,Ar.ArtistId, Ar.Name FROM Track T
JOIN Album A ON A.AlbumId = T.AlbumId
JOIN Artist Ar ON Ar.ArtistId = A.ArtistId;
37.4 Takma ad aynı tablo birleşim (self-join)
Eğer aynı tabloyu kendi kendine birleştiriyorsak takma ad kullanımı bir zorunluluktur. Aşağıdaki sorguyu takma ad kullanmadan yazamayız.
SELECT E1.EmployeeId, E1.FirstName ,E1.LastName,
|| ' ' || M.LastName AS ManagerFullName
M.FirstName FROM Employee E1 INNER JOIN
ON E1.ReportsTo = M.EmployeeId; Employee M
37.5 Takma ad alt sorgu isim verme
Benzer bir şekilde karışık alt sorgulara isim vermek içinde yararlıdırlar.
SELECT * FROM
(SELECT E1.EmployeeId, E1.FirstName ,E1.LastName,
|| ' ' || M.LastName AS ManagerFullName
M.FirstName FROM Employee E1 INNER JOIN
ON E1.ReportsTo = M.EmployeeId
Employee M
) YWHERE Y.ManagerFullName LIKE '%ar%'
37.6 SQL Select Anlamsal sıralama
- [ FROM tablo kaynağı ]
- [ WHERE arama kriterleri ]
- [ GROUP BY gruplama ifadeleri ]
- [ HAVING arama kriterleri ]
- [ ORDER BY sıralama ifadeleri [ ASC | DESC ]]
- SELECT seçilen kolonlar
Anlamsal sıralama, SELECT ifadesinin veritabanı motoru tarafından nasıl işlendiğini gösterir.
37.7 Anlamsal sıralama ve takma ad kullanımı
Bir takma adı kullanabilmemiz için bu takma adın anlamsal sıralamada daha önce verilmesi gerekmektedir. Örneğin aşağıdaki sorgu çalışmaz çünkü takma SELECT sırasında veriliyor ama WHERE aşamasında kullanılmak isteniyor. Anlamsal sıralamada SELECT daha sonra geldiği için SQL motoru bu takmadı bilmiyor ve bu yüzden hata veriyor.
SELECT C.FirstName || ' '|| C.LastName AS TamAdi FROM Customer AS C
WHERE
LIKE 'A%'; C.TamAdi
Ama FROM sırasında verdiğim takma ad anlamsal sıralamada sonrasında gelenlerde örneğin WHERE kullanılabiliyor.
Anlamsal sıralamada SELECT daha sonra geldiği için SQL motoru bu takmadı bilmiyor ve bu yüzden hata veriyor. Aşağıdaki sorgu çalışıyor.
SELECT C.FirstName || ' '|| C.LastName AS TamAdi FROM Customer AS C
WHERE
LIKE 'A%'; C.FirstName