Выражение в реляционном исчислении на кортежах имеют вид:
{S | F(S)}, где S – переменная-кортеж, F-формула.
Пример: все продавцы, получающие зарплату больше 10000
{S | Продавцы(S) & S.Зарплата>10000}
Формулы могут строиться с помощью логических операций конъюнкции, дизъюнкции, отрицания и операций сравнения. Используются кванторы существования и всеобщности, например:
Выражение имеет вид: {d1, d2,…,dn | F(d1,d2,…, dm)}; m>=n, где d1…dm – переменные области определения (домена). F – формула, которая может быть отношением или выражением сравнения.
Пример: Найти номера и имена всех продавцов, зарплата которых > 10000.
{N, Имя | (Город, Отдел, N_Начальника)(Продавцы(N, Имя, Отдел, Город, Зарплата, N_Начальника)& (Зарплата>10000))}
Д/З 5. Для примера реляционной БД из Д/З 4 приведите примеры всех операций, запишите запрос в формах реляционного исчисления на кортежах и на доменах.
Вопросы для самопроверки:
1. Что из трех математических основ требует процедурного программирования (то есть программирования с поэтапным получением результата), а что – декларативного (то есть описания желаемого результата)?
Язык SQL (Structure Query Language – язык структурированных запросов) представляет собой декларативный язык для работы с реляционными БД, основанный на реляционном исчислении на кортежах. Декларативность языка заключается в том, что, в отличие от императивных языков (например, С++), программист не пишет последовательность действий для получения нужного ему результата, а описывает желаемый результат. СУБД сама подбирает алгоритм нахождения результата по его описанию.
Язык SQL состоит из трех подъязыков, которые описаны в Табл. 8:
Табл. 8. Подъязыки языка SQL
Подъязык
Описание
Операторы
Определение данных (Data Definition Language, DDL)
Предназначен для создания различных объектов БД
Create - создание,
Alter - изменение,
Drop – удаление
следующих объектов:
Database – базы данных,
Table - таблицы,
View - представления,
Index – индекса,
Trigger – триггера,
Procedure – процедуры.
Управление данными (Data Control Language, DCL).
Предназначен для управления правами доступа пользователей к различным объектам БД
Select – выбрать данные,
Insert – создать новые данные,
Update – изменить данные,
Delete – удалить данные.
Операторы определения и управления данными просты, часто они скрыты от разработчика, если он пользуется мастерами при создании БД. Их рассмотрение выходит за пределы данной книги. Все богатство языка SQL заключено в операторе Select, который используется со вспомогательными операторами, приведенными в Табл. 9.
Табл. 9. Вспомогательные операторы для Select
Группа операторов
Описание операторов
Тип выборки
All – выбрать все записи
Distinct – выбрать записи, удалив повторы
Селекция, сортировка и группировка
order by [asc | desc] – сортировка по возрастанию или убыванию,
Where – селекция записей,
group by - группировка,
having – селекция групп,
[left | right | full | inner] join…on – различные виды соединений таблиц
Операторы сравнения и логические операторы
=, <>, >, <, >=, <= - операторы сравнения,
Or, Аnd, Not – логические И, ИЛИ, отрицание,
is [not] null – проверка на (не)пустое значение
in, between, like, starting,containing – операторы примерного совпадения полей строковых типов.
Агрегирующие операторы
Count – подсчет количества строк,
Sum – сумма,
Avg – среднее значение,
Min – минимальное значение,
Max – максимальное значение.
Кванторы
Any – какой-нибудь,
All – все,
Singular – единственный,
Exists – существует.
Операции над множествами
Union – объединение,
Intersect – пересечение,
Except – разность.
Синтаксис оператора Select сложный, мы будем рассматривать его на примерах от простых к сложным, обращая внимание на типичные ошибки, с которыми сталкивается начинающий программист на SQL.