Языки описания запросов. Языки запросов. Лекция 9

Содержание

Слайд 2

Понятие «язык запросов» (ЯЗ). Классификация ЯЗ. Классификация запросов. Табличный язык запросов

Понятие «язык запросов» (ЯЗ). Классификация ЯЗ.
Классификация запросов.
Табличный язык запросов QBE
Реализация языка

QBE (на примере СУБД Access)

Вопросы лекции:

Слайд 3

1. Понятие «язык запросов» Классификация ЯЗ

1. Понятие «язык запросов» Классификация ЯЗ

Слайд 4

Язык запросов Язык запросов – ориентированный на конечного пользователя язык доступа

Язык запросов

Язык запросов – ориентированный на конечного пользователя язык доступа к

базе данных, чаще всего строящийся по принципу декларативных языков.
Слайд 5

Типы запросов Запрос (query) – это средство выбора необходимой информации из

Типы запросов

Запрос (query) – это средство выбора необходимой информации из базы

данных. Вопрос, сформированный по отношению к базе данных, и есть запрос. Применяются два типа запросов: по образцу (QBE – Query by example) и структурированный язык запросов (SQL – Structured Query Language).
QBE - запрос по образцу – средство для отыскания необходимой информации в базе данных. Он формируется не на специальном языке, а путем заполнения бланка запроса в окне Конструктора запросов.
SQL – запросы – это запросы, которые составляются (программистами) из последовательности SQL – инструкций. Эти инструкции задают, что надо сделать с входным набором данных для генерации выходного набора.
Слайд 6

Слайд 7

Языки запросов: табличные (QBE) Часто используется не только как самостоятельный язык,

Языки запросов:
табличные (QBE)
Часто используется не только как самостоятельный язык, но

и как построитель запросов на SQL
Аналитические (SQL)
Графические элементы используются частично
Использование дополнительных возможностей, выходящих за рамки языка данного класса
Слайд 8

Языки запросов Используются: в интерактивном режиме встраиваются в программы Обычно не

Языки запросов

Используются:
в интерактивном режиме
встраиваются в программы
Обычно не являются функционально-полными языками
Возможности языка

зависят от его типа
Часто включают в себя дополнительные возможности:
определения данных
корректировки данных
Зависят от типа СУБД:
реляционные языки запросов
объектные языки запросов
Слайд 9

