sql >> Databáze >  >> RDS >> Database

Vysvětlení aliasu SQL

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.


  1. SQL Server Vložit, pokud neexistuje

  2. Proč dostanu PLS-00302:komponenta musí být deklarována, když existuje?

  3. Kontrolní seznam shody SOx pro PostgreSQL

  4. Vytvoření webové aplikace od nuly pomocí Python Flask a MySQL:Část 4