As sql: Оператор SQL AS: синтаксис, примеры

Какова цель ключевого слова SQL «AS»?

Какова цель ключевого слова SQL «AS»?

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

SELECT * FROM table t1;

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

SELECT * FROM table AS t1;

Какая разница между ними, если таковые имеются?

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

Обновление: я знаю, каково назначение псевдонимов таблиц и столбцов. Мне любопытно, в чем причина наличия отдельного ключевого слова для установки псевдонимов, хотя оно работает и без него.

sql 

— viam0Zah
источник



Ответы:


Там нет никакой разницы между обоими утверждениями выше.

AS — это просто более явный способ упоминания псевдонима.

— Сачин Шанбхаг
источник







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

Пример 1

SELECT P.ProductName,
       P.ProductGroup,
       P.ProductRetailPrice
FROM   Products AS P

Пример 2

SELECT P.ProductName,
       P.ProductRetailPrice,
       O.Quantity
FROM   Products AS P
LEFT OUTER JOIN Orders AS O ON O.ProductID = P.ProductID
WHERE  O.OrderID = 123456

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

SELECT P.ProductName,
       P. ProductRetailPrice,
       O.Quantity
FROM   Products P
LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID
WHERE  O.OrderID = 123456

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

Пример 4

SELECT P.ProductName AS "Product",
       P.ProductRetailPrice AS "Retail Price",
       O.Quantity AS "Quantity Ordered"
FROM   Products P
LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID
WHERE  O.OrderID = 123456

Выход из примера 4

Product             Retail Price     Quantity Ordered
Blue Raspberry Gum  $10 pk/$50 Case  2 Cases
Twizzler            $5 pk/$25 Case   10 Cases

— XstreamINsanity
источник


Если вы не уверены, какой синтаксис выбрать, особенно когда кажется, что разделить выбор не так уж и много, обратитесь к книге по эвристике. Насколько я знаю, единственная книга по эвристике для SQL — это «Стиль программирования Джо Селко для SQL»:

Имя корреляции чаще называют псевдонимом, но я буду формальным. В SQL-92 они могут иметь необязательный ASоператор, и его следует использовать, чтобы прояснить, что что-то получает новое имя. [р16]

Таким образом, если ваша команда не любит съезд, вы можете обвинить Челко — я знаю, что мне нравится;)


ОБНОВЛЕНИЕ 1: IIRC в течение длительного времени, Oracle не поддерживал ASключевое слово (имя предшествующей корреляции), которое может объяснить, почему некоторые старые таймеры не используют его как обычно.


ОБНОВЛЕНИЕ 2: термин «имя корреляции», хотя и используется стандартом SQL, неуместен. Основополагающим понятием является понятие « переменной диапазона ».


ОБНОВЛЕНИЕ 3: Я просто перечитал то, что написал Celko, и он не прав: таблица не переименовывается! Теперь я думаю:

Имя корреляции чаще называют псевдонимом, но я буду формальным. В стандартном SQL они могут иметь необязательное ASключевое слово, но его не следует использовать, поскольку это может создать впечатление, что что-то переименовывается, когда это не так. Фактически, это должно быть опущено для обеспечения того, что это переменная диапазона.

— onedaywhen
источник


ASКлючевое слово, чтобы дать

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

SELECT salary * 2 AS "Double salary" FROM employee;

В этом случае в Employeeтаблице есть salaryстолбец, и мы просто хотим получить двойную зарплату с новым именем Double Salary.

Извините, если мое объяснение неэффективно.


Обновление на основе вашего комментария, вы правы, мое предыдущее утверждение было недействительным. Единственная причина, по которой я могу придумать, состоит в том, что это ASпредложение давно существует в мире SQL, которое было включено в современные RDMS для обратной совместимости.

— Бухаке синди

источник



Использование становится более очевидным, если вы не используете «SELECT *» (что является плохой привычкой, из которой следует отказаться):

SELECT t1.colA, t2.colB, t3.colC FROM alongtablename AS t1, anotherlongtablename AS t2, yetanotherlongtablename AS t3 WHERE t1.colD = t2.colE...

— Николас Найт
источник



Это формальный способ задания имени корреляции для сущности, чтобы вы могли легко обратиться к нему в другой части запроса.

— Прит Сангха

источник


ASВ этом случае является необязательным ключевым словом определено в ANSI SQL 92 , чтобы определить <<correlation name>, широко известный как псевдоним для таблицы.

<table reference> ::=
            <table name> [ [ AS ] <correlation name>
                [ <left paren> <derived column list> <right paren> ] ]
          | <derived table> [ AS ] <correlation name>
                [ <left paren> <derived column list> <right paren> ]
          | <joined table>
     <derived table> ::= <table subquery>
     <derived column list> ::= <column name list>
     <column name list> ::=
          <column name> [ { <comma> <column name> }.
.. ] Syntax Rules 1) A <correlation name> immediately contained in a <table refer- ence> TR is exposed by TR. A <table name> immediately contained in a <table reference> TR is exposed by TR if and only if TR does not specify a <correlation name>.

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

— Герт Беллекенс
источник





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

Чтобы заимствовать запрос из другого ответа:

SELECT P.ProductName,
       P.ProductRetailPrice,
       O.Quantity
  FROM Products AS P
       INNER JOIN Orders AS O ON O. ProductID = P.ProductID
 WHERE O.OrderID = 123456

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

Конечно, лучшим решением было бы никогда не допускать дублирования имен столбцов! К счастью, если вы используете более новый NATURAL JOINсинтаксис, необходимость в переменных диапазона Pи Oуходит:

SELECT ProductName, ProductRetailPrice, Quantity
  FROM Products NATURAL JOIN Orders
 WHERE OrderID = 123456

Но почему ASключевое слово необязательно? Моя личная беседа с членом комитета по стандартизации SQL (Джо Селко или Хью Дарвеном) состояла в том, что

их воспоминания заключались в том, что на момент определения стандарта продукт одного поставщика (Microsoft?) Требовал его включения, а другого — поставщика. продукт (Oracle?) требовал его упущения, поэтому выбранный компромисс состоял в том, чтобы сделать его необязательным. Я не цитирую это, вы либо верите мне, либо нет!


В первые дни реляционной модели перекрестное произведение (или тэта-соединение или равное соединение) отношений, заголовки которых не являются непересекающимися, создавало отношение с двумя атрибутами с одинаковым именем; Решением этой проблемы Кодд в своем реляционном исчислении было использование точечной квалификации, которая впоследствии была эмулирована в SQL (позже стало понятно, что так называемое естественное соединение было примитивным без потерь; то есть естественное соединение может заменить все тета-объединения и даже перекрестный продукт.)

Источник: Business System 12, примечания к слайдам презентации, представленной Хью Дарвеном на семинаре для разработчиков TTM, Университет Нортумбрии, 2-3 июня 2011 года.

— onedaywhen
источник





Например, если вы разрабатываете запрос с использованием редактора запросов в SQL Server 2012, вы получите следующее:

  SELECT        e. EmployeeID, s.CompanyName, o.ShipName
FROM            Employees AS e INNER JOIN
                         Orders AS o ON e.EmployeeID = o.EmployeeID INNER JOIN
                         Shippers AS s ON o.ShipVia = s.ShipperID
WHERE        (s.CompanyName = 'Federal Shipping')

Однако удаление AS не имеет никакого значения, как в следующем:

 SELECT        e.EmployeeID, s.CompanyName, o.ShipName
FROM            Employees e INNER JOIN
                         Orders o ON e.EmployeeID = o.EmployeeID INNER JOIN
                         Shippers s ON o.ShipVia = s.ShipperID
WHERE        (s.CompanyName = 'Federal Shipping')

В этом случае использование AS является излишним, но во многих других местах это необходимо.

— user2063329
источник

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.

Licensed under cc by-sa 3.0 with attribution required.

Что значит as в sql

Русские Блоги

1.as является ключевым словом псевдонима, другими словами, это ключевое слово, чтобы дать отдельное имя полю sql, но as не меняет имя поля sql, но иногда оно используется для временного перезаписи используемого поля. Переходный эффект именования часто используется, когда имя поля в нескольких таблицах не совпадает. Сначала давайте приведем простой пример, а затем поговорим об этом подробнее.

