Организация запросов в форме SQL




 

Синтаксис оператора SELECT. Выборка с помощью оператора SELECT — это наиболее частая команда при работе с реляционной базой данных. Данный оператор обладает большими возможностями по заданию структуры выходной информации, указанию источников входной информации, способа упорядочения выходной информации, формированию новых значений и т.п. (табл. 1).

При выполнении выборки могут формироваться и новые данные, так называемые вычисляемые поля, являющиеся результатом обработки исходных данных. Возможно упорядочение выводимых данных, формирование групп записей, подсчет групповых итогов, формирование подмножеств данных (записей), являющихся основой для формирования условий по обработке следующего этапа — вложенных запросов.

Универсальный оператор SELECT имеет следующую конструкцию:

 

SELECT [предикат] {*|таблица.* | [таблица.]поле1[, [таблица.] поле2[,...]]}

[AS псевдоним1 [, псевдоним2 [,...]]]

FROM выражение [,...] [IN внешняя база данных]

[WHERE...]

[GROUP BY...]

[HAVING...]

[ORDER BY...]

[WITH OWNERACCESS OPTION]

 

Синтаксис оператора SELECT реализует сложные алгоритмы запросов.

Слово SELECT определяет структуру выводимой информации (это могут быть поля таблиц и вычисляемые выражения).

Вычисляемое выражение включает в себя:

• поля таблиц;

• константы;

• знаки операций;

• встроенные функции;

• групповые функции SQL;

 

Пример 1. Использование оператора SELECT:

1. SELECT Наименование FROM Производители;

2. SELECT TОР 5 Наименование FROM Производители;

3. SELECT TOP 8 Наименование FROM Производители ORDER BY Наименование

 

В первом случае выбираются все записи таблицы ПРОИЗВОДИТЕЛИ и на экран выводится значение поля НАИМЕНОВАНИЕ.

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

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

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

Если используются одноименные поля из нескольких таблиц, включенных в предложение FROM, следует указывать перед именем этих полей имя таблицы через точку (.), т. е. [Производители].[Наименование] и [Товары].[Наименование] — два одноименных поля из разных таблиц.

Для изменения заголовка столбца с результатами выборки используется служебное слово AS.

Пример 2. Использование служебного слова AS:

 

SELECT DISTINCT Наименование AS Товар FROM Товары

 

Будут выведены неповторяющиеся наименования товаров под заголовком Товары.

 

Таблица 1 - Аргументы оператора SELECT

 

Аргумент Назначение
Предикат используются для ограничения числа возвращаемых записей: ALL — всех записей; DISTINCT — записей, различающихся в указанных для вывода полях; DISTINCTROW — записей, полностью различающихся по всем полям; ТОР — заданного числа записей или процента записей в диапазоне, соответствующем фразе ORDER BY
Таблица Определяет имя таблицы, поля которой формируют выходные данные
Полеl, Поле2 Определяют имена полей, используемых при отборе (порядок следования полей определяет выходную структуру выборки данных)
Псевдоним1, Псевдоним2 Определяют новые заголовки столбцов результата выборки данных
FROM Определяет выражение, используемое для задания источника формирования выборки (обязательно присутствует в каждом операторе)
Внешняя база данных Определяет имя внешней базы данных — источника данных для выборки
WHERE Необязательный. Определяет условия отбора записей
GROUP BY Необязательный. Указывает поля (максимум 10) для формирования групп, по которым возможно вычисление групповых итогов; порядок следования полей оп­ределяет виды итогов — старший, промежуточный и т.п.
HAVING Необязательный. Определяет условия отбора записей для сгруппированных данных (задан способ группиро­вания GROUP BY...)
ORDER BY Определяет поля для выполнения упорядочения вы­ходных записей, порядок следования которых соот­ветствует старшинству ключей сортировки. Упорядо­чение возможно как по возрастанию (ASC), так и по убыванию (DESC) значения выбранного поля
WITH OWNERAC CESS OPTION Служит при работе в сети в составе защищенной рабо­чей группы для указания пользователям, не обладаю­щим достаточными правами, возможности просмотра результата запроса или выполнения запроса

 

Наиболее часто слово AS применяется для наименований вычисляемых полей.

 

