2017-02-19 2 views
3
  1. Выберите зарплату * 12 как «Ежегодную зарплату» от Employee;
  2. Выберите зарплату * 12 «Ежегодная зарплата» от сотрудника;

Оба запроса дадут тот же результат, будет ли «AS» иметь значение? если да, то что это? если нет, то какая точка использует его?В чем смысл использования ключевого слова «AS» в SQL, если сглаживание может быть выполнено без него?

+0

Согласно ANSI/ISO SQL ключевое слово 'AS' является необязательным. Но некоторые dbms-продукты хотят этого, в то время как другие не хотят этого ... – jarlh

+0

Существует также синтаксис 'alias = columnValue'; то есть «выбрать x = 1, 2 как y, 3 z', используемый в некоторых системах СУБД. – JohnLBevan

ответ

10

Я думаю, что причина проста. Рассмотрим код, такие как следующие:

select a, b, c, d 
. . . 

Это очень легко иногда пропустить запятую:

select a b, c, d 

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

+0

Отличная иллюстрация проблемы от пропусков 'как'. Очень приятно! – SqlZim

+0

Это отличный момент, и я должен был подумать об этом, когда писал свой ответ. +1. –

10
  1. Читаемость.
    Представьте, что ваш запрос имеет 20, 50 или даже 100 столбцов. использование As поможет любому, кто прочитает запрос, узнать, что такое столбец и что такое псевдоним.
  2. Совместимость.
    Если вы планируете когда-либо переходить на СУРБД, то RDBMS может не поддерживать короткое наложение.

Кроме того, стоит отметить, что некоторые АБД не нравится использование as ключевых слов - Вот Aaron Bertrand's article about it. Лично я не согласен с этим сообщением (хотя другие сообщения в серии вредных привычек не менее, чем у Briliant IMHO)

+1

Я с AB на этом – Strawberry

+1

Я с ZoharPeled и AaronBertrand не одобряю «SELECT выражение alias» - слишком уязвим для ошибок, таких как пропуски запятых. Что касается выражения 'SELECT выражение AS alias' vs' SELECT alias = expression', хотя я предпочитаю последнее, я думаю об этом в качестве акцента: если вы хотите подчеркнуть выражение, позволяя ему прийти первым, используйте 'AS', если вы хотите подчеркнуть новое имя поля, используйте '='. // В других языках я также могу сказать 'dest: = source' или' source =: dest' или 'поле записи' против' record.field' (или менее распространенное поле 'record'. –

+1

+ 1 для воспитания Аарона Бертранда, хотя я не согласен с предпочтением '=' over 'as'. К сожалению,' = 'означает разные вещи в разных базах данных. Это не просто вопрос« стиля », а фактических семантических различий. –

1

Гордон показал отличную проблему.
Значение ключевого слова as легко понять на нескольких таблицах select запрос. Например, если вы используете запрос, основанный на нескольких условиях одной и той же таблицы. В этом случае as позволяет сделать псевдоним таблицы и всего подзапроса с легко читаемым и отказоустойчивым выходом alias.Field.