Database
 sql >> база данни >  >> RDS >> Database

Обяснение на псевдонима на SQL

Псевдонимът на SQL е приятна малка характеристика на SQL, която ви позволява да пишете по-сбит код и да създавате имена на колони, когато не съществува име на колона.

Има два типа псевдоними на SQL; псевдоними на колони и псевдоними на таблици. В тази статия давам общ преглед и на двете.

Какво е псевдоним в SQL?

В SQL псевдонимът е функция, която ни позволява временно да присвоим различно име на колона или таблица в нашите SQL заявки. Това ни позволява да намалим количеството код в нашите заявки, което може да бъде особено полезно при сложни заявки.

Освен това ни позволява да предоставяме имена на колони на клиентски приложения, където не съществува име на колона (например, когато се използва изчислено поле).

Предимства на SQL псевдоними

Някои от основните предимства на SQL псевдоними включват:

  • Позволява ви да предоставите по-четливи имена на заглавките на колоните, когато са представени в резултатите.
  • Позволява на клиентските приложения да се позовават на изчислено поле по име, където не съществува име на колона
  • Позволява ви да намалите кода и да направите заявките си по-сбити
  • Може да се използва като техника за обфускиране за защита на имената на основните колони на заявка

Трябва да отбележа, че присвояването на псевдоним всъщност не преименува колоната или таблицата. Той просто предоставя алтернативно име, което може да се използва за препращане към него.

Синтаксис на псевдоним

За да създадете псевдоним в SQL, просто следвайте името на колоната или таблицата с избрания от вас псевдоним. По желание можете да използвате AS ключова дума между името на колоната/таблицата и вашия псевдоним.

Като това за колони:

SELECT Column1 AS Alias1
...

or

SELECT Column1 Alias1
...

Или така за таблици:

...
FROM Table1 AS Alias1
...

or

...
FROM Table1 Alias1
...

Следващите примери ще илюстрират това по-добре.

Псевдонимът на колоната

Вероятно най-често използваният псевдоним е псевдонимът на колоната. Псевдонимът на колоната ви позволява да предоставите временно име за вашите колони.

Освен това ви позволява да предоставите име на колона на места, където не съществува име на колона.

Следващите два примера показват една и съща заявка, написана със и без псевдоними на колони.

Без псевдоним на колона

Ето една проста SQL заявка, която не използвайте псевдоними на колони.

SELECT 
    f_name,
    l_name
FROM customers;

Резултат:

+----------+----------+
| f_name   | l_name   |
|----------+----------|
| Homer    | Connery  |
| Bart     | Pitt     |
| Nancy    | Simpson  |
| Boris    | Trump    |
+----------+----------+

В този случай не предоставих никакви псевдоними на колони и така действителните имена на колони бяха представени като заглавки на колони в резултатите.

С псевдоним на колона

Ето същата заявка, освен че този път използвам псевдоними на колони.

SELECT 
    f_name AS FirstName,
    l_name AS LastName
FROM customers;

Резултат:

+-------------+------------+
| FirstName   | LastName   |
|-------------+------------|
| Homer       | Connery    |
| Bart        | Pitt       |
| Nancy       | Simpson    |
| Boris       | Trump      |
+-------------+------------+

Забележете, че псевдонимите на колоните са използвани като заглавки на колони в резултатите.

Псевдоними на колони върху изчислени полета

Псевдонимите на колони могат да се използват и в изчислени полета, където не съществува име на колона. Нямам предвид изчислени колони, където има име на колона, а полета, където стойността е извлечена от израз, различен от стойността на обикновена колона.

„Как може да няма име на колона?“ може да попитате.

Е, има много случаи, в които може да откриете, че в заявка не се връща име на колона. Виждали ли сте някога (No column name) като заглавка на колона на резултатите от вашата заявка?

Има много ситуации, в които това може да се случи.

Без псевдоним на колона

Ето пример за заявка, която не връща заглавка на колона.

SELECT 
    f_name + ' ' + l_name
FROM customers;

Резултат:

+--------------------+
| (No column name)   |
|--------------------|
| Homer Connery      |
| Bart Pitt          |
| Nancy Simpson      |
| Boris Trump        |
+--------------------+

Този пример обединява собственото и фамилното име на всеки клиент и представя резултата като една колона. Единственият проблем е, че СУБД не знае как да извика колоната.

Това е идеална възможност за псевдоним!

С псевдоним на колона

