Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
13-19.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
39.95 Кб
Скачать

17. Язык запросов sql. Общий синтаксис и возможности оператора select. Запросы с использованием group by.

Одним из языков манипулирования данными является язык SQL. SQL-Structured Ouery language – структурный язык запросов.

Оператор SELECT является фактически самым важным для пользователя и самым сложным оператором SQL. Он предназначен для выборки данных из таблиц, т.е. он, собственно, и реализует одно их основных назначение базы данных- предоставлять информацию пользователю. Оператор SELECT всегда выполняется над некоторыми таблицами, входящими в базу данных. Результатом выполнения оператора SELECT всегда является таблица. Таким образом, по результатам действий оператор SELECT похож на операторы реляционной алгебры. Любой оператор реляционной алгебры может быть выражен подходящим образом сформулированным оператором SELECT. Сложность оператора SELECT определяется тем, что он содержит в себе все возможности реляционной алгебры, а также дополнительные возможности, которых в реляционной алгебре нет.

Рассмотрим некоторые возможности оператора SELECT. Общая форма оператора SELECT выглядит так:

SELECT столбцы FROM таблицы [WHERE условия]

[GROUP ВУ группа [HAVING групповые-условия]]

[ORDER ВУ сортировка-столбцов]

Это - самый простой вариант оператора SELECT. Он имеет очень много опций. И предоставляет поистине потрясающие возможности в плане выбора нужных данных. Дополнительные опции оператора SELECT можно использовать или не использовать, но использование дополнительных возможностей позволяет избежать последующей обработки полученных данных.

Условия, которые задаются с помощью оператора WHERE, должны быть представлены в виде предикатов. В данных условиях могут использоваться следующие операции: >,<,=,!=,>=,<=,<> , а также логические AND, OR, NOT для соединения нескольких условий.

  1. Язык запросов sql. Представления, хранимые процедуры, функции и триггеры.

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

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

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

Триггер – это процедурный код, который вызывается каждый раз, когда происходит определенное событие. Например, можно написать триггер, который при каждом изменении записи в таблице «Продажи» будет записывать в другую таблицу информацию о том, кто и в какое время внёс это изменение. Т.е. триггер специально пишется для того, чтобы выполнять какие-то дополнительные действия каждый раз, когда выполняется определённая операция над каким-то объектом БД.

DDL и DML триггеры.

Триггеры чаще всего используются для:

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

  • реализации операций модификации данных в представлениях;

  • реализации бизнес-правил, когда изменения данных в одних таблицах должны вызвать изменения данных в других таблицах;

  • реализации аудита;

  • реализации репликации (в распределённых БД);

  • поддержки целостности БД с наличием избыточности.

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