Alias SQL je hezká malá funkce SQL, která vám umožňuje psát výstižnější kód a vytvářet názvy sloupců, když žádný sloupec neexistuje.
Existují dva typy aliasů SQL; aliasy sloupců a aliasy tabulek. V tomto článku uvádím přehled obou.
Co je alias v SQL?
V SQL je alias funkce, která nám umožňuje dočasně přiřadit jiný název sloupci nebo tabulce v našich dotazech SQL. To nám umožňuje snížit množství kódu v našich dotazech, což může být výhodné zejména u složitých dotazů.
Umožňuje nám také poskytovat názvy sloupců klientským aplikacím, kde žádný název sloupce neexistuje (například při použití počítaného pole).
Výhody aliasů SQL
Mezi hlavní výhody aliasů SQL patří:
- Umožňuje vám poskytnout čitelnější názvy záhlaví sloupců, když jsou uvedena ve výsledcích
- Umožňuje klientským aplikacím odkazovat na vypočítané pole podle názvu, pokud žádný název sloupce neexistuje
- Umožňuje vám omezit kód a učinit vaše dotazy stručnějšími
- Lze použít jako techniku znejasňování k ochraně názvů základních sloupců dotazu
Měl bych zdůraznit, že přiřazení aliasu ve skutečnosti nepřejmenuje sloupec nebo tabulku. Jednoduše poskytuje alternativní název, který lze použít k označení.
Syntaxe aliasu
Chcete-li vytvořit alias v SQL, jednoduše postupujte podle názvu sloupce nebo tabulky s vybraným aliasem. Volitelně můžete použít AS
klíčové slovo mezi názvem sloupce/tabulky a vaším aliasem.
Takto pro sloupce:
SELECT Column1 AS Alias1
...
or
SELECT Column1 Alias1
...
Nebo takto pro tabulky:
...
FROM Table1 AS Alias1
...
or
...
FROM Table1 Alias1
...
Následující příklady to lépe ilustrují.
Alias sloupce
Asi nejčastěji používaným aliasem je sloupcový alias. Alias sloupce vám umožňuje zadat dočasný název pro vaše sloupce.
Umožňuje také zadat název sloupce v místech, kde žádný název sloupce neexistuje.
Následující dva příklady ukazují stejný dotaz napsaný s aliasy sloupců a bez nich.
Bez aliasu sloupce
Zde je jednoduchý SQL dotaz, který není použijte aliasy sloupců.
SELECT
f_name,
l_name
FROM customers;
Výsledek:
+----------+----------+ | f_name | l_name | |----------+----------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +----------+----------+
V tomto případě jsem nezadal žádné aliasy sloupců, takže skutečné názvy sloupců byly ve výsledcích uvedeny jako záhlaví sloupců.
S aliasem sloupce
Zde je stejný dotaz, ale tentokrát používám aliasy sloupců.
SELECT
f_name AS FirstName,
l_name AS LastName
FROM customers;
Výsledek:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
Všimněte si, že aliasy sloupců byly ve výsledcích použity jako záhlaví sloupců.
Aliasy sloupců u vypočítaných polí
Aliasy sloupců lze také použít u vypočítaných polí, kde neexistuje žádný název sloupce. Nemyslím na počítané sloupce, kde je název sloupce, ale na pole, kde je hodnota odvozena z jiného výrazu, než je hodnota jednoduchého sloupce.
"Jak je možné, že tam není žádný název sloupce?" můžete se zeptat.
No, existuje mnoho příležitostí, kdy můžete zjistit, že v dotazu není vrácen žádný název sloupce. Už jste někdy viděli (No column name)
jako záhlaví sloupce výsledků vašeho dotazu?
Existuje mnoho situací, kdy k tomu může dojít.
Bez aliasu sloupce
Zde je příklad dotazu, který nevrací záhlaví sloupce.
SELECT
f_name + ' ' + l_name
FROM customers;
Výsledek:
+--------------------+ | (No column name) | |--------------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +--------------------+
Tento příklad zřetězí křestní jméno a příjmení každého zákazníka a prezentuje výsledek jako jeden sloupec. Jediný problém je, že DBMS neví, jak sloupec nazvat.
Toto je ideální příležitost pro alias!
S aliasem sloupce
Zde je stejný příklad, až na to, že nyní k výsledku přiřadím alias sloupce.
SELECT
f_name + ' ' + l_name AS FullName
FROM customers;
Výsledek:
+---------------+ | FullName | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
Dobrá věc na tom je, že každá klientská aplikace nyní může převzít tyto výsledky a odkazovat se na vypočítané pole svým aliasem.
Všimněte si, že výše uvedený příklad používá operátor zřetězení řetězce SQL Server (+
). V DB2, Oracle, PostgreSQL a SQLite budete muset použít ||
. A v MySQL a MariaDB použijte CONCAT()
funkce. I když to nemá nic společného s aliasy SQL, jen jsem si myslel, že to zmíním 🙂
Aliasy s mezerami
Je také možné vytvořit aliasy s mezerami.
Když to uděláte, umístěte alias do dvojitých uvozovek. V některých systémech DBMS můžete volitelně použít jiné znaky (například hranaté závorky []
na serveru SQL).
SELECT
f_name + ' ' + l_name AS "Full Name"
FROM customers;
Výsledek:
+---------------+ | Full Name | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
Mějte na paměti, že mít mezery v aliasech se obecně nepovažuje za osvědčený postup. Mezery mohou klientským aplikacím způsobovat nejrůznější problémy, a proto byste se obecně měli vyvarovat vkládání mezer do aliasů sloupců.
Vynechání AS
Klíčové slovo
Jak již bylo zmíněno, AS
klíčové slovo je nepovinné. Proto bychom mohli přepsat kterýkoli z předchozích příkladů bez AS
klíčové slovo.
Zde je jeden příklad.
SELECT
f_name FirstName,
l_name LastName
FROM customers;
Výsledek:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
I když můžete vynechat AS
Někteří odborníci na SQL jej z důvodů čitelnosti raději vždy zahrnou.
Bez ohledu na to, kterou syntaxi chcete použít, doporučuji ji zachovat konzistentní. Pokud se rozhodnete vynechat AS
klíčové slovo, pak ho všude vynechejte. Pokud se rozhodnete jej zahrnout, zahrňte jej všude.
Alias tabulky
Alias tabulky je podobný aliasu sloupce, ale jak název napovídá, alias tabulky je pro tabulky.
Alias tabulky je také známý jako název korelace .
Při provádění spojení se často používá alias tabulky. To může být užitečné zejména ve složitých dotazech, protože může pomoci udržet kód stručnější a čitelnější.
Níže jsou uvedeny dva příklady; jeden bez aliasu tabulky a jeden s aliasem tabulky.
Příklad bez aliasu tabulky
Zde je základní příklad dotazu, který provádí levé spojení mezi dvěma tabulkami.
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;
Výsledek:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Všimněte si, že název každé tabulky hláskujeme tam, kde na ni potřebujeme odkazovat.
Příklad s aliasem tabulky
Zde je stejný příklad, s výjimkou aliasů tabulek.
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;
Výsledek:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Stejně jako u aliasů sloupců, AS
klíčové slovo je u aliasů tabulek volitelné. V Oracle, AS
klíčové slovo není podporováno ani u aliasů tabulek (ačkoli je podporováno u aliasů sloupců).
Proto bychom mohli přepsat náš příklad na následující.
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;
Výsledek:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
V každém případě stejný výsledek.