Позвольте мне сначала показать все данные в моей таблице.

Позвольте мне показать вам, что возраст в моей таблице базы данных превышает 20 лет, это утверждение очень просто.

select * from student where stuage >20;

Мы видим, что мы использовали select для отображения желаемых результатов.

Но есть проблема, если мы разработчики, может быть, мы можем понять это.

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

Stuid как число,

стусекс как секс,

Stuage как возраст,

stuemail как электронная почта

from student where stuage >20;

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

Stuid как число,

стусекс как секс,

случай, когда stuage> = «23», тогда «старость», иначе «нормальный» конец как возраст,

stuemail как электронная почта

Stuname как [имя],

стусекс как секс,

случай, когда stuage> = ’23’, тогда «old age» иначе «normal» заканчиваются на «age»,

stuemail как электронная почта

Все обращают внимание на это письмо, хотя мы не отличаемся от предыдущего.

Однако псевдоним позади нашего as имеет несколько скобок, одинарные кавычки, двойные кавычки и никаких кавычек.

В чем разница между ними?

Это вопрос интервью для базы данных.

Если мы поставим пробел в середине адреса электронной почты.

Тогда наше заявление sql неверно.

Тем не менее, ‘изменить’ номер ‘[фамилия фамилия] «год» возраст может добавить пробелы.

Обратите внимание на часть, обведенную на рисунке ниже.

Одинарные цитатыОт именистрока.

иКвадратные скобкиДляИзбегайте конфликтов с системными ключевыми словами.

[stuid] как «Редактировать номер»,

[stuname] как [фамилия фамилия],

случай, когда [stuage]> = ’23’ тогда ‘old age’ else ‘normal’ заканчивается как «year» age «,

[stuemail] как [адрес электронной почты]

Например, писать так .

иДвойные кавычкиAnsi-sql — Американский национальный институт стандартов.

на самом делеС квадратными скобками.

Только один стандарт, и один был добавлен Microsoft позже.

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

Однако из-за того, что таблиц так много, наименование поля Id каждой таблицы одинаково, но поле «Имя» отличается, и каждая таблица имеет свое специальное «Имя», как Чтобы сделать то, как написать заявление SQL, мы будем использовать наше ключевое слово

Через as, временно переименовав fldName (имя поля) в Name, вы можете выполнять соответствующие операции с данными для всех таблиц.

AS. Создание алиасов для таблиц и колонок в MySQL

Алиасы — временные имена, которые можно задать таблицам и колонкам, на момент выполнения запроса.

Алиасы позволяют задавать более читабельные и простые имена.

Чаще всего алиасы применяются когда:

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

Создание алиасов для таблиц

Синтаксис создания алиаса для таблицы

Для примера возьмем БД книжного магазина Bookstore и сделаем вывод статуса и даты заказов из таблиц customers и orders для клиента с именем Jane Doherty.

mysql> SELECT customers.first_name, customers.last_name, orders.status, orders.order_date
-> FROM customers, orders
-> WHERE customers.first_name= ‘Jane’
-> AND customers.last_name= ‘Doherty’
-> AND customers.id=orders.customer_id;
+————+————+———————————+———————+
| first_name | last_name | status | order_date |
+————+————+———————————+———————+
| Jane | Doherty | Завершен | 2019-01-11 20:59:40 |
| Jane | Doherty | Готов к отправке | 2018-12-24 04:28:54 |
+————+————+———————————+———————+
2 rows in set (0.00 sec)

Теперь с помощью алиасов упростим запрос и преобразуем его к следующему виду.

mysql> SELECT c.first_name, c.last_name, o.status, o.order_date
-> FROM customers AS c, orders AS o
-> WHERE c.first_name= ‘Jane’
-> AND c.last_name= ‘Doherty’
-> AND c.id=o.customer_id;
+————+————+———————————+———————+
| first_name | last_name | status | order_date |
+————+————+———————————+———————+
| Jane | Doherty | Завершен | 2019-01-11 20:59:40 |
| Jane | Doherty | Готов к отправке | 2018-12-24 04:28:54 |
+————+————+———————————+———————+
2 rows in set (0. 00 sec)

Применение алиасов при работе только с одной таблицей, будет бессмысленно.

Создание алиасов для колонок

Синтаксис создания алиаса для колонок

Выведем несколько записей из таблицы books.

mysql> SELECT id, title, author, price
-> FROM books
-> LIMIT 5;
+—-+—————————+——————-+———+
| id | title | author | price |
+—-+—————————+——————-+———+
| 1 | Дубровский | Александр Пушкин | 230.00 |
| 2 | Нос | Николай Гоголь | 255.20 |
| 3 | Мастер и Маргарита | Михаил Булгаков | 263.00 |
| 4 | Мёртвые души | Николай Гоголь | 173.00 |
| 5 | Преступление и наказание | Фёдор Достоевский | 245.00 |
+—-+—————————+——————-+———+
5 rows in set (0.00 sec)

Для простоты чтения создадим алиасы для всех колонок.

mysql> SELECT id AS ‘Код’ , title AS ‘Название книги’ , author AS ‘Автор’ , price AS ‘Цена’
-> FROM books
-> LIMIT 5;
+———+—————————+———————+———-+
| Код | Название книги | Автор | Цена |
+———+—————————+———————+———-+
| 1 | Дубровский | Александр Пушкин | 230. 00 |
| 2 | Нос | Николай Гоголь | 255.20 |
| 3 | Мастер и Маргарита | Михаил Булгаков | 263.00 |
| 4 | Мёртвые души | Николай Гоголь | 173.00 |
| 5 | Преступление и наказание | Фёдор Достоевский | 245.00 |
+———+—————————+———————+———-+
5 rows in set (0.01 sec)

Алиасы также удобно применять для обозначения результатов функций.

mysql> SELECT id AS ‘Код’, CONCAT (first_name, ‘ ‘ , last_name) AS ‘Клиент’
-> FROM customers
-> LIMIT 4;
+———+—————————+
| Код | Клиент |
+———+—————————+
| 1 | Олег Пальшин |
| 2 | Jane Doherty |
| 3 | Евгений Серов |
| 4 | София Молина |
+———+—————————+
4 rows in set (0.00 sec)

SQL Ключевое слово AS

Команда AS команда используется для переименования столбца или таблицы с псевдонимами.

Псевдоним существует только на время выполнения запроса.

Псевдонимы для столбцов

Следующий оператор SQL создает два псевдонима, один для столбца CustomerID и CustomerName:

Пример

Следующая инструкция SQL создает два псевдонима. Обратите внимание, что он требует двойных кавычек или квадратных скобок, если имя псевдонима содержит пробелы:

Пример

Следующий оператор SQL создает псевдоним «Адрес», которые объединяют четыре столбца (адрес, почтовый индекс, города и страны):

Пример

Примечание: Чтобы получить инструкцию SQL, чтобы работать в MySQL использовать следующие:

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

Следующая инструкция SQL выбирает все заказы от клиента с CustomerID=4 (вокруг рожка). Мы используем таблицы «клиенты» и «заказы» и даем им псевдонимы таблиц «c» и «o» соответственно (здесь мы используем псевдонимы, чтобы сделать SQL короче):

Пример
Упражнения
Тесты
КАК СДЕЛАТЬ
ПОДЕЛИТЬСЯ
СЕРТИФИКАТЫ

Сообщить об ошибке

Если вы хотите сообщить об ошибке или сделать предложение, не стесняйтесь, присылайте нам электронное письмо:

Ваше предложение:

Спасибо, за вашу помощь!

Ваше сообщение было отправлено в SchoolsW3.

Топ Учебники
Топ Справочники
Топ Примеры
Веб Сертификаты

SchoolsW3 оптимизирован для обучения, тестирования и тренировки. Примеры упрощают и улучшают чтение и базовое понимание. Учебники, справочники, примеры постоянно пересматриваются, для того, чтобы избежать ошибки, невозможно гарантировать правильность всего содержимого. Используя данный сайт, вы соглашаетесь прочитать и принять условия использования, cookie и Политика конфиденциальности. Авторское право 1999 — 2021 Все права защищены.
Работает на W3.CSS.

SQL ВЫБЕРИТЕ КАК — javatpoint

