
- •Языки манипулирования реляционными данными (Data Manipulation Languages, dml)
- •1). Реляционная алгебра.
- •2). Реляционное исчисление.
- •3). Языки, ориентированные на преобразования.
- •4). Графически языки.
- •Язык структурированных запросов sql (Structured Query Language)
- •Однотабличные запросы-выборки
- •Многотабличные запросы-выборки
- •1). Задание соединения таблиц в предложении where.
- •2). Задание соединения таблиц в предложении from.
- •3). Подчиненные запросы.
- •4). Запросы объединения.
- •Вычисляемые поля.
- •1). Комбинирование значений в текстовых полях.
- •2). Расчет числовых значений и дат.
- •3). Вычисление итоговых значений.
- •4). Подчиненные запросы.
- •Запросы с параметрами.
- •Запросы-изменения
- •1). Запрос на создание таблицы.
- •2). Запрос на добавление записей.
- •3). Запрос на обновление.
- •4). Запрос на удаление.
- •Язык определения реляционных данных (Data Definition Language, ddl)
Языки манипулирования реляционными данными (Data Manipulation Languages, dml)
Данные в БД хранятся в структурированном и непротиворечивом виде для того, чтобы ими можно было манипулировать:
извлекать данные по запросам пользователей;
вносить новые данные;
изменять существующие данные;
удалять данные.
Категории языков манипулирования реляционными данными:
1). Реляционная алгебра.
Реляционная алгебра похожа на обычную алгебру, в которой переменными являются отношения. Операторы +, -, * и т.д. действуют над отношениями, и результатом этих действий являются новые отношения.
Недостаток:
Трудна в использовании, т.к. является процедурной (имеет процедурный характер). Пользователь при формулировке запроса должен определить не только то, что он хочет получить, но и то, как это получить (каким путем).
Реляционная алгебра не используется в качестве языка запросов в коммерческих СУБД.
2). Реляционное исчисление.
В основе реляционного исчисления лежит раздел математики – исчисление предикатов, примененное к отношениям.
Различают два вида реляционного исчисления в зависимости оттого, что является переменной:
Реляционное исчисление с переменными-кортежами – переменной является кортеж отношения.
Реляционное исчисление с переменными на доменах – переменной является значение домена.
Достоинство:
Имеет непроцедурный характер. Пользователь при формулировке запроса должен определить только то, что он хочет получить, и не должен определять, как это получить (каким путем).
Недостаток:
Трудно в понимании и использовании.
Реляционное исчисление не используется в качестве языка запросов в коммерческих СУБД.
Разработчики СУБД искали другие непроцедурные стратегии манипулирования данными, к которым относятся следующие категории языков.
3). Языки, ориентированные на преобразования.
Непроцедурные языки.
Преобразуют входные данные, имеющие вид отношений (таблиц), в результат, представляющий собой одно отношение (таблицу).
Имеют простые в использовании структуры, позволяющие указать действия, которые надо совершить с данными.
Языки, ориентированные на преобразования используются в коммерческих СУБД (SQUARE, SEQUEL, SQL).
4). Графически языки.
Запрос по образцу (Query-by-Example).
Запрос из формы (Query-by-Form).
Пользователю выдается графическое представление в виде таблицы или формы, которую он заполняет. СУБД преобразует это представление в запрос, обычно сформулированный на языке SQL.
Графические языки имеют СУБД Approach (компании Lotus) и Access.
Язык структурированных запросов sql (Structured Query Language)
Разработка SQL началась в середине 70-х годов в исследовательском центре IBM в Сан-Хосе. Изначально язык носил название SEQUEL. В 1980 году он был переименован в SQL.
В настоящее время SQL:
Наиболее популярный язык манипулирования реляционными данными.
Рекомендован Американским национальным институтом стандартов (ANSI) в качестве стандартного языка манипулирования реляционными БД.
Используется как язык доступа к данным многими коммерческими СУБД.
Является стандартным языком для обмена информацией между компьютерами, т.к. существует версия SQL, которая может работать почти на любом компьютере и операционной системе.
Институт ANSI периодически публикует обновленные версии стандарта SQL.
Реализация SQL в каждой СУБД немного отличается от ANSI-стандарта.
Причины отличия:
Многие коммерческие СУБД были разработаны до того, как появилось соглашение о стандарте.
Производители закладывают в свои продукты дополнительные возможности с целью получить преимущества в конкурентной борьбе. (Одной лишь поддержки стандарта ANSI считается недостаточно для обеспечения привлекательности продукта).
SQL – язык, ориентированный на преобразования;
– принимает на вход одно или несколько отношений и выдает на выходе одно отношение;
– даже если результатом является одно число, это число считается отношением с одной строкой и одним столбцом.
Будем рассматривать язык SQL на примере конкретной СУБД – Access.
Пример: Реляционная БД разрабатываемой ИС (аэропорт) (часть БД, использующаяся для иллюстрации формирования SQL-запросов).
Рейс
-
Номер рейса
Пункт назначения
Время вылета
Время прибытия
Число мест
12345
Москва
10:13
12:55
100
55555
Владивосток
10:05
21:30
120
67890
Киев
3:15
8:15
100
77777
Астрахань
21:35
0:10
115
89898
Москва
10:25
13:25
60
Вылет
-
Номер рейса
Плановая дата
Реальная дата
Реальное время
12345
16.10.19
16.10.19
10:15
12345
17.10.19
17.10.19
10:30
12345
18.10.19
19.10.19
0:10
67890
16.10.19
16.10.19
10:00
67890
18.10.19
19.10.19
0:30
77777
16.10.19
16.10.19
21:35
77777
17.10.19
89898
16.10.19
16.10.19
12:00
Пассажир
-
Номер билета
Номер рейса
Дата вылета
Паспортные данные
Цена билета