#sql #tuples
#sql #Кортежи
Вопрос:
В таком утверждении, как это:
SELECT CUSTOMER_NAME, T.LOAN_NUMBER, S.AMOUNT
FROM BORROWER AS T, LOAN AS S
WHERE T.LOAN_NUMBER = S.LOAN_NUMBER
Итак, переменными кортежа здесь являются T и S?
Ответ №1:
Они полезны для экономии ввода, но есть и другие причины их использования:
- Если вы присоединяете таблицу к самой себе, вы должны присвоить ей два разных имени, иначе ссылка на таблицу будет неоднозначной.
- Может быть полезно давать имена производным таблицам, а в некоторых системах баз данных это требуется … даже если вы никогда не ссылаетесь на имя.
Что касается имени, «кортеж» исходит из идеи, что строка представляет собой кортеж значений, например (1, 'Fred', 1400)
. Однако я не знаю, почему она называется переменной, потому что впоследствии ее нельзя изменить. Я не думаю, что это особенно распространенный термин для описания этой функции. Стандарты SQL называют их «именами корреляции». Если посмотреть на основные базы данных, то все они используют вместо этого другой термин:
- В руководстве по MySQL и руководстве по PostgreSQL они называются псевдонимами, а не переменными кортежа.
- Руководство Oracle описывает их как псевдонимы таблиц или имена корреляции.
- В руководстве по SQL Server также используется термин псевдоним таблицы.
Комментарии:
1. Очень интересно, что вы можете объединить таблицу с самой собой, я думаю, теперь я вижу, где это было бы необходимо. Большое вам спасибо!
2. «Однако я не знаю, почему это называется переменной, потому что впоследствии ее нельзя изменить» — примечание на реляционном языке, которое мы могли бы ожидать
BORROWER
, иLOAN
быть «переменными отношения» или «relvars» для краткости. Идея заключается в том, что их содержимое может меняться со временем из-за изменений в базе данных. Обратите внимание, что база данных также является переменной, хотя и сложной! Принимает ли кто-либо, что SQL-эквивалент relvar является таблицей, это другой вопрос 😉