Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_8_MA_5_SQL_Ярослав.doc
Скачиваний:
4
Добавлен:
07.08.2019
Размер:
167.94 Кб
Скачать

Лекция 7

Запросы.

Определение запроса.

Запрос - это обращение к базе данных, содержащее определенную команду и набор параметров. Запросы используются для просмотра, изменения и анализа данных различными способами. Запросы также можно использовать в качестве источников записей для форм и отчетов. В Microsoft Access есть несколько типов запросов.

Виды запросов и их функции.

Запрос на выборку является наиболее часто используемым типом запроса. Запросы этого типа возвращают данные из одной или нескольких таблиц и отображают их в виде таблицы. Запросы на выборку можно также использовать для группировки записей и вычисления сумм, средних значений, подсчета записей и нахождения других типов итоговых значений.

Запрос с переменными (Запрос с параметрами) – это запрос, содержащий в себе неопределенные параметры (переменные) и который при выполнении требует ввода значений неопределенных параметров.

Запрос с переменными при выполнении отображает в собственном диалоговом окне приглашение ввести данные, например условие для возвращения записей или значение, которое требуется вставить в поле. Можно разработать запрос, выводящий приглашение на ввод нескольких единиц данных, например двух дат. Затем Microsoft Access может вернуть все записи, приходящиеся на интервал времени между этими датами.

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

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

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

  • На удаление записи. Запрос на удаление удаляет группу записей из одной или нескольких таблиц. Например, запрос на удаление позволяет удалить записи о товарах, поставки которых прекращены или на которые нет заказов. С помощью запроса на удаление можно удалять только всю запись, а не отдельные поля внутри нее.

  • На обновление записи. Запрос на обновление вносит общие изменения в группу записей одной или нескольких таблиц. Например, на 10 процентов поднимаются цены на все молочные продукты или на 5 процентов увеличивается зарплата сотрудников определенной категории. Запрос на обновление записей позволяет изменять данные в существующих таблицах.

  • На добавление записей. Запрос на добавление добавляет группу записей из одной или нескольких таблиц в конец одной или нескольких таблиц. Например, появилось несколько новых клиентов, а также база данных, содержащая сведения о них. Чтобы не вводить все данные вручную, их можно добавить в таблицу «Клиенты».

  • На создание таблицы. Запрос на создание таблицы создает новую таблицу на основе всех или части данных из одной или нескольких таблиц. Запрос на создание таблицы полезен при создании таблицы для экспорта в другие базы данных Microsoft Access или при создания архивной таблицы, содержащей старые записи.

Запросы SQL

Запрос SQL — это запрос, создаваемый при помощи инструкций SQL. Язык SQL (Structured Query Language) используется при создании запросов, а также для обновления и управления реляционными базами данных, такими как базы данных Microsoft Access. Когда пользователь создает запрос в режиме конструктора запроса, Microsoft Access автоматически создает эквивалентную инструкцию SQL. Фактически, для большинства свойств запроса, доступных в окне свойств в режиме конструктора, имеются эквивалентные предложения или параметры языка SQL, доступные в режиме SQL. При необходимости пользователь имеет возможность просматривать и редактировать инструкции SQL в режиме SQL. После внесения изменений в запрос в режиме SQL его вид в режиме конструктора может измениться.

Виды запросов создаваемые с помощью мастера.

Кроме конструктора запросов в MS Access есть функция - мастер создания запросов, который автоматически создает запрос определенного типа на основе параметров заданных пользователем.

Мастер может создать запросы следующих типов:

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

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

  3. Повторяющиеся записи. С помощью мастера поиска повторяющихся записей можно создать запрос на выборку, чтобы определить, содержит ли таблица повторяющиеся записи. Например, по совпадающим значениям в поле «Адрес» можно найти повторяющиеся записи, относящиеся к одному и тому же поставщику, а повторяющиеся значения в поле «Город» позволяют отобрать всех поставщиков, находящихся в одном городе.

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

Связи между таблицами.

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

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

  • Таблица студенты. Основные поля: «код студента», «фамилия студента».

  • Таблица предметы. Основные поля: «код предмета», «название предмета».

  • Таблица оценки. Основные поля: «код студента», «код предмета», «оценка»

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

В нашем примере таблицы будут связаны следующим образом:

Есть три типа логических связей:

