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

1.3.9. Предложение select

В предложении SELECT, с которого начинаются все инструкции SELECT, необходимо указать элементы данных, которые будут возвращены в результате запроса. Эти элементы задаются в виде списка возвращаемых столбцов, разделённых запятыми.

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

  • имя столбца, идентифицирующее один из столбцов, содержащихся в таблицах, которые перечислены в предложении FROM; СУБД просто берёт значение этого столбца для каждой из строк исходной таблицы и помещает его в соответствующую строку таблицы результатов запроса;

  • константу, показывающую, что в каждой строке результатов запроса должно содержаться одно и то же значение;

  • выражение, показывающее, что СУБД должна вычислять значение, помещаемое в таблицу результатов запроса, по формуле, определённой в выражении.

1.3.10. Предложение from

Предложение FROM состоит из ключевого слова FROM, за которым следует список спецификаторов таблиц, разделённых запятыми. Каждый спецификатор таблицы идентифицирует таблицу, содержащую данные, которые извлекает запрос. Такие таблицы называются исходными таблицами запроса (и инструкции SELECT), поскольку все данные содержащиеся в таблице результатов запроса, берутся из них.

Результаты запроса на выборку

Результатом SQL-запроса на выборку всегда является таблица, содержащая данные и ничем не отличающаяся от таблиц базы данных. Если пользователь набирает инструкцию SQL в интерактивном режиме, СУБД выводит результаты запроса на экран в табличной форме. Если программа посылает запрос СУБД с помощью программного SQL, СУБД возвращает таблицу результатов запроса программе. В любом случае результаты запроса всегда имеют такой же формат, как и обычные таблицы, содержащиеся в базе данных.

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

Вывести список имен, офисов и дат приема на работу всех служащих:

SELECT NAME, REP_OFFICE, HIRE_DATE FROM SALESREPS

NAME

REP_OFFICE

HIRE_DATE

Bill Adams

13

12-FEB-88

Mary Jones

11

12-OCT-89

Sue Smith

21

10-DEC-86

Sam Clark

11

14-JUN-88

Bob Smith

12

19-MAY-87

Dan Roberts

12

20-OCT-86

Tom Snyder

NULL

13-JAN-90

Larry Fitch

21

12-OCT-89

Paul Cruz

12

01-MAR-87

Nancy Angelli

22

14-NOV-88

Рисунок 1.3.10.1 – Интерактивный SQL

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

Как зовут, а также каковы плановый и фактический объемы продаж служащего с идентификатором 107:

SELECT NAME, QUOTA, SALES FROM SALESREPS WHERE EMPL_NUM = 107

NAME QUOTA SALES

Nancy Angelli $300,000.00 $186,042.00

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

Каково среднее значение фактических объемов продаж по всем служащим компании?

SELECT AVG(SALES) FROM SALESREPS

AVG(SALES)

$289,353.20

Эти результаты запроса также считаются таблицей, которая состоит из одного столбца и одной строки.

И наконец, запрос может вернуть результаты, содержащие ноль строк, как в следующем примере.

Вывести список имён и дат приёма на работу всех служащих, фактический объём продаж которых превышает $500000.

SELECT NAME, HIRE_DATE FROM SALESREPS WHERE SALES > 500000.00

NAME HIRE DATE

Даже в таком случае результаты запроса считаются таблицей.

Обратите внимание, что поддержка отсутствующих данных в SQL распространяется и на результаты запроса. Если один из элементов данных в исходной таблице имеет значение NULL, оно попадет в результаты запроса при извлечении этого элемента. Например, в таблице SALESREPS значение NULL содержится в столбцах QUOTA и MANAGER. Следующий запрос возвращает эти значения во втором и третьем столбцах таблицы результатов запроса.

Вывести список служащих с их плановыми объёмами продаж и идентификаторами менеджеров:

SELECT NAME, QUOTA, MANAGER FROM SALESREPS

NAME QUOTA MANAGER

Bill Adams $350,000.00 104

Mary Jones $300,000.00 106

Sue Smith $350,000.00 108

Sam Clark $275,000.00 NULL

Bob Smith $200,000.00 106

Dan Roberts $300,000.00 104

Tom Snyder NULL 101

Larry Fitch $350,000.00 106

Paul Cruz $275,000.00 104

Nancy Angelli $300,000.00 108

To, что SQL-запрос всегда возвращает таблицу, очень важно. Это означает, что результаты запроса можно записать обратно в базу данных в виде таблицы. Это означает также, что результаты двух запросов, имеющие похожую структуру, можно объединить в одну таблицу. И наконец, это говорит о том, что результаты запроса сами могут стать предметом дальнейших запросов. Таким образом, табличная структура реляционной базы данных тесно связана с реляционными запросами SQL. Таблицам можно посылать запросы, а запросы возвращают таблицы.

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