В реляционных языках запросов источниками данных являются плоские таблицы (реальные или

В реляционных языках запросов источниками данных являются плоские таблицы (реальные или

виртуальные (запросы, представления) и результатом является плоская таблица
Слайд 10

Любой запрос определяет: источник(и) информации поля, выводимые в ответ (обязательно) условие

Любой запрос определяет:
источник(и) информации
поля, выводимые в ответ (обязательно)
условие отбора (не обязательно)
Дополнительно

может быть задано:
упорядочение данных в ответе. Упорядочение ответа может участвовать не только для вывода результата в определенной последовательности, но и для формирование специфических запросов
Число записей, выводимых в ответ (все, заданное число, заданный процент)
Слайд 11

2. Классификация запросов

2. Классификация запросов

Слайд 12

По числу аргументов поиска в запросе Простые (один аргумент) Сложные (более

По числу аргументов поиска в запросе
Простые (один аргумент)
Сложные (более одного)
Условие AND

(И)
Условие OR (ИЛИ)
Смешанные
Без условия отбора

Классификация запросов

Слайд 13

По числу таблиц, участвующих в запросе: Однотабличные Многотабличные Внимание: Таблицы, включенные

По числу таблиц, участвующих в запросе:
Однотабличные
Многотабличные
Внимание:
Таблицы, включенные в запрос, будут влиять

на ответ, даже, если поля некоторых из этих таблиц не участвуют в условиях запроса
Необходимо учитывать тип соединения таблиц
Надо использовать минимальное число таблиц, необходимых для выполнения запроса
Обратить внимание на обработку таблиц, для которых не задана связь
Возможно использовать в качестве источника одну и ту же таблицу многократно (связь таблицы самой с собой - самобъединение)

Классификация запросов

Слайд 14

По выполняемым действиям: Поисковые Корректирующие Замена Вставка Удаление Запрос на создание таблиц Классификация запросов

По выполняемым действиям:
Поисковые
Корректирующие
Замена
Вставка
Удаление
Запрос на создание таблиц

Классификация запросов

Слайд 15

По моменту задания значений аргументов поиска при создании запроса; при выполнении запроса (параметрические запросы). Классификация запросов

По моменту задания значений аргументов поиска
при создании запроса;
при выполнении запроса (параметрические

запросы).

Классификация запросов

Слайд 16

Получаемая в ответе информация: - содержится в базе данных вычисляется: агрегирующие

Получаемая в ответе информация:
- содержится в базе данных
вычисляется:
агрегирующие функции – возможна

только одноуровневая агрегация
произвольные выражения

Классификация запросов

Слайд 17

Специальные запросы Перекрестные Поиск повторяющихся [записей] Поиск записей, не имеющих подчиненных

Специальные запросы

Перекрестные
Поиск повторяющихся [записей]
Поиск записей, не имеющих подчиненных

Слайд 18

3. Табличный язык запросов QBE

3. Табличный язык запросов QBE

Слайд 19

Язык QBE -общая характеристика Табличный двумерный язык, основанный на реляционном исчислении.

Язык QBE -общая характеристика
Табличный двумерный язык, основанный на реляционном исчислении.
Декларативный язык.
Язык

четвертого поколения (4 GL)
Слайд 20

Табличный язык запросов QBE В современных СУБД широко используются табличные языки

Табличный язык запросов QBE

В современных СУБД широко используются табличные языки запросов.

Наиболее распространенным среди них является язык QBE (Query-By-Example - запрос по примеру).
Язык QBE предназначен для работы в интерактивном режиме и ориентирован на конечного пользователя. Язык QBE реализован во многих современных СУБД, например в dBase IV и более старших версиях этой системы, Paradox, Access и др. Конкретные реализации этого языка несколько отличаются друг от друга, но все они построены по единому принципу.
Суть подхода, воплощенного в языке QBE, заключается в следующем. В окне формирования запроса выделяются две зоны. В первой из них высвечивается «скелет» (образ, форма, структура) одной или нескольких таблиц, данные из которых будут участвовать в запросе. В качестве исходных для запроса могут указываться не только базовые таблицы, но и другие запросы.
Слайд 21

Табличный язык запросов QBE Во второй зоне («скелете» запроса табличной формы)

Табличный язык запросов QBE

Во второй зоне («скелете» запроса табличной формы) пользователь

задает условия запроса. В этой зоне пользователь определяет, какие поля участвуют в формировании запроса, а также условия отбора и некоторые другие характеристики запроса.
Например, если пользователю необходимо получить все записи с заданным значением конкретного атрибута, то в соответствующем столбце «скелета» указывается это значение.
На рис. (следующий слайд) представлен запрос к таблице, содержащей сведения о сотрудниках (Kadr) и включающей следующие атрибуты:
·        FAM - фамилия;
·        IMIA - имя;
·        TABN - табельный номер;
·        VOZR - возраст;
·        POL - пол;
·        ADR - адрес.
Слайд 22

Табличный язык запросов QBE Требуется выдать информацию обо всех сотрудниках в

Табличный язык запросов QBE


Требуется выдать информацию обо всех сотрудниках в возрасте

40 лет.
В соответствующем столбце таблицы (VOZR) указывается цифра 40.
В столбце можно записывать не только значение атрибута, но и знак
операции сравнения; по умолчанию принимается знак равенства («=»).
Слайд 23

Задание сложных запросов. Допускается задание и простых запросов, включающих только один

Задание сложных запросов. Допускается задание и простых запросов, включающих только один

аргумент поиска, и сложных запросов, компоненты которых связаны операторами AND (И) или OR (ИЛИ). Операторы AND и OR в явном виде не указываются при формулировании запроса на QBE. При отображении запросов на экране используется следующее правило: если в сложном запросе его компоненты представляют разные атрибуты, которые должны быть связаны оператором AND, то они записываются в одной строке (рис. 6.2).
На рис. изображен запрос: «Выдать информацию о сотруднике с фамилией Диго и именем Светлана»

Табличный язык запросов QBE

Слайд 24

Табличный язык запросов QBE Если компоненты запроса должны быть связаны операторами

Табличный язык запросов QBE

Если компоненты запроса должны быть связаны операторами OR,

то они записываются на разных строках.

На рис. изображен запрос - «Выдать информацию о сотрудниках, имеющих либо фамилию Диго, либо имя Светлана».
В связи с тем, что интерпретация запроса зависит от взаимного расположения элементов сложного запроса на строках экрана, такого рода языки запросов называются табличными двухмерными.

Слайд 25

Табличный язык запросов QBE Возможны разные типы соединений таблиц. Наиболее распространенным

Табличный язык запросов QBE

Возможны разные типы соединений таблиц. Наиболее распространенным является

соединение, при котором в результатную таблицу помещаются те соединенные записи, для которых значение поля связи основной таблицы совпадает с соответствующим полем в зависимой таблице. В описанных выше случаях устанавливается именно такое соединение.
Слайд 26

Табличный язык запросов QBE В настоящее время широко используются такие понятия,

Табличный язык запросов QBE

В настоящее время широко используются такие понятия, как

«левое» и «правое» соединение, когда в результатную таблицу помещаются все записи из основной или зависимой таблицы соответственно, даже если для них нет связанных записей в другой таблице.
Но не все системы позволяют в QBE реализовывать такие соединения.
В случаях, когда возможно задание разных типов соединений, конкретный способ реализации отличается в разных СУБД. Так, в Access «левое» и «правое» соединения можно определить, задав для связи «параметры объединения» или перейдя в SQL.
В dBase IV никаких специфических терминов для обозначения такого типа соединений нет, но включение слова Every в запрос на QBE выполняет ту же роль.
Слайд 27

Табличный язык запросов QBE Работа с несколькими таблицами в конкретных СУБД

Табличный язык запросов QBE

Работа с несколькими таблицами в конкретных СУБД различается

не только тем, каким способом можно определить связь между таблицами.
Так, например, некоторые системы обязывают пользователя связать те таблицы/файлы, которые указываются как исходные для запроса; другие автоматически связывают открытые файлы по тем полям, которые система воспринимает как поля связи (чаще всего это поля, имеющие одинаковые имена, тип и длину); третьи - оставляют эти таблицы изолированными, если пользователь не указал, как они должны быть связаны, четвертые - выполняют декартово произведение открытых таблиц.
Например, в dBase IV вызвать несколько файлов БД на панель запросов и не связать их было нельзя.
В MS Query, Access если таблицы не связаны, то при выполнении запроса это приводит к связыванию каждой записи одной таблицы с каждой записью другой (декартово произведение).
Слайд 28

Описание ответа. Кроме задания условия отбора данных, при описании запроса должна

Описание ответа. Кроме задания условия отбора данных, при описании запроса должна

быть возможность указать, какие атрибуты и в какой последовательности входят в ответ. В ответ могут выдаваться не только реальные поля, которые хранятся в одной из базовых таблиц, но и вычисляемые поля.
Можно выделить два вида вычислений, которые могут выполняться в запросах, формах, отчетах: это агрегирующие операторы, которые выполняют операции над группой записей, и обычные вычисления, затрагивающие отдельные поля одной или нескольких связанных записей.
Агрегирующие показатели могут быть включены не только в «Запросы», но и в «Отчеты». Возможности включения агрегирующих показателей в запросы и отчеты различаются между собой.
Результатом запроса всегда является плоская таблица. Поэтому в запросах могут быть получены только одноуровневые итоги. В отчетах же может быть получено несколько степеней итогов.

Табличный язык запросов QBE

Слайд 29

Табличный язык запросов QBE Набор агрегирующих функций может быть различным в

Табличный язык запросов QBE

Набор агрегирующих функций может быть различным в разных

системах. Обычно во всех реализациях СУБД включены следующие функции: Sum (сумма), Min (минимум), Мах (максимум), Avg (среднее), Count (подсчет).
Некоторые системы включают дополнительные статистические функции, такие, как отклонение, стандартное отклонение, дисперсия и др.
Результаты вычислений, выводящиеся в поле, не запоминаются в базовой таблице. Вместо этого вычисления снова проводятся всякий раз, когда выполняется запрос, поэтому результаты всегда представляют текущее содержимое базы данных. Обновить вычисленные результаты вручную невозможно (таблица, содержащая вычисляемое поле, имеет статус «только для чтения»).
Слайд 30

Табличный язык запросов QBE Для удобства восприятия ответа часто требуется определить

Табличный язык запросов QBE

Для удобства восприятия ответа часто требуется определить упорядоченность

данных в ответе. Язык QBE обеспечивает такую возможность.
Опять-таки возможности задания упорядочения ответа различаются в разных СУБД:
некоторые системы разрешают проводить упорядочение по произвольным полям,
другие требуют, чтобы поле упорядочения стояло в ответе обязательно первым, а если упорядочение ведется по нескольким полям, то чтобы эти поля следовали в ответе друг за другом в порядке их старшинства;
некоторые СУБД различают обычное и словарное упорядочение (когда учитывается и не учитывается регистр соответственно), другие - нет;
в некоторых системах, даже если не задано никакое упорядочение, ответ всегда выдается упорядоченным по первому полю таблицы ответа и т.п.
Слайд 31

Дополнительные возможности. Кроме собственно поисковых запросов язык QBE позволяет выполнять и

Дополнительные возможности. Кроме собственно поисковых запросов язык QBE позволяет выполнять и

другие операции, например корректировку данных. Набор допустимых операций, а также способы их задания несколько различаются в разных системах.
Кроме того, некоторые СУБД позволяют формировать запросы специальных видов: параметрические, перекрестные и некоторые другие (не все из них, наверное, могут быть отнесены к QBE, но они реализованы одними и теми же компонентами СУБД).
Запросы, сформулированные на QBE, могут быть запомнены для их последующего многократного использования.

Табличный язык запросов QBE

Слайд 32

4. Реализация языка QBE (на примере СУБД Access)

4. Реализация языка QBE
(на примере СУБД Access)

Слайд 33

Слайд 34

Слайд 35

Способы создания запросов

Способы создания запросов

Слайд 36

Источники данных Запрос может базироваться: на одной таблице на нескольких связанных

Источники данных

Запрос может базироваться:
на одной таблице
на нескольких связанных таблицах
на других запросах
на

таблицах и запросах
Слайд 37

Слайд 38

Источники данных. Многотабличные запросы. Запросы с одинаковыми условиями, выполненные на разных

Источники данных. Многотабличные запросы.

Запросы с одинаковыми условиями, выполненные на разных схемах

данных, дадут разные результаты
результат будет зависеть от типа «объединения» (соединения) таблиц
выполнение запросов на нескольких таблицах, для которых не заданы связи, может привести к нежелаемым результатам
Слайд 39

Слайд 40

Слайд 41

Слайд 42

Слайд 43

Слайд 44

Определение полей, участвующих в запросе Соответствует операции проекции реляционной алгебры Поля,

Определение полей, участвующих в запросе

Соответствует операции проекции реляционной алгебры
Поля, участвующие

в запросе, могут выводиться в ответ, а могут лишь участвовать в формировании условия запроса и в ответ не выводиться
Слайд 45

Слайд 46

Использование “*” в запросе

Использование “*” в запросе

Слайд 47

Виды запросов (по выполняемым действиям) Поисковые корректирующие обновление удаление добавление перекрестные

Виды запросов (по выполняемым действиям)

Поисковые
корректирующие
обновление
удаление
добавление
перекрестные

Слайд 48

Поисковые запросы

Поисковые запросы

Слайд 49

Поисковые запросы Условие отбора записывается в соответствующей графе по умолчанию принимается

Поисковые запросы

Условие отбора записывается в соответствующей графе
по умолчанию принимается оператор «=»
ограничители

зависят от типа поля (в Access в большинстве случаев устанавливаются автоматически)
Слайд 50

Виды запросов (по условиям отбора) По количеству аргументов поиска простые (один)

Виды запросов (по условиям отбора)

По количеству аргументов поиска
простые (один)
сложные (несколько)
«И» («AND»)
«ИЛИ»

(«OR»)
по наличию группировки
без подгруппировки
с подгруппировкой
Слайд 51

Простые запросы Использование операторов сравнения при задании запроса

Простые запросы

Использование операторов сравнения при задании запроса

Слайд 52

Задание диапазона. Закрытый диапазон.

Задание диапазона. Закрытый диапазон.

Слайд 53

Слайд 54

Задание диапазона. Другой способ задания закрытого диапазона: >=1000 And Задание открытого диапазона: 15000

Задание диапазона.

Другой способ задания закрытого диапазона:
>=1000 And <=1500
Задание открытого диапазона:
<1000

Or >15000
Слайд 55

Параметрический запрос. Конструирование.

Параметрический запрос. Конструирование.

Слайд 56

Параметрический запрос. Выполнение

Параметрический запрос. Выполнение

Слайд 57

Поисковые запросы Сложные запросы

Поисковые запросы

Сложные запросы

Слайд 58

Сложные условия. «И»

Сложные условия. «И»

Слайд 59

Сложные условия. «ИЛИ»

Сложные условия. «ИЛИ»

Слайд 60

Поисковые запросы Запросы с подгруппировкой

Поисковые запросы

Запросы с подгруппировкой

Слайд 61

Запросы с подгруппировкой. Ограничения возможен только один уровень подгруппировки обязательность предварительного

Запросы с подгруппировкой. Ограничения

возможен только один уровень подгруппировки
обязательность предварительного

упорядочения БД зависит от СУБД (в Access - не обязательно)
состав полей, выводимых в ответ
Слайд 62

Запросы с подгруппировкой. Выбор функции.

Запросы с подгруппировкой. Выбор функции.

Слайд 63

Запросы с подгруппировкой

Запросы с подгруппировкой

Слайд 64

Подгруппировка с отбором

Подгруппировка с отбором

Слайд 65

Применение агрегирующей функции без группировки

Применение агрегирующей функции без группировки

Слайд 66

Включение вычисляемых полей в запрос В свободной колонке строится выражение (удобнее с помощью «построителя»)

Включение вычисляемых полей в запрос

В свободной колонке строится выражение (удобнее с

помощью «построителя»)
Слайд 67

Отбор по вычисляемому полю

Отбор по вычисляемому полю

Слайд 68

Примеры выражений фамилия_инициалы: [сотрудник]![фамилия] & " " & [сотрудник]![Имя] & " " & [сотрудник]![отчество]

Примеры выражений

фамилия_инициалы: [сотрудник]![фамилия] & " " &
[сотрудник]![Имя] & " "

&
[сотрудник]![отчество]
Слайд 69

Многотабличные запросы.

Многотабличные запросы.

Слайд 70

Автоматическое объединение таблиц В меню “Сервис” выбрать команду “Параметры” Перейти к

Автоматическое объединение таблиц

В меню “Сервис” выбрать команду “Параметры”
Перейти к вкладке “Таблицы/Запросы”.
Установить/снять

флажок “Автоматическое объединение”
Слайд 71

Источники данных. Многотабличные запросы. Если связь не задана (и не отменено

Источники данных. Многотабличные запросы.

Если связь не задана (и не отменено

“Автоматическое объединение”), то будет осуществляться связь каждой записи одной таблицы с каждой записью второй таблицы.
Слайд 72

Запрос

Запрос

Слайд 73

На таблицах

На таблицах

Слайд 74

Даст результат

Даст результат

Слайд 75

Запрос

Запрос

Слайд 76

Даст результат

Даст результат

Слайд 77

внутреннее, левое и правое соединение

внутреннее, левое и правое соединение

Слайд 78

“Самообъединение”

“Самообъединение”

Слайд 79

Поисковые запросы Специальные запросы

Поисковые запросы

Специальные запросы

Слайд 80

Специальные запросы Повторяющиеся записи Записи без подчиненных

Специальные запросы

Повторяющиеся записи
Записи без подчиненных

Слайд 81

Повторяющиеся записи

Повторяющиеся записи

Слайд 82

Выбор мастера

Выбор мастера

Слайд 83

Выбор таблицы

Выбор таблицы

Слайд 84

Задание полей, совпадение которых будет проверяться

Задание полей, совпадение которых будет проверяться

Слайд 85

Дополнительные поля, выводимые в ответ

Дополнительные поля, выводимые в ответ

Слайд 86

Задание имени запроса

Задание имени запроса

Слайд 87

Вид запроса в режиме конструктора

Вид запроса в режиме конструктора

Слайд 88

Текст позапроса на языке SQL In (SELECT [код_сотрудника] FROM [расписание] As

Текст позапроса на языке SQL

In (SELECT [код_сотрудника] FROM [расписание] As

Tmp GROUP BY [код_сотрудника],[дата],[время] HAVING Count(*)>1 And [дата] = [расписание].[дата] And [время] = [расписание].[время])
Слайд 89

Содержание таблицы «Расписание»

Содержание таблицы «Расписание»

Слайд 90

Ответ

Ответ

Слайд 91

Записи без подчиненных

Записи без подчиненных

Слайд 92

Выбор мастера

Выбор мастера

Слайд 93

Слайд 94

Слайд 95

Слайд 96

Слайд 97

Слайд 98

Корректирующие запросы

Корректирующие запросы

Слайд 99

Виды запросов

Виды запросов

Слайд 100

Выполнение корректирующих запросов !Осторожно: при «открытии» корректирующего запроса происходит изменение содержимого

Выполнение корректирующих запросов

!Осторожно: при «открытии» корректирующего запроса происходит изменение содержимого БД
При

выполнении корректирующих запросов происходит контроль целостности БД
Слайд 101

Запрос на обновление

Запрос на обновление

Слайд 102

Запрос на обновление

Запрос на обновление

Слайд 103

Запрос на удаление

Запрос на удаление

Слайд 104

Запрос на добавление

Запрос на добавление

Слайд 105

Создание новой таблицы

Создание новой таблицы

Слайд 106

Дополнительные возможности

Дополнительные возможности

Слайд 107

Отбор определенного числа записей с предварительной сортировкой

Отбор определенного числа записей с предварительной сортировкой

Слайд 108

Получение сводных диаграмм (сводных таблиц) на основе запросов

Получение сводных диаграмм (сводных таблиц) на основе запросов

Слайд 109

Дополнительные возможности

Дополнительные возможности

Слайд 110

Построение сводной диаграммы

Построение сводной диаграммы

Слайд 111

Примеры сводных диаграмм

Примеры сводных диаграмм

Слайд 112

Построение сводной диаграммы

Построение сводной диаграммы

Слайд 113

Примеры сводных диаграмм

Примеры сводных диаграмм

Слайд 114

Примеры сводных диаграмм

Примеры сводных диаграмм

Слайд 115

Примеры сводных диаграмм

Примеры сводных диаграмм

Слайд 116

Примеры сводных диаграмм

Примеры сводных диаграмм

Слайд 117

Примеры сводных диаграмм

Примеры сводных диаграмм