Использование SQL для выборки (чтения) данных
В предложении SELECT указывается список возвращаемых столбцов, которые должны быть включены в таблицу результатов запроса. Возвращаемые столбцы могут содержать значения, считываемые из столбов таблиц базы данных, или значения, вычисляемые во время выполнения запроса; Оператор SELECT состоит из шести предложений, или фраз (рис. 3.4). Предложения SELECT и FROM являются обязательными. Четыре… Читать ещё >
Использование SQL для выборки (чтения) данных (реферат, курсовая, диплом, контрольная)
Язык SQL предназначен в первую очередь для выполнения запросов. Для построения SQL-запросов, задающих выборку данных, используется оператор SELECT, который является наиболее функциональным из всех операторов SQL.
Оператор SELECT читает данные из БД и возвращает их в виде таблицы результатов запроса (рис. 3.3).
Рис. 33. Выполнение SQL-занроса на чтение.
Оператор SELECT состоит из шести предложений, или фраз (рис. 3.4). Предложения SELECT и FROM являются обязательными. Четыре остальные включаются в оператор по мере необходимости. Функции каждого из предложений следующие:
- 1) в предложении SELECT указывается список возвращаемых столбцов, которые должны быть включены в таблицу результатов запроса. Возвращаемые столбцы могут содержать значения, считываемые из столбов таблиц базы данных, или значения, вычисляемые во время выполнения запроса;
- 2) в предложении FROM указывается список таблиц, которые содержат элементы данных, считываемые запросом;
- 3) предложение WHERE показывает, что в таблицу результатов запроса следует включать только строки, удовлетворяющие условию поиска;
- 4) предложение GROUP BY позволяет задавать итоговый запрос. Обычный запрос включает в таблицу результатов по одной строке для каждой строки из БД. Итоговый запрос
Рис. 3.4. Синтаксическая диаграмма оператора SELECT
вначале группирует строки БД по определенному признаку, а затем включает в таблицу результатов одну итоговую строку для каждой группы;
- 5) предложение HAVING показывает, что в таблицу результатов запроса следует включать только некоторые из групп, созданных с помощью предложения GROUP BY. Для отбора включаемых групп используется условие поиска;
- 6) предложение ORDER BY сортирует таблицу результатов запроса на основании данных, содержащихся в одном или нескольких столбцах.
В предложении SELECT, с которого начинаются все операторы SELECT, в списке возвращаемых столбцов следует указать такие элементы, как имя столбца, константа или выражение, которые будут возвращены в результате выполнения запроса. Для каждого элемента из этого списка в таблице результатов запроса будет создан один столбец.
Имя столбца идентифицирует один из столбцов, содержащихся в таблицах, которые перечислены в предложении FROM. Когда в качестве возвращаемого столбца указывается имя столбца из таблицы БД, то СУБД просто берет значение этого столбца для каждой из строк таблицы БД и помещает его в соответствующую строку таблицы результатов запроса.
Константа, записанная в списке возвращаемых столбцов, показывает, что в каждой строке таблицы результатов запроса должно содержаться одно и то же значение.
Выражение показывает, что СУБД должна вычислять значение, помещаемое в таблицу результатов запроса, по формуле, заданной выражением.
Например, для учебной БД, показанной на рис. 2.11, в результате выполнения оператора.
SELECT 1 ГРАЖДАНИН', FI0, ‘ПОЛУЧАЕТ', SUMD,.
‘ПЛАТИТ', SUMD*0.13 FROM PERSON будет создана таблица, показанная в табл. 3.2.
Таблица 3.2
Денежные доходы граждан
ГРАЖДАНИН. | FI0. | ПОЛУЧАЕТ. | SUMD. | ПЛАТИТ. | SUMD*0.13. |
ГРАЖДАНИН. | ИВАНОВ. | ПОЛУЧАЕТ. | 1000.00р. | ПЛАТИТ. | 130.00р. |
ГРАЖДАНИН. | ПЕТРОВ. | ПОЛУЧАЕТ. | 700.00р. | ПЛАТИТ. | 91.00р. |
ГРАЖДАНИН. | САХАРОВ. | ПОЛУЧАЕТ. | NULL. | ПЛАТИТ. | NULL. |
Количество строк в таблице результатов запроса может быть любым, в частности, равным нулю. Например, выполнение оператора.
SELECT FIO FROM PERSON WHERE N0M<0.
приведет к созданию таблицы, в которой будет один столбец (FIO) и ни одной строки, поскольку жители не имеют отрицательных номеров.
В некоторых случаях результатом запроса может быть единственное значение, например:
SELECT AVG (SUMD) FROM PERSON.
Этот оператор вычисляет среднее значение дохода, получаемого жителями, и такой результат также считается таблицей, которая состоит из одного столбца и одной строки.
То, что SQL-запрос всегда возвращает таблицу данных, очень важно с практической точки зрения. Во-первых, результаты запроса можно записать обратно в БД в виде таблицы. Во-вторых, таблицы результатов двух запросов, имеющие похожую структуру, можно объединить в одну таблицу. И в-третьих, таблица результатов запроса сама может стать объектом дальнейших запросов. Таким образом, табличная структура реляционной БД тесно связана с реляционными запросами: к таблицам можно посылать запросы, а запросы возвращают таблицы.
Нередко требуется получить содержимое всех столбцов таблицы, чтобы ознакомиться с ее структурой и хранимыми в ней данными. С учетом этого в операторе SELECT разрешается использовать символ звездочки, который означает, что требуется прочитать все столбцы из таблиц, перечисленных в предложении FROM. Например, содержимое таблицы PERSON можно получить с помощью оператора.
SELECT * FROM PERSON.
В этом случае таблица результатов запроса будет содержать все 6 столбцов таблицы PERSON, которые расположены в том же порядке, что и в исходной таблице, хранящейся в БД.
По умолчанию в таблицу результатов запроса включаются все строки, в том числе и повторяющиеся (см. ключевое слово ALL на синтаксической диаграмме рис. 3.4). Например, оператор
SELECT ADR FROM PERSON.
возвращает адреса всех жителей, и среди этих адресов будут повторяющиеся, если в одной квартире проживают несколько человек.
Чтобы в таблице результатов запроса содержались только неповторяющиеся строки, в операторе SELECT перед списком возвращаемых столбцов записывается ключевое слово DISTINCT. Например, чтобы получить список разных адресов квартир, предыдущий оператор нужно дополнить этим ключевым словом:
SELECT DISTINCT ADR FROM PERSON.