Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭУМКД_БД_2.doc
Скачиваний:
28
Добавлен:
23.09.2019
Размер:
6.01 Mб
Скачать

1.3.11. Вычисляемые столбцы

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

Конечно, столбцы, участвующие в арифметическом выражении, должны содержать числовые данные. При попытке сложить, вычесть, умножить или разделить столбцы, содержащие текстовые данные, будет выдано сообщение об ошибке (а в некоторых СУБД получится нулевое значение).

В следующем запросе будет получен простой вычисляемый столбец.

Выдать для каждого офиса список городов, регионов и сумм, на которые был перевыполнен/недовыполнен план по продажам:

SELECT CITY, REGION, (SALES - TARGET) FROM OFFICES

CITY REGION (SALES-TARGET)

Denver Western -$113,958.00

New York Eastern $117,637.00

Chicago Eastern -$64,958.00

Atlanta Eastern $17,911.00

Los Angeles Western $110,915.00

При выполнении этого запроса для каждой строки таблицы OFFICES создаётся одна строка результатов. Значения первых двух столбцов результатов запроса извлекаются непосредственно из таблицы OFFICES. Третий столбец для каждой строки результатов запроса вычисляется на основании значений столбцов текущей строки таблицы OFFICES.

1.3.12. Выборка всех столбцов (инструкция select *)

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

С учётом этого в SQL разрешается использовать вместо списка возвращаемых столбцов символ звёздочки (*), который означает, что требуется извлечь все столбцы:

Показать все данные, содержащиеся в таблице OFFICES.

SELECT * FROM OFFICES

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

В стандарте ANSI/ISO сказано, что в предложении SELECT можно использовать либо символ выборки всех столбцов, либо список возвращаемых столбцов, но не оба одновременно. Однако во многих СУБД символ звёздочки считается просто одним из возвращаемых столбцов. Таким образом, запрос

SELECT *, (SALES - TARGET) FROM OFFICES

допустим в большинстве коммерческих диалектов SQL (в частности, в DB2, Oracle и SQL Server), однако не разрешён стандартом ANSI/ISO.

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

Если программа ожидает, что запрос SELECT * FROM OFFICES возвратит таблицу, содержащую шесть столбцов определённых типов, она почти наверняка перестанет работать после изменения порядка столбцов и добавления нового столбца.

Этих сложностей можно избежать, если в программах запрашивать требуемые столбцы по именам.

Например, следующий запрос возвращает те же результаты, что и запрос SELECT * FROM OFFICES. Он не восприимчив к изменениям структуры базы данных, пока в таблице OFFICES существуют столбцы с указанными именами:

SELECT OFFICE, CITY, REGION, MGR, TARGET, SALES FROM OFFICES

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]