следующий → ← предыдущая

  • SQL « AS» используется для временного присвоения нового имени столбцу таблицы или даже таблице.
  • Это упрощает представление результатов запроса и позволяет разработчику более точно маркировать результаты без постоянного переименования столбцов таблицы или даже самой таблицы.
  • Давайте посмотрим на синтаксис выбора как:

SELECT Column_Name1 AS New_Column_Name, Column_Name2 As New_Column_Name FROM Table_Name;

Здесь Column_Name — это имя столбца в исходной таблице, а New_Column_Name — это имя, назначенное конкретному столбцу только для этого конкретного запроса. Это означает, что New_Column_Name — это временное имя, которое будет присвоено запросу.

Присвоение временного имени столбцу таблицы:

Возьмем таблицу с именем заказы, и она содержит следующие данные:

День_заказа Клиент Продукт Количество
09.11.2001 Аджит Мобильный 2
13-12-2001 Маянк Ноутбук 20
26-12-2004 Баласвами Водомет 35

Пример:

Предположим, вы хотите переименовать столбец «day_of_order» и столбец «клиент» как «Дата» и «Клиент» соответственно.

Запрос:

ВЫБЕРИТЕ day_of_order КАК «Дата», Клиент как «Клиент», Продукт, Количество ИЗ заказов;

Результат будет показан в виде этой таблицы:

День_заказа Клиент Продукт Количество
09. 11.2001 Аджит Мобильный 2
13-12-2001 Маянк Ноутбук 20
26-12-2004 Баласвами Водомет 35

Из приведенных выше результатов видно, что временно «Day_of_order» переименовывается в «date», а «customer» переименовывается в «client».

Примечание. SQL AS — это то же самое, что и SQL ALIAS.

Возьмем другой пример. Предположим, у нас есть таблица студентов со следующими данными.

Student_RollNo имя_учащегося Student_Gender Student_MobileNumber Student_HomeTown Student_Age Студент_Процент
1 Рохит Мор Мужской 9890786123 Лакхнау 23 75
2 Кунал Шах Мужской 77884 Чандигарх 20 92
3 Картик Гоенка Мужской 9908743576 Ахемдабад 22 89
4 Анупама Шах Женщина 8890907656 Ченнаи 24 92
5 Снехал Джайн Женщина 8657983476 Сурат 21 94

Пример 1:

Напишите запрос, чтобы получить имя учащегося и среднее процентное значение учащегося во временных столбцах с именами «Студент» и «Студенческий_процент» соответственно.

Запрос:

SELECT Student_Name AS Student, AVG (Student_Percentage) AS Average_Percentage ОТ студентов;

Здесь для расчета среднего мы использовали функцию AVG() . Далее рассчитанное среднее значение процента будет храниться под временным именем «Average_Percentage».

Результат будет показан в виде этой таблицы:

Студент Среднее_процентное значение
Рохит Море 88.4000

Пример 2:

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

Запрос:

mysql> ВЫБЕРИТЕ Student_RollNo КАК «Номер списка», Student_PhoneNumber КАК «Номер мобильного телефона» ОТ студентов;

Результат будет показан в виде этой таблицы:

Рулон № Номер мобильного телефона
1 9890786123
2 77884
3 9908743576
4 8890907656
5 8657983476

Пример 3:

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

Запрос:

mysql> ВЫБЕРИТЕ Student_RollNo AS ‘Roll No’, CONCAT (Student_PhoneNumber, ‘, ‘, Student_HomeTown) AS Student_Info ОТ студентов;

Здесь функция CONCAT() объединяет два разных столбца, номер телефона студента и родной город, вместе в один столбец. Кроме того, объединенные значения обоих этих столбцов сохраняются под временно присвоенным именем «Student_Info».

Результат будет показан в виде этой таблицы:

Рулон № Номер мобильного телефона
1 9890786123, Лакхнау
2 77884, Чандигарх
3 9908743576, Ахемдабад
4 8890907656, Ченнаи
5 8657983476, Сурат

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

Вместо того, чтобы запоминать имена таблиц, мы можем создать для них псевдоним. Мы можем присвоить временное имя столбцам таблицы; аналогично мы можем создать псевдоним таблицы.

Давайте разберемся на примере.

Напишите запрос для создания псевдонима таблицы с именем «студенты».