Ето същия пример, с изключение на това, че сега присвоявам псевдоним на колона на резултата.

SELECT 
    f_name + ' ' + l_name AS FullName
FROM customers;

Резултат:

+---------------+
| FullName      |
|---------------|
| Homer Connery |
| Bart Pitt     |
| Nancy Simpson |
| Boris Trump   |
+---------------+

Хубавото на това е, че всяко клиентско приложение вече може да вземе тези резултати и да се позовава на изчисленото поле чрез неговия псевдоним.

Обърнете внимание, че горният пример използва оператора за конкатенация на низове на SQL Server (+ ). В DB2, Oracle, PostgreSQL и SQLite ще трябва да използвате || . А в MySQL и MariaDB използвайте CONCAT() функция. Въпреки че това няма нищо общо с псевдонимите на SQL, просто реших да го спомена 🙂

Псевдоними с интервали

Възможно е също така да създавате псевдоними с интервали.

Когато направите това, оградете псевдонима с двойни кавички. В някои СУБД можете по избор да използвате други знаци (като квадратни скоби [] в SQL Server).

SELECT 
    f_name + ' ' + l_name AS "Full Name"
FROM customers;

Резултат:

+---------------+
| Full Name     |
|---------------|
| Homer Connery |
| Bart Pitt     |
| Nancy Simpson |
| Boris Trump   |
+---------------+

Имайте предвид, че обикновено не се счита за добра практика да има интервали в псевдоними. Интервалите могат да причинят всякакви проблеми за клиентските приложения и поради тази причина обикновено трябва да избягвате включването на интервали в псевдонимите на колоните.

Пропускане на AS Ключова дума

Както бе споменато, AS ключовата дума е по избор. Следователно бихме могли да пренапишем някой от предишните примери без AS ключова дума.

Ето един пример.

SELECT 
    f_name FirstName,
    l_name LastName
FROM customers;

Резултат:

+-------------+------------+
| FirstName   | LastName   |
|-------------+------------|
| Homer       | Connery    |
| Bart        | Pitt       |
| Nancy       | Simpson    |
| Boris       | Trump      |
+-------------+------------+

Въпреки че можете да пропуснете AS ключова дума, някои специалисти по SQL предпочитат винаги да я включват, от съображения за четливост.

Който и синтаксис да предпочитате да използвате, бих препоръчал да го поддържате последователен. Ако изберете да пропуснете AS ключова дума, след което я пропуснете навсякъде. Ако решите да го включите, включете го навсякъде.

Псевдонимът на таблицата

Псевдонимът на таблицата е подобен на псевдонима на колоната, но както подсказва името, псевдонимът на таблицата е за таблици.

Псевдонимът на таблицата е известен също като име на корелация .

Псевдонимът на таблицата често се използва при извършване на свързвания. Той може да бъде особено полезен при сложни заявки, защото може да помогне за поддържане на кода по-сбит и по-четлив.

По-долу са дадени два примера; един без псевдоним на таблица и един с псевдоним на таблица.

Пример без псевдоним на таблица

Ето основен пример за заявка, която извършва ляво свързване между две таблици.

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;

Резултат:

+-----------+---------+
| PetType   | Count   |
|-----------+---------|
| Dog       | 4       |
| Cat       | 3       |
| Bird      | 1       |
+-----------+---------+

Обърнете внимание, че изписваме името на всяка таблица, където трябва да се позоваваме на нея.

Пример с псевдоним на таблица

Ето същия пример, освен с псевдоними на таблици.

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;

Резултат:

+-----------+---------+
| PetType   | Count   |
|-----------+---------|
| Dog       | 4       |
| Cat       | 3       |
| Bird      | 1       |
+-----------+---------+

Както при псевдонимите на колони, AS ключовата дума е по избор с псевдоними на таблица. В Oracle, AS ключовата дума дори не се поддържа с псевдоними на таблици (въпреки че се поддържа с псевдоними на колони).

Следователно бихме могли да пренапишем нашия пример на следното.

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;

Резултат:

+-----------+---------+
| PetType   | Count   |
|-----------+---------|
| Dog       | 4       |
| Cat       | 3       |
| Bird      | 1       |
+-----------+---------+

Така или иначе резултатът е същият.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. FORMAT() е хубаво и всичко, но...

  2. Как да сумирате стойности на колона в SQL?

  3. Цели на редове, част 3:Anti Joins

  4. Създаване на планове за поддръжка на база данни

  5. Митове за производителността:Огромни колони с низове