Зачем вам использовать «AS» при псевдониме таблицы SQL? - PullRequest
15 голосов
/ 16 марта 2010

Я только что натолкнулся на оператор SQL, который использует AS для псевдонимов таблиц, например:

SELECT all, my, stuff
FROM someTableName AS a
INNER JOIN someOtherTableName AS b
    ON a.id = b.id

Я привык видеть:

SELECT all, my, stuff
FROM someTableName a
INNER JOIN someOtherTableName b
    ON a.id = b.id

Я предполагаю, что нет никакой разницы, и это просто синтаксический сахар, но какой из них более распространен / распространен? Есть ли причина отдавать предпочтение одному другому?

Отредактировано для уточнения:

Я ценю все ответы и все высказанные замечания, но вопрос был , а не , почему или почему бы не использовать псевдонимы таблиц. Вопрос был только в том, чтобы использовать ключевое слово «AS» для псевдонимов таблиц или не включать его.

Ответы [ 8 ]

22 голосов
/ 16 марта 2010

Это синтаксический сахар, и его ввод занимает немного больше времени, но некоторые люди находят его более читабельным и понятным. Я использую его потому, что при чтении большого запроса проще выбрать псевдонимы, ища AS.

Другая причина, иногда полное имя таблицы является длинным и громоздким для ввода. Привязка к чему-то более короткому может иногда облегчать ситуацию, когда у вас нет таких необычных функций, как автозаполнение, или когда вы просто ленитесь. ;)

... И, как некоторые другие указывали до меня, это может быть полезно при самостоятельном присоединении.

7 голосов
/ 16 марта 2010

Обычно это предпочтительнее. Подумайте, что произойдет, если вы используете старые «запятые» для соединений и пропустите запятую.

Вместо:

select *
from Orders, Customers;

Вы получите:

* +1007 *

И хотя это не исправлено введением «как», вы можете легче определить, предназначено ли оно (поскольку я, возможно, на самом деле хотел присвоить Заказы псевдонимам в зависимости от того, что еще я делал с ним во время запроса) .

3 голосов
/ 16 марта 2010

Прежде всего, псевдоним с «а» на самом деле часто считается плохим (мы официально запрещаем его в нашем стандарте кодирования). Причина в том, что в длинном сложном многостабильном запросе люди теряют информацию о том, какой псевдоним обозначает какую таблицу.

Экономия 2 секунд при наборе текста - особенно в эту эпоху интеллигентских IDE - является своего рода идиотом, если сравнивать его с удобочитаемостью / удобством обслуживания.

Основным законным использованием псевдонимов является самостоятельное объединение

3 голосов
/ 16 марта 2010

Насколько я знаю, не все базы данных поддерживают оператор AS. (Oracle?) Но почему-то это выглядит более читабельно.

Edit: Oracle здесь не поддерживает ключевое слово «AS»;

ORA-00933: SQL command not properly ended
1 голос
/ 16 марта 2010

Псевдонимы полей предназначены для удобства чтения вывода. Псевдонимы таблиц предназначены для удобства чтения структуры запроса. Особенно, когда вы имеете дело с длинными именами таблиц и, возможно, даже между базами данных.

Если в вашем запросе есть повторяющиеся ссылки на таблицы, вы всегда должны использовать псевдонимы таблиц, чтобы отличать одну таблицу от другой. Например, соединение типа «родитель-потомок» может выглядеть примерно так:

SELECT parent.Name AS ParentName,
child.Name AS ChildName
FROM MyTable AS parent
INNER JOIN MyTable as child
ON parent.ID = child.ParentID
0 голосов
/ 23 мая 2014

Поскольку явно указывается AS, это зависит от синтаксиса , поддерживаемого конкретным механизмом, и личных предпочтений (или даже policy ).

В SQL Server (это все, с чем я имею дело), ​​AS является необязательным в случае после имени отношения в FROM или JOIN. В таких случаях я пропускаю ключевое слово из-за моего предпочтения и обнаруживаю, что оно не "снижает читаемость" при использовании с последовательной строчно-ориентированной формой соединения.

Однако при использовании производных запросов для SQL Server требуется ключевое слово AS, поэтому я старательно включаю его в таких случаях.

Еще раз, в выходных предложениях из-за предпочтения я включаю AS. Я полагаю, что мой выбор ключевого слова здесь обусловлен тем, что, в отличие от моего форматирования соединения, часто бывает так, что несколько идентификаторов появляются в одной строке.

Итак, для меня в SQL Server:

SELECT a.all AS my, a.stuff  -- AS    (preference)
FROM someTableName a         -- no AS (preference)
INNER JOIN (
    SELECT ..
    ) AS b                   -- AS (required)
  ON a.id = b.id
0 голосов
/ 16 марта 2010

Если у вас огромный оператор SQL с различными объединениями, псевдонимы упрощают чтение / понимание, откуда поступают столбцы

Одно из наших приложений не может обрабатывать дефисы в именах столбцов (не спрашивайте меня, почему), поэтому псевдонимы являются идеальным методом для преобразования COLUMN-NAME в COLUMN_NAME

0 голосов
/ 16 марта 2010

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

...