Один-к-одному. Такая связь создается между двумя ключевыми полями. Если две таблицы имеют связь один-к-одному, то записи первой таблицы будет соответствовать одна запись второй таблицы. На практике используется нечасто, так как две таблицы связанные между собой такой связью можно объединить в одну без дублирования данных. Например, можно создать таблицу «средний балл» с полями: «код предмета», «средний балл», она будет иметь связь один-к-одному с таблицей «Предметы».

Один-ко-многим Такая связь создается между двумя полями, одно из которых ключевое. При такой связи одной записи таблицы, содержащей ключевое поле, может соответствовать несколько записей другой таблицы, не содержащей ключевое поле. В качестве примера рассмотрим базу данных Biblio. Таблицы Publishers (издатели) и Titles (заголовки) имеют связь один-ко-многим. Связь создана между ключевым полем таблицы Publishers – PubID и полем таблицы Titles PubID, которое ключевым полем не является. Таким образом, одной записи таблицы Publishers может соответствовать несколько записей таблицы Titles, что вполне логично, так как у издателя может быть много изданных книг.

Также связь один-ко-многим может быть создана между полями двух таблиц, одно из которых ключевое, а другое является частью составного ключа. В нашем примере со студентами и оценками, в таблице «Оценки» два ключевых поля – т.е. используется составной ключ.

Многие-ко-многим Такая связь создается между двумя таблицами, каждая из которых имеет несколько ключевых полей, или составной ключ. Но, как правило, напрямую такую связь не используют, а создают специальную таблицу связей. В качестве примера можно взять базу данных biblio. Таблица Title Autor выступает именно в роли связующей таблицы между таблицей Titles и таблицей Authors. Это как раз тот случай где необходимо использовать связь один-ко-многим, так как у книги может быть несколько авторов, а у автора может быть несколько книг.

Отличие запроса от фильтра. Запрос это обращение к БД, а фильтр это определенный параметр, как правило, содержащий определенные критерии. С помощью фильтра нельзя вывести данные, изменить или удалить их. Фильтр только содержит некоторый критерий, на основе которого определяется, какие данные выводятся, изменяются или удаляются. Любой запрос содержит в себе определенный набор фильтров.

Параметры запросов.

Построитель выражений Чтобы открыть построитель выражений в конструкторе запросов, в строке «поле» надо выбрать ячейку и в контекстном меню выбрать пункт «построить». Можно воспользоваться кнопкой на панели инструментов. Построитель выражений можно использовать для строки «условие отбора», а также при создании форм и отчетов. С помощью построителя выражений можно выбирать источник данных для запроса, создавать выражения для вычисления данных.

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

В качестве примера рассмотрим запрос оценок студентов. Этот запрос будет брать данные из таблиц «студенты» и «оценки». В запросе будет три поля «код студента», «фамилия студента» и «оценка».

Чтобы узнать среднюю оценку студента по всем предметам, в строке групповые операции выбираем пункт Avg. А чтобы показать максимальную или минимальную оценку выбираем пункт max или min соответственно.

Основные функции используемые при работе с БД.

Язык SQL.

Запрос SQL — это запрос, создаваемый при помощи инструкций SQL. Язык SQL (Structured Query Language) используется при создании запросов, а также для обновления и управления реляционными базами данных, такими как базы данных Microsoft Access.

Когда пользователь создает запрос в режиме конструктора запроса, Microsoft Access автоматически создает эквивалентную инструкцию SQL. Фактически, для большинства свойств запроса, доступных в окне свойств в режиме конструктора, имеются эквивалентные предложения или параметры языка SQL, доступные в режиме SQL. При необходимости пользователь имеет возможность просматривать и редактировать инструкции SQL в режиме SQL. После внесения изменений в запрос в режиме SQL его вид в режиме конструктора может измениться.

Инструкция (строка) SQL - выражение, определяющее команду SQL, например SELECT, UPDATE или DELETE, и включающее предложения, например WHERE или ORDER BY. Инструкции/строки SQL обычно используются в запросах и в статистических функциях.

Некоторые запросы, которые называют запросами SQL, невозможно создать в бланке запроса. Для запросов к серверу, управляющих запросов и запросов на объединение необходимо создавать инструкции SQL непосредственно в окне запроса в режиме SQL. Для подчиненного запроса пользователь должен ввести инструкцию SQL в строку Поле или Условие отбора в бланке запроса.

Основные операторы языка SQL.

Data Definition Language (DDL).

Эта составляющая языка содержит операторы, позволяющие создавать, модифицировать и уничтожать базы данных и объекты внутри них (таблицы, представления) (см. таблицу 1).