В основе концепции лежит «переменная диапазона».
Крис Дейт и Хью Дарвен считают как разговорный термин «псевдоним», так и термин «корреляционное имя» стандарта 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 правильно распознает переменные диапазона, например,