Операции соединения таблиц. Операцию INNER JOIN можно использовать в любом предложении FROM. Она создает симметричное объединение — наиболее частую разновидность внутреннего объединения.

Записи из двух таблиц объединяются, если связующие их поля содержат одинаковые значения:

 

FROM таблица1 INNER JOIN таблица2 ON таблица1.поле1=таблица2.поле2

 

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

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

LEFT JOIN (левостороннее) соединение, когда выбираются все записи левой таблицы и только те записи правой таблицы, которые содержат соответствующие ключи связи;

RIGHT JOIN (правостороннее) соединение, когда выбираются все записи правой таблицы и только те записи левой таблицы, которые содержат соответствующие ключи связи.

Пример 3.1. Соединение таблиц:

 

SELECT Товары.Наименование, Производители.Наименование

FROM Производители INNER JOIN Товары ON Производители.КодПроизводителя = Товары.Производитель

 

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

Операции JOIN могут быть вложенными для последовательного соединения нескольких таблиц.

Пример 3.2. Соединение таблиц:

 

SELECT Заказы.Дата, Товары.Наименование, Производители.Наименование, Заказы.Количество

FROM (Производители INNER JOIN Товары ON Производители.КодПроизводителя = Товары.Производитель) INNER JOIN Заказы ON Товары.КодТовара = Заказы.Товар;

 

Здесь сначала происходит соединение таблиц ПРОИЗВОДИТЕЛИ и ТОВАРЫпо полям связи КодПроизводителя и Производитель. Затем происходит соединение таблиц ТОВАРЫи ЗАКАЗЫпо полям связи КодТовара и Товар.

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

 

Задание условий выборки. Предложение WHERE может содержать выражения, связанные логическими операторами, с помощью которых задаются условия выборки (табл. 2).

 

Таблица 2 - Логические условия для построения условий выборки

 

Оператор Назначение Оператор Назначение
And Логическое И — конъюнкция (логическое умножение) Not Отрицание
Eqv Проверка логической эквивалентности выражений Or Логическое ИЛИ — дизъюнкция (включающее Or)
Imp Логическая импликация выражений Xor Логическое ИЛИ (исключающее Or)

 

Кроме того, могут использоваться операторы для построения условий:

LIKE — выполняет сравнение строковых значений;

BETWEEN...AND — выполняет проверку на диапазон значений;

IN — выполняет проверку выражения на совпадение с любым из элементов списка;

IS — выполняет проверку значения на Null.

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

 

Пример 4. Задание условий выборки:

 

1. SELECT Наименование FROM Производители WHERE Наименование Like "P*";

2. SELECT Наименование, Производитель, Цена FROM Товары WHERE Цена Between 3000 And 10000;

3. SELECT Наименование, Производитель, Цена FROM Товары WHERE Цена Between 2000 And 10000 And

Наименование IN ("Печь микроволновая", "Утюг");

 

В первом случае выбираются производители, наименования которых начинаются на букву «Р»

Во втором случае отбираются все товары, цена которых от 3000 руб. до 10000 руб.

В третьем случае выбираются только микроволновые печи и утюги всех производителей по цене от 2000 руб. до 10000 руб.

 

Групповые функции SQL. Групповые функции необходимы для определения статистических данных на основе наборов числовых значений:

Avg — вычисляет среднее арифметическое набора чисел, coдержащихся вуказанном поле запроса;

Count — вычисляет число выделенных записей в запросе;

Min, Max — соответственно возвращают минимальное и максимальное значения из набора вуказанном поле запроса;

StDev, StDevPs — возвращают среднеквадратическое отклонение соответственно генеральной совокупности и выборки для указанного поля в запросе;

Sum — возвращает сумму значений в заданном поле запроса;

Var, VarPs — возвращают дисперсию распределения соответственно генеральной совокупности и выборки для указанного поля к запросе.

Для определения полей группирования указывается ключевое слово HAVING для заданного условия по группе при вычислении групповых значений.

Пример 5. Использование групповых функций SQL:

 

1. SELECT Наименование, Min(Цена) AS [МинЦена] FROM Товары GROUP BY Наименование

2. SELECT Наименование, Avg(Цена) AS [Средняя Цена] FROM Товары GROUP BY Наименование HAVING Avg(Цена)>3000;

 

В первом случае создается список товаров с наименьшей ценой

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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: