Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Определение запросов на выборку




Определение таблиц и представлений

Первой задачей языка SQL является описание структуры и характеристик таблиц базы данных. Для этого в языке SQL используется оператор определения таблицы CREATE TABLE. Этот оператор состоит из задания имени таблицы, после чего в скобках перечисляются имена полей таблицы с указанием типов значений для этих полей (мы не будем подробно описывать все нюансы задания типов полей). В конце оператора может идти определение первичного ключа таблицы и связи таблицы с определенной ранее таблицей.

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

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

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

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

Предложение SELECT содержит список полей в результирующей таблице. В простом случае поле вместе с названием переносится из одной из таблиц, которые являются источником запроса. В более сложном случае задается имя поля и формула, задающая его вычисление. Составляющими формулы могут служить поля таблиц-источников или константы, а операциями – арифметические и логические операции или операции сравнения.

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

Предложение WHERE задает критерий отбора, сформулированное для каждой записи таблицы, полученной в результате предыдущего этапа. Условие отбора представляет собой выражение логического типа, членами которого являются поля таблиц-источников и константы. Отбор производится по следующим правилам: пусть R – таблица, образованная после применения раздела FROM. Тогда результатом раздела WHERE является таблица, состоящая из тех строк R, для которых результатом вычисления условия отбора является значение true.

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

Предложение GROUP BY определяет поля, по которым производится группировка записей исходных таблиц. Группировка состоит в объединении нескольких записей таблицы в одну. Если обозначить через R таблицу, являющуюся результатом предыдущих разделов (FROM и WHERE), то результатом раздела GROUP BY является разбиение R на множество групп записей, которое состоит из минимального числа таких групп, в которых для каждого поля из списка полей группировки во всех записях группы значения этого поля совпадают. Из каждой группы оставляется одна запись. Список выборки сгруппированной таблицы состоит из полей группировки и полей, полученных в результате применения агрегатных функций к полям записей групп. К числу агрегатных функций относятся: число записей в группе, суммирование, среднее значения, минимум или максимум. Для обозначения результата раздела GROUP BY в стандарте используется термин "сгруппированная таблица".

Если раздел группировки присутствует, то можно наложить условие отбора на записи таблицы запроса, полученные после группировки. Это условие задается предложением HAVING. Содержание предложения аналогично условию отбора для отдельных записей, однако оно может включать значения агрегатных функций для полей групп записей.

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

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




Поделиться с друзьями:


Дата добавления: 2014-10-17; Просмотров: 568; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.