Запрос:

mysql> ВЫБЕРИТЕ s.Student_RollNo, s.Student_Name, s.Student_Gender, s.Student_PhoneNumber, s.Student_HomeTown FROM студентов AS s WHERE s.Student_RollNo = 3;

Здесь «s» — это псевдоним, т. е. временное имя, присвоенное таблице «students».

Результат будет показан в виде этой таблицы:

Student_RollNo имя_учащегося Student_Gender Student_MobileNumber Student_HomeTown
3 Картик Гоенка Мужской 9908743576 Ахемдабад


Next TopicSQL с пунктом

← предыдущая следующий →

Каково назначение ключевого слова SQL «AS»?

спросил

Изменено 3 года, 10 месяцев назад

Просмотрено 201 тысяч раз

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

 SELECT * FROM таблицы t1;
 

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

 SELECT * FROM table AS t1;
 

Какая разница между ними?

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

Обновление: Я знаю, для чего нужны псевдонимы таблиц и столбцов. Мне любопытно, в чем причина наличия отдельного ключевого слова для установки псевдонимов, хотя оно работает и без него.

2

Нет никакой разницы между обоими операторами выше. AS — это просто более явный способ упоминания псевдонима

5

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

Пример 1

 SELECT P.ProductName,
       П.ПродуктГрупп,
       P.ProductRetailPrice
ИЗ ПРОДУКЦИИ AS P
 

Пример 2

 SELECT P.ProductName,
       P.ProductRetailPrice,
       O.Количество
ИЗ ПРОДУКЦИИ AS P
LEFT OUTER JOIN Orders AS O ON O.ProductID = P.ProductID
ГДЕ O.OrderID = 123456
 

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

 ВЫБЕРИТЕ P.ProductName,
       P.ProductRetailPrice,
       O.Количество
ИЗ ПРОДУКЦИИ Р
LEFT OUTER JOIN Заказы O ON O.ProductID = P.ProductID
ГДЕ O.OrderID = 123456
 

Как видите, в последнем примере я пропустил ключевое слово AS. И его можно использовать как псевдоним.

Пример 4

 ВЫБРАТЬ P.ProductName AS "Product",
       P.ProductRetailPrice AS "Розничная цена",
       O.Количество AS "Заказанное количество"
ИЗ ПРОДУКЦИИ Р
LEFT OUTER JOIN Заказы O ON O. ProductID = P.ProductID
ГДЕ O.OrderID = 123456
 

Результат примера 4

 Продукт Розничная цена Заказанное количество
Жевательная резинка Blue Raspberry $10 шт./$50, 2 упаковки
Коробка Twizzler по 5 долларов США/25 долларов США, 10 коробок
 

Если вы не уверены, какой синтаксис выбрать, особенно когда кажется, что выбор невелик, обратитесь к книге по эвристикам. Насколько мне известно, единственной книгой по эвристикам для SQL является «Стиль программирования SQL Джо Селко»:

Корреляционное имя чаще называется псевдонимом, но я буду формальным. В SQL-92 они могут иметь необязательный Оператор AS , и его следует использовать чтобы было понятно, что что-то получает новое имя. [стр.16]

Таким образом, если вашей команде не нравится соглашение, вы можете обвинить Celko — я знаю, что люблю 😉


ОБНОВЛЕНИЕ 1: IIRC в течение длительного времени Oracle не поддерживал AS (предыдущая корреляция имя) ключевое слово, которое может объяснить, почему некоторые старожилы не используют его обычно.


ОБНОВЛЕНИЕ 2: термин «имя корреляции», хотя и используется в стандарте SQL, неуместен. В основе лежит концепция «переменной диапазона».


ОБНОВЛЕНИЕ 3: Я только что перечитал то, что написал Celko, и он ошибся: таблица не переименовывается! Я вот думаю:

Корреляционное имя чаще называют псевдонимом, но я буду формальным. В стандартном SQL они могут иметь необязательное ключевое слово AS , но его не следует использовать, поскольку может создаться впечатление, что что-то переименовывается, когда это не так. Фактически, его следует опустить, чтобы подчеркнуть, что это переменная диапазона.

