- •Языки манипулирования реляционными данными (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)
4). Подчиненные запросы.
Подчиненный запрос (вложенный запрос, подзапрос) создается путем включения одного запроса в другой. При этом внутренний запрос выполняется только один раз, а внешний (главный) запрос, проходя по всем своим записям, обращается только к итогу, полученному подчиненным запросом.
А). Операторы In и Not In.
выражение [Not] In (инструкция SQL) – отбор в главном запросе только тех записей, которые содержат значения, совпадающие (несовпадающие) с одним из значений, отобранных подчиненным запросом.
Пример: Вывести информацию о вылетах в Москву.
SELECT *
FROM Вылет
WHERE [Номер рейса] In
(SELECT [Номер рейса]
FROM Рейс
WHERE [Пункт назначения] = ‘Москва’)
Замечание:
1). Такой же результат можно было получить, используя соединение таблиц с помощью INNER JOIN.
Пример: Определить рейсы, на которые не планировалось ни одного вылета.
SELECT [Номер рейса]
FROM Рейс
WHERE [Номер рейса] Not In
(SELECT [Номер рейса]
FROM Вылет)
Б). Операторы Exists и Not Exists.
[Not] Exists (инструкция SQL) – определение того, должен ли подчиненный запрос возвращать какие-либо записи.
Пример: Вывести список пассажиров, которые когда-либо летали в Москву.
SELECT DISTINCT [Паспортные данные]
FROM Пассажир
WHERE Exists
(SELECT *
FROM Рейс
WHERE Рейс.[Номер рейса] = Пассажир.[Номер рейса]
AND [Пункт назначения] = ‘Москва’)
В). Операторы Any, Some и All.
знак сравнения [Any | Some | All] (инструкция SQL) – отбор в главном запросе записей, которые удовлетворяют сравнению с какими-нибудь (Any и Some) или со всеми (All) записями, отобранными подчиненным запросом.
Пример: В какие города были проданы билеты по цене менее 120? (Но были билеты и более 120).
SELECT [Пункт назначения]
FROM Рейс
WHERE [Номер рейса] = Any
(SELECT [Номер рейса]
FROM Пассажир
WHERE [Цена билета] <= 120)
Замечания:
1). Операторы Any и Some являются синонимами.
2). Если с Any и Some используется знак равенства, то это эквивалентно использованию оператора In. Но в отличие от оператора In, операторы Any и Some можно использовать со знаками > и <.
Пример: Какие рейсы в Москву имеют число мест, меньшее по сравнению с рейсами в другие города?
SELECT [Номер рейса]
FROM Рейс
WHERE [Пункт назначения] = ‘Москва’ AND [Число мест] < All
(SELECT [Число мест]
FROM Рейс
WHERE [Пункт назначения] <> ‘Москва’)
Подчиненному запросу может предшествовать только знак сравнения. В этом случае подчиненный запрос должен возвращать только одну запись.
Пример: Вывести информацию о рейсах, в которых число мест такое же, как на рейс в Киев.
SELECT *
FROM Рейс
WHERE [Пункт назначения] <> ‘Киев’ AND [Число мест] =
(SELECT [Число мест]
FROM Рейс
WHERE [Пункт назначения] = ‘Киев)
Замечание:
1). Подчиненные запросы являются еще одним способом создания многотабличных запросов.
Запросы с параметрами.
Условие отбора формируется пользователем в процессе выполнения запроса путем ввода значения параметра.
Пользователю выводится текст приглашения на ввод параметра.
В запросе текст приглашения заключается в квадратные скобки.
Пример: Вывести информацию о выполнении вылетов определенным рейсом (номер рейса задается пользователем)..
SELECT *
FROM Вылет
WHERE [Номер рейса] = [Введите номер рейса]
Пример: Вывести информацию о рейсах, расположенных в городах, начинающихся на определенную букву (буква задается пользователем).
SELECT *
FROM Рейс
WHERE [Пункт назначения] Like [Города с буквы] & “*”
Пример: Вывести информацию о вылетах, плановая дата которых находится в определенном диапазоне, задаваемом пользователем.
SELECT *
FROM Вылет
WHERE [Плановая дата] Between [Начальная дата] And [Конечная дата]
