Чтение всех столбцов

ПОЛНЫЕ ИМЕНА СТОЛБЦОВ

В учебной базе данных имеется несколько случаев, когда две таблицы содержат столбцы с одинаковыми именами. Например, столбцы с именем sales имеются в таблицах offices и salesreps. В столбце sales таблицы offices содержится объем продаж на текущую дату года для каждого офиса; в аналогичном столбце таблицы salesreps содержится объем продаж на текущую дату года для каждого служащего. Обычно с этими двумя столбцами затруднений не возникает, поскольку в предложении from задается соответствующая таблица, как в следующих примерах:

Хотя в формулировке запроса на естественном языке подразумевается столбец sales из таблицы salesreps, созданный запрос SQL является неоднозначным. Чтобы исключить разночтения, при указании столбцов необходимо использовать их полные имена. Полное имя столбца содержит имя столбца и имя таблицы, в которой он находится. Полные имена двух столбцов sales в учебной базе данных будут такими:

OFFICES. SALES и SALESREPS. SALES

В операторе SELECT вместо простых имен столбцов всегда можно использовать полные имена. Таблица, заданная в полном имени столбца, должна, конечно, соответствовать одной из таблиц, заданных в предложении from. Вот исправленный вариант предыдущего запроса, в котором используется полное имя столбца:

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

Оператор select * используется для чтения всех столбцов таблицы, указанной в предложении from. В многотабличном запросе звездочка означает выбор всех столбцов из всех таблиц, указанных в предложении from. Например, таблица результатов следующего запроса состоит из пятнадцати столбцов (девять столбцов из таблицы salesreps и следом за ними шесть столбцов из таблицы offices):

Очевидно, что оператор select * становится гораздо менее практичным, когда в предложении from указаны две, три или более таблицы.

Многие диалекты SQL трактуют звездочку как особый вид универсального имени столбца, которое распространяется на все столбцы. В этих диалектах звездочка наряду с именем таблицы используется вместо списка полных имен столбцов. В следующем запросе имя salesreps. * означает список имен всех столбцов таблицы salesreps:

Таблица результатов запроса будет иметь одиннадцать столбцов — девять столбцов таблицы salesreps и следом за ними два столбца таблицы offices, указанных явно. Хотя такой тип "полных имен всех столбцов" поддерживается многими СУБД, он не допускается стандартом ANSI/ISO.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: