- •Введение
- •1. Создание и изменение запросов
- •1.1. Основные параметры запросов
- •1.1.1. Объединение в запросе данных из нескольких таблиц
- •1.1.2. Использование условия отбора в запросах
- •1.1.3. Вычисления в запросе
- •1.1.4. Использование символа звездочки в бланке запроса
- •1.1.5. Запрет на вывод в запросе повторяющихся записей
- •1.1.6. Отображение в запросе максимальных или минимальных значений
- •1.2. Основные типы запросов
- •1.2.1. Запрос на выборку
- •1.2.2. Запросы на изменение и их использование
- •1.2.3. Перекрестный запрос
- •1.2.4. Запрос с параметрами
- •1.2.5. Запрос sql
- •2. Оптимизация запросов
- •Выполнение работы
- •2. Создание параметрического запроса.
- •2.1. Запрос Продажи по сотрудникам за выбираемый период.
- •3. Создание запроса с заданием условий отбора в sql select.
- •4. Создание запроса с заданием условий отбора при помощи свойства «Набор значений».
- •5. Создание запроса с вычислением итогового значения.
- •6. Создание запроса, в расчетах которого использованы результаты другого запроса.
- •7. Создание перекрестного запроса.
- •9.Запрос на создание таблицы.
- •10. Создание запроса на добавление.
- •11. Создание запроса на обновление.
- •12. Создание запроса на удаление.
- •13. Проведите анализ быстродействия созданных запросов. Контрольные вопросы
- •Литература
1.2.5. Запрос sql
Запрос SQL - это запрос, создаваемый при помощи инструкций SQL. Примерами запросов SQL могут служить запросы на объединение, запросы к серверу, перекрестные и подчиненные запросы. В лабораторной работе рассматривается запрос на объединение.
Этот тип запроса комбинирует поля (столбцы) из одной или нескольких таблиц или запросов в одно поле в результатах запроса. Например, если шесть поставщиков ежемесячно посылают новые списки оборудования, то с помощью запроса на объединение эти списки можно объединить в один. А затем результаты поместить в новую таблицу, созданную с помощью запроса на создание таблицы, основанного на запросе на объединение. Запросы на объединение позволяют вводить в одно поле таблицы данные из соответствующих полей двух или нескольких таблиц или запросов. При запуске запроса на объединение возвращаются записи из соответствующих полей всех включенных в запрос таблиц или запросов.
Для того чтобы создать запрос на объединение, комбинирующий в полях данные из двух или нескольких таблиц, необходимо выполнить следующие действия.
В окне базы данных выберите вкладку Запросы и нажмите кнопку Создать.
В диалоговом окне Новый запрос выберите в списке пункт Конструктор и нажмите кнопку OK.
Не добавляя таблицы или запросы, нажмите кнопку Закрыть в диалоговом окне Добавление таблицы.
В меню Запрос выберите команду Запрос SQL и подкоманду Объединение.
Введите инструкции SQL SELECT, которые комбинируются с помощью операции UNION, если не требуется возвращать повторяющиеся записи, или с помощью операции UNION ALL для возвращения всех записей, в том числе и повторяющихся.
Например, в следующем запросе на объединение отбираются все названия организаций и городов из таблиц «Поставщики» и «Клиенты» и выполняется сортировка по названием городов:
SELECT Название, Город
FROM Поставщики
UNION SELECT Название, Город
FROM Клиенты
ORDER BY Город;
Примечание. Все инструкции SELECT должны возвращать одинаковое число полей в том же порядке. Соответствующие поля должны иметь совместимые типы данных, с одним исключением: допускается объединение в одном поле значений полей типа «Числовой» и «Текстовый».
Для выполнения сортировки в запросе на объединение добавьте вслед за последней инструкцией SELECT предложение ORDER BY. В предложении ORDER BY укажите поле, по которому проводится сортировка; это поле должно быть указано в первой инструкции SELECT.
Для просмотра результатов запроса нажмите кнопку Вид на панели инструментов.
2. Оптимизация запросов
Существует ряд способов ускорения выполнения запросов. В дополнение к перечисленным ниже приемам конкретные запросы в базе данных могут быть исследованы с помощью анализатора быстродействия.
Производите сжатие баз данных. Это повысит быстродействие запросов, так как при сжатии происходит преобразование записей в таблице таким образом, чтобы они находились на соседних страницах базы данных, упорядоченные по ключу таблицы. Это повысит скорость отбора записей в таблице, так как количество читаемых страниц базы данных с целью отбора записей будет минимальным. После сжатия базы данных запустите каждый запрос, чтобы скомпилировать его, используя обновленные характеристики таблицы.
Индексируйте все поля, используемые для определения условий отбора в запросе, а также поля на обеих сторонах объединения или создайте связь между этими полями. При создании связей ядро базы данных Microsoft Jet создает индекс внешнего ключа, если он еще не создан; в противном случае, используется существующий индекс.
При описании полей таблицы выбирайте типы данных минимального размера, достаточные для содержащихся в поле данных. Кроме того, для полей, участвующих в объединении, следует выбирать одинаковые или совместимые типы данных, такие как тип «Счетчик» и числовой тип (если для свойства Размер поля (FieldSize) задано значение Длинное целое).
При создании запроса не добавляйте лишние поля в запрос. Снимите флажок Вывод на экран для полей, используемых в условиях отбора, если не предполагается вывод в запросе содержимого этих полей.
Если в качестве значения для свойства Источник записей (RecordSource) формы или отчета задана инструкция SQL, то следует сохранить ее как запрос, а затем указать в качестве источника записей имя запроса.
Старайтесь не использовать вычисляемые поля в подчиненных запросах. Необходимость расчета выражения при добавлении запроса с вычисляемыми полями в другой запрос замедляет выполнение запроса верхнего уровня. Если в результатах запроса необходимо присутствие выражений, то следует поместить их в элементе управления в форме или отчете.
При группировке записей по значениям полей, участвующих в объединении, определяйте условие группировки в ячейке Групповая операция для поля в той же таблице, в которой находится поле, для которого выполняются расчеты статистических функций. Например, если рассчитывается итоговое значение поля «Количество» в таблице «Заказано», а записи группируются по полю «КодЗаказа», то условие группировки следует определить для поля «КодЗаказа» в таблице «Заказано», а не для поля «КодЗаказа» в таблице «Заказы». Если условие группировки определить для поля «КодЗаказа» в таблице «Заказы», то сначала будут объединены все записи, а потом выполнен расчет статистических функций, вместо того, чтобы сделать наоборот, сначала проведя расчет, а потом объединив только необходимые поля.
По возможности избегайте определения в запросах условий отбора для вычисляемых и неиндексированных полей. Используйте для условий отбора выражения, позволяющие оптимизировать запрос.
Если условия отбора ограничивают значения полей, используемых в объединении таблиц с отношением «один-ко-многим», проверьте, будет ли запрос выполняться быстрее, при определении условий для поля на стороне «один», чем при их определении на стороне «многие». Иногда после определения в запросе условий для поля на стороне «один» вместо условия на стороне «многие» запрос выполняется быстрее.
Индексируйте поля, используемые для сортировки.
Если не предполагается частое изменение данных, создавайте таблицы по результатам запроса с помощью запросов на создание таблиц. Создавайте формы, отчеты и другие запросы на базе результирующих таблиц, а не на базе исходных запросов, а также убедитесь что правильно проведена индексация.
Старайтесь не использовать статистические функции по подмножеству, например функцию Dlookup, в запросе, в котором производится обращение к табличным данным. Статистические функции по подмножеству довольно специфичны для Microsoft Access, поэтому ядро базы данных Microsoft Jet не может оптимизировать использующие их запросы. Вместо этого добавляйте таблицу в запрос или создавайте подчиненный запрос.
При создании перекрестного запроса по возможности используйте постоянные заголовки столбцов.
Применяйте операторы Between...And, In и = к индексированным полям.
