Alias SQL to przyjemna mała funkcja SQL, która pozwala na pisanie bardziej zwięzłego kodu i tworzenie nazw kolumn, gdy nie istnieje żadna nazwa kolumny.
Istnieją dwa typy aliasów SQL; aliasy kolumn i aliasy tabel. W tym artykule przedstawiam omówienie obu.
Co to jest alias w SQL?
W SQL alias to funkcja, która pozwala nam tymczasowo przypisać inną nazwę do kolumny lub tabeli w naszych zapytaniach SQL. Dzięki temu możemy zmniejszyć ilość kodu w naszych zapytaniach, co może być szczególnie korzystne w przypadku złożonych zapytań.
Pozwala nam również na podanie nazw kolumn aplikacjom klienckim, w których nie istnieje żadna nazwa kolumny (na przykład podczas korzystania z pola obliczeniowego).
Zalety aliasów SQL
Niektóre z głównych zalet aliasów SQL to:
- Pozwala na nadanie bardziej czytelnych nazw nagłówkom kolumn, gdy są one prezentowane w wynikach
- Umożliwia aplikacjom klienckim odwoływanie się do pola obliczeniowego według nazwy tam, gdzie nie istnieje nazwa kolumny
- Pozwala zredukować kod i sprawić, że zapytania będą bardziej zwięzłe
- Może być używany jako technika zaciemniania w celu ochrony nazw podstawowych kolumn zapytania
Powinienem zaznaczyć, że przypisanie aliasu w rzeczywistości nie zmienia nazwy kolumny lub tabeli. Podaje po prostu alternatywną nazwę, której można użyć, aby się do niej odnieść.
Składnia aliasu
Aby utworzyć alias w SQL, po prostu podążaj za nazwą kolumny lub tabeli wybranym aliasem. Możesz opcjonalnie użyć AS
słowo kluczowe między nazwą kolumny/tabeli a aliasem.
Tak dla kolumn:
SELECT Column1 AS Alias1
...
or
SELECT Column1 Alias1
...
Lub tak dla stołów:
...
FROM Table1 AS Alias1
...
or
...
FROM Table1 Alias1
...
Poniższe przykłady lepiej to zilustrują.
Alias kolumny
Prawdopodobnie najczęściej używanym aliasem jest alias kolumny. Alias kolumny umożliwia podanie tymczasowej nazwy kolumn.
Pozwala również na podanie nazwy kolumny w miejscach, w których nie ma nazwy kolumny.
Poniższe dwa przykłady pokazują to samo zapytanie napisane z aliasami kolumn i bez nich.
Bez aliasu kolumny
Oto proste zapytanie SQL, którego nie używaj aliasów kolumn.
SELECT
f_name,
l_name
FROM customers;
Wynik:
+----------+----------+ | f_name | l_name | |----------+----------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +----------+----------+
W tym przypadku nie podałem żadnych aliasów kolumn, więc rzeczywiste nazwy kolumn były prezentowane jako nagłówki kolumn w wynikach.
Z aliasem kolumny
Oto to samo zapytanie, ale tym razem używam aliasów kolumn.
SELECT
f_name AS FirstName,
l_name AS LastName
FROM customers;
Wynik:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
Zwróć uwagę, że aliasy kolumn zostały użyte jako nagłówki kolumn w wynikach.
Aliasy kolumn w polach obliczeniowych
Aliasów kolumn można również używać w polach obliczeniowych, w których nie istnieje nazwa kolumny. Nie mam na myśli kolumn wyliczanych, w których jest nazwa kolumny, ale pól, w których wartość pochodzi z wyrażenia innego niż wartość prostej kolumny.
„Jak mogło nie być nazwy kolumny?” możesz zapytać.
Cóż, w wielu przypadkach może się okazać, że w zapytaniu nie ma zwracanej nazwy kolumny. Czy kiedykolwiek widziałeś (No column name)
jako nagłówek kolumny wyników zapytania?
Jest wiele sytuacji, w których może się to zdarzyć.
Bez aliasu kolumny
Oto przykład zapytania, które nie zwraca nagłówka kolumny.
SELECT
f_name + ' ' + l_name
FROM customers;
Wynik:
+--------------------+ | (No column name) | |--------------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +--------------------+
Ten przykład łączy imię i nazwisko każdego klienta i przedstawia wynik w jednej kolumnie. Jedynym problemem jest to, że DBMS nie wie, jak nazwać kolumnę.
To doskonała okazja na alias!
Z aliasem kolumny
Oto ten sam przykład, z tym że teraz przypisuję alias kolumny do wyniku.
SELECT
f_name + ' ' + l_name AS FullName
FROM customers;
Wynik:
+---------------+ | FullName | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
Dobrą rzeczą jest to, że każda aplikacja kliencka może teraz pobrać te wyniki i odwoływać się do obliczonego pola za pomocą swojego aliasu.
Zauważ, że powyższy przykład używa operatora konkatenacji ciągów SQL Server (+
). W DB2, Oracle, PostgreSQL i SQLite musisz użyć ||
. A w MySQL i MariaDB użyj CONCAT()
funkcjonować. Chociaż nie ma to nic wspólnego z aliasami SQL, pomyślałem, że o tym wspomnę 🙂
Aliasy ze spacjami
Możliwe jest również tworzenie aliasów ze spacjami.
Kiedy to zrobisz, otocz alias podwójnymi cudzysłowami. W niektórych DBMS można opcjonalnie użyć innych znaków (takich jak nawiasy kwadratowe []
w SQL Server).
SELECT
f_name + ' ' + l_name AS "Full Name"
FROM customers;
Wynik:
+---------------+ | Full Name | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
Pamiętaj, że umieszczanie spacji w aliasach nie jest ogólnie uważane za dobrą praktykę. Spacje mogą powodować różnego rodzaju problemy w aplikacjach klienckich, dlatego generalnie należy unikać umieszczania spacji w aliasach kolumn.
Pomijanie AS
Słowo kluczowe
Jak wspomniano, AS
słowo kluczowe jest opcjonalne. Dlatego moglibyśmy przepisać dowolny z poprzednich przykładów bez AS
słowo kluczowe.
Oto jeden przykład.
SELECT
f_name FirstName,
l_name LastName
FROM customers;
Wynik:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
Chociaż możesz pominąć AS
słowa kluczowego, niektórzy specjaliści od SQL wolą go zawsze umieszczać, ze względu na czytelność.
Niezależnie od tego, której składni wolisz używać, zalecam zachowanie spójności. Jeśli zdecydujesz się pominąć AS
słowo kluczowe, a następnie pomiń je wszędzie. Jeśli zdecydujesz się go uwzględnić, dołącz go wszędzie.
Alias tabeli
Alias tabeli jest podobny do aliasu kolumny, ale jak sama nazwa wskazuje, alias tabeli dotyczy tabel.
Alias tabeli jest również znany jako nazwa korelacji .
Alias tabeli jest często używany podczas wykonywania złączeń. Może być szczególnie przydatny w złożonych zapytaniach, ponieważ może pomóc w utrzymaniu bardziej zwięzłego i czytelnego kodu.
Poniżej znajdują się dwa przykłady; jeden bez aliasu tabeli, a drugi z aliasem tabeli.
Przykład bez aliasu tabeli
Oto podstawowy przykład zapytania, które łączy w lewo dwie tabele.
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;
Wynik:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Zwróć uwagę, że podajemy nazwę każdej tabeli tam, gdzie musimy się do niej odwoływać.
Przykład z aliasem tabeli
Oto ten sam przykład, z wyjątkiem aliasów 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;
Wynik:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Podobnie jak w przypadku aliasów kolumn, AS
słowo kluczowe jest opcjonalne w przypadku aliasów tabel. W Oracle AS
słowo kluczowe nie jest nawet obsługiwane z aliasami tabel (chociaż jest obsługiwane z aliasami kolumn).
Dlatego moglibyśmy przepisać nasz przykład na następujący.
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;
Wynik:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Tak czy inaczej, ten sam wynik.