Подтвердить что ты не робот

Почему вы используете "AS" при сглаживании таблицы SQL?

Я просто столкнулся с оператором 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" для псевдонимов таблицы или оставить его вне.

4b9b3361

Ответ 1

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

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

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

Ответ 2

Это вообще предпочтительнее. Подумайте, что произойдет, если вы используете старую "запятую" для соединений, и вы пропустите запятую.

Вместо:

select *
from Orders, Customers;

В итоге получится:

select *
from Orders Customers; --Customers is now the alias for Orders.

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

Ответ 3

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

Edit: Oracle не поддерживает ключевое слово "AS",

ORA-00933: SQL command not properly ended

Ответ 4

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

Сохранение 2 секунд при наборе текста - особенно в эту эпоху intellisenseish IDE - является своеобразным идиотом, когда он взвешен против удобочитаемости/ремонтопригодности.

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

Ответ 5

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

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

SELECT parent.Name AS ParentName,
child.Name AS ChildName
FROM MyTable AS parent
INNER JOIN MyTable as child
ON parent.ID = child.ParentID

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

В 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