В SQL какая буква после имени таблицы в операторе select? - PullRequest
4 голосов
/ 15 июня 2009

В

SELECT a.NAME, a.NUMBER, a.STRING, a.RDB$DB_KEY FROM ADMIN a

что означает стенд?

Спасибо.

Ответы [ 9 ]

26 голосов
/ 15 июня 2009

a - псевдоним таблицы ADMIN

Псевдоним SQL

2 голосов
/ 16 июня 2009

В основе концепции лежит «переменная диапазона».

Крис Дейт и Хью Дарвен считают как разговорный термин «псевдоним», так и термин «корреляционное имя» стандарта SQL «неуместным» и «серьезно [искажающим] истинное положение дел».

Хью Дарвен, «SQL: сравнительное исследование» :

Вы можете иметь узнал другой термин для переменной диапазона, который использовался Коддом в его ранние статьи, но не принятые стандартом SQL до 2003 года. в некоторых текстах SQL это называется псевдонимом, но это совсем не подходит, на самом деле, потому что это будет означать, что это имя таблицы и, следовательно, обозначает таблицу, а не строку. Стандарт SQL использует одинаково неуместное название корреляции термина (оно не обозначает корреляцию, что бы это ни было), но только для случая, когда имя явно указано (через AS в примере), а не для случая, когда простое имя таблицы удваивается как имя переменной диапазона. В SQL: 2003 переменная диапазона была принята как удобный единственный термин, чтобы покрыть более общий случай.

C. Дж. Дата, «SQL и реляционная теория: как писать точный код SQL» :

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

SELECT SX.SNO 
FROM   S AS SX 
WHERE  SX.STATUS > 15

SX здесь переменная диапазона, которая находится в пределах таблицы S; в других слова, его допустимые значения - строки таблицы S. Вы можете думать о выражение SELECT в целом оценивается следующим образом. Первый, переменная диапазона принимает одно из допустимых значений, скажем, строку для поставщика SNO = ‘S1’. Значение статуса в этой строке больше чем 15? Если это так, то в результате появляется номер поставщика ’S1’. Затем переменная диапазона перемещается в другую строку таблицы S, скажем, строка для поставщика SNO = ‘S2’; еще раз, если значение состояния в этой строке больше 15, то соответствующий номер поставщика появляется в результат. И так далее

SQL требует, чтобы SELECT выражений всегда было сформулированы в терминах переменных диапазона; если нет таких переменных явно указано, что предполагается существование неявных с те же имена, что и соответствующие таблицы

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


Интересно, что LINQ правильно распознает переменные диапазона, например,

enter image description here

2 голосов
/ 15 июня 2009

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

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

Select ADMIN.Name, person.name from ADMIN, person where person.id = admin.id

Чтобы сделать это короче, добавьте псевдонимы для имен таблиц.

select a.Name, p.Name from ADMIN a, person p where person.id = admin.id
1 голос
/ 15 июня 2009

В запросе используется подобное просто для того, чтобы вам не приходилось писать ADMIN.NAME, ADMIN.NUMBER и т. Д. И т. Д. Если у вас есть пятнадцать полей в вашей таблице, и у вашей таблицы есть имя типа VPCPDEEE, оно получится очень надоело набирать одно и то же имя таблицы снова и снова.

1 голос
/ 15 июня 2009

A - псевдоним таблицы.

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

Это на самом деле не требуется в образце, который вы дали,

SELECT NAME, NUMBER, STRING, RDB$DB_KEY FROM AMDIN

должно работать так же хорошо

1 голос
/ 15 июня 2009

a - это то, что называется псевдонимом таблицы. В части запроса, которая гласит:

FROM ADMIN a

Поместив «a» после имени таблицы, вы создали псевдоним, который теперь можно использовать вместо имени таблицы. Без псевдонима вам потребуется использовать полное имя таблицы, чтобы полностью указать имена столбцов, на которые вы ссылаетесь в запросе.

Без псевдонима таблицы ваш запрос будет выглядеть так:

SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN

Хотя вы выбираете столбцы только из одной таблицы, в этом примере имя таблицы (или псевдоним) вообще не требуется.

0 голосов
/ 16 июня 2009

a используется в качестве псевдонима для таблицы ADMIN.

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

Вот пара вопросов о переполнении стека по этой теме.

Когда использовать псевдоним таблицы SQL

Псевдонимы таблицы SQL - хорошо или плохо?

0 голосов
/ 15 июня 2009

a = ADMIN

Эквивалент:

SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN
0 голосов
/ 15 июня 2009

A - сокращенная запись (термин: псевдоним ) для таблицы ADMIN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...