0

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

 ВЫБРАТЬ оклад * 2 КАК "Двойной оклад" ОТ сотрудника;
 

В этом случае таблица Сотрудник имеет зарплату , и мы просто хотим удвоить зарплату с новым именем Двойная зарплата .

Извините, если мое объяснение неэффективно.


Обновление на основе вашего комментария, вы правы, мое предыдущее заявление было недействительным. Единственная причина, по которой я могу думать, заключается в том, что пункт AS уже давно существует в мире SQL, и в настоящее время он включен в RDMS для обратной совместимости.

1

Использование будет более очевидным, если вы не используете ‘SELECT *’ (это плохая привычка, от которой вам следует избавиться):

 SELECT t1.colA, t2.colB, t3.colC FROMlongtablename AS t1, otherlongtablename КАК t2, еще одно длинное имя таблицы КАК t3, ГДЕ t1.colD = t2.colE...
 

1

AS в данном случае является необязательным ключевым словом, определенным в ANSI SQL 92 для определения <<корреляционного имени> , обычно известного как псевдоним для таблицы.

 <ссылка на таблицу> ::=
            <имя таблицы> [ [ AS ] <имя корреляции>
                [ <левая скобка> <список производных столбцов> <правая скобка> ] ]
          | <производная таблица> [ AS ] <имя корреляции>
                [ <левая скобка> <список производных столбцов> <правая скобка> ]
          | <присоединенная таблица>
     <производная таблица> ::= <табличный подзапрос>
     <список производных столбцов> ::= <список имен столбцов>
     <список имен столбцов> ::=
          <имя столбца> [ { <запятая> <имя столбца> }... ]
     Синтаксические правила
     1) <имя корреляции>, непосредственно содержащееся в <ссылке на таблицу>.
        ence> TR выставляется TR. <имя таблицы> немедленно содержалось
        в <ссылке на таблицу> TR выставляется TR тогда и только тогда, когда TR
        не указывает <имя корреляции>.
 

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

4

На заре SQL он был выбран как решение проблемы дублирования имен столбцов (см. примечание ниже).

Чтобы заимствовать запрос из другого ответа:

 SELECT P.ProductName,
       P.ProductRetailPrice,
       O.Количество
  ИЗ ПРОДУКЦИИ AS P
       INNER JOIN Orders AS O ON O.ProductID = P.ProductID
 ГДЕ O.OrderID = 123456
 

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

Конечно, лучшим решением было бы никогда не допускать дублирования имен столбцов! К счастью, если вы используете новый синтаксис NATURAL JOIN , необходимость в переменных диапазона P и O отпадает:

 SELECT ProductName, ProductRetailPrice, Quantity
  ИЗ ПРОДУКЦИИ NATURAL JOIN Заказы
 ГДЕ OrderID = 123456
 

Но почему ключевое слово AS является необязательным? Мое воспоминание из личной беседы с членом комитета по стандарту SQL (либо Джо Селко, либо Хью Дарвеном) заключалось в том, что их воспоминание заключалось в том, что во время определения стандарта продукт одного поставщика (Microsoft?) требовал его включения и продукт другого поставщика (Oracle?) требовал его исключения, поэтому выбранный компромисс состоял в том, чтобы сделать его необязательным. У меня нет цитаты за это, вы либо верите мне, либо нет!


На заре реляционной модели перекрестное произведение (или тета-соединение, или равное соединение) отношений, заголовки которых не пересекаются, создавало отношение с двумя атрибутами с одинаковыми именами; Решение Кодда этой проблемы в его реляционном исчислении заключалось в использовании точечной квалификации, которая позже была эмулирована в SQL (позднее выяснилось, что так называемое естественное соединение было примитивным без потерь; то есть естественное соединение может заменить все тета-соединения и четное перекрестное произведение.)

Источник: Business System 12, примечания к слайдам презентации, представленной на семинаре по внедрению TTM, Университет Нортумбрии, 2–3 июня 2011 г. Хью Дарвеном

3

Это формальный способ указать корреляционное имя для объекта, чтобы вы могли легко обратиться к нему в другой части запроса.

Если вы создадите запрос с помощью редактора запросов в SQL Server 2012, например, вы получите следующее:

ВЫБЕРИТЕ e.
Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *