Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
69
Добавлен:
23.11.2017
Размер:
3.23 Mб
Скачать

8.2. Использование sql для выборки (чтения) данных

Язык SQL предназначен в первую очередь для выполнения запросов. Для построения SQL – запросов, задающих выборку данных, используется оператор SELECT, который является наиболее функциональным, мощным из всех операторов SQL.

ОператорSELECT читает данные из БД и возвращает их в виде таблицы результатов запроса (рис. 8.3).

Рис. 8.3. Выполнение SQL-запроса на чтение

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

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

  2. в предложении FROM указывается список таблиц, которые содержат элементы данных, считываемые запросом;

  3. WHERE показывает, что в таблицу результатов запроса следует включать только строки, удовлетворяющие условию поиска;

  4. GROUP BYпозволяет задавать итоговый запрос. Обычный запрос включает в таблицу результатов по одной строке для каждой строки из БД. Итоговый запрос вначале группирует строки БД по определённому признаку, а затем включает в таблицу результатов одну итоговую строку для каждой группы;

  5. HAVING показывает, что в таблицу результатов запроса следует включать только некоторые из групп, созданных с помощью предложения GROUP BY. Для отбора включаемых групп используется условие поиска;

  6. ORDER BY сортирует таблицу результатов запроса на основании данных, содержащихся в одном или нескольких столбцах.

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

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

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

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

Например, в результате выполнения оператора

SELECT ’ГРАЖДАНИН’, FIO, ‘ПОЛУЧАЕТ’, SUMD, ‘ПЛАТИТ’, SUMD*0.12

FROM PERSON

будет создана таблица, состоящая из таких строк (табл. 8.1):

Таблица 8.1

Денежные доходы граждан

ГРАЖДАНИН

FIO

ПОЛУЧАЕТ

SUMD

ПЛАТИТ

SUMD*0.12

ГРАЖДАНИН

ГРАЖДАНИН

ГРАЖДАНИН

ИВАНОВ

ПЕТРОВ…

ЕЛЬЦИН…

ПОЛУЧАЕТ

ПОЛУЧАЕТ

ПОЛУЧАЕТ

1000.00р.

700.00р.

NULL

ПЛАТИТ

ПЛАТИТ

ПЛАТИТ

120.00р.

84.00р.

NULL

Количество строк в таблице результатов запроса может быть любым, в частности, равным нулю. Например, выполнение оператора

SELECT FIO FROM PERSON приведёт к созданию таблицы, в которой будет один столбец (FIO) и ни одной строки.

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

SELECT AVG (SUMD) FROM PERSON (вычисляется среднее значение дохода, получаемого жителем).

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

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

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

SELECT * FROM PERSON

Таблица результатов запроса содержит все 6 столбцов таблицы PERSON, которые расположены в том же порядке, что и в исходной таблице, хранящейся в БД.

По умолчанию в таблицу результатов запроса включаются все строки, в том числе и повторяющиеся (см. ключевое слово ALL на синтаксической диаграмме рис. 8.4). Например, оператор

SELECT ADR FROM PERSON

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

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

SELECT DISTINCT ADR FROM PERSON.

Соседние файлы в папке БД лабы