запросы по образцу это
MS Access. Работа с данными при помощи запросов
Понятие запроса. Основные типы запросов
Создание запросов в режиме конструктора
Вычисления в запросах
Параметрические запросы
Перекрестный запрос
Запрос на изменение
Запросы в СУБД Access
Запрос — объект базы данных, который используется для извлечения информации из одной или нескольких таблиц или для выполнения определенных действий с данными.
По способу формирования запросы можно разделить на два вида:
В действительности любой запрос в Microsoft Access реализуется с помощью языка SQL. И хотя большинство запросов можно создавать в режиме конструктора, используя возможности запроса по образцу, каждый созданный запрос хранится в виде инструкции SQL. При создании запроса по образцу Microsoft Access автоматически формирует соответствующий SQL-запрос. Можно просмотреть инструкцию SQL для существующего запроса и внести в нее изменения. В этом случае автоматически будет обновляться определение соответствующего запроса по образцу в режиме конструктора.
По результатам действий и особенностям выполнения запросы можно разделить следующим образом:
Создание запросов в режиме конструктора
Для создания запросов по образцу используется режим конструктора. После определения таблиц (или запросов), на основе которых будет создаваться новый запрос, он будет открыт в режиме конструктора. Окно конструктора запросов состоит из двух частей.
В верхней части окна находятся списки полей тex таблиц или запросов, на основе которых строится данный запрос, в нижней части окна располагается бланк запроса.
Каждая строка бланка запроса выполняет определенную функцию:
Первым шагом построения запроса является выбор полей. Необходимые поля можно выбрать несколькими способами:
Иногда требуется включить в запрос все поля исходной таблицы. Для этого необходимо сделать двойной щелчок мышыо по строке заголовка соответствующего списка полей, выделяя таким образом сразу все поля, и перенести их одновременно в бланк запроса. При этом каждое поле будет помещено в отдельный столбец. Можно воспользоваться другим способом. В начале каждого списка полей, приведенных в верхней полонине окна, находится символ *, который означает «все поля». Для того чтобы включить в запрос все поля таблицы, можно просто перенести * в бланк запроса. В этом случае имя поля в бланке запроса будет содержать имя таблицы, за которым следует точка, а затем — символ * (например, Заказы.*), что означает выбор всех полей исходной таблицы.
У метода переноса * есть одно существенное достоинство. Если в структуре исходной таблицы производятся какие-либо изменения, например, добавляется новое поле, запрос будет автоматически изменен (при использовании первого способа запрос выбирает только те поля, которые были перенесены в бланк запроса. Однако если необходимо определить условие отбора, придется дополнительно добавить отдельные поля в бланк запроса, а чтобы они дважды не включались в выберу снять для соответствующих полей флажки Вывод на экран.
При выполнении запроса в качестве заголовков столбца динамической таблицы используются имена выбранных полей. Для переименования поля в результирующей динамической таблице необходимо установить текстовый курсор перед именем поля в строке Поле бланка запроса и ввести новое имя с двоеточием. В результате получится следующая конструкция: Новое имя: Старое имя поля.
Обычно Microsoft Access выводит записи в том порядке, в каком они выбираются из базы данных. Можно изменить последовательность вывода данных, определив ее порядок в строке Сортировка. При сортировке по нескольким полям порядок обработки полей определяется их положением в бланке запроса: сначала сортируются значения в крайнем левом поле и далее слева направо.
По умолчанию Microsoft Access выводит все поля, вклкюченные в бланк запроса. Если поле используется только для оп ределения условия выбора данных, для него необходимо снять флажок в строке Вывод на экран, щелкнув мышью в соотвествующей ячейке.
Выражение, которое указывает, какие записи необходимо включить в динамическую таблицу при выполнении запроса вводится в строку Условие отбора для поля, по которому это условие необходимо проверить. Для задания условий отбора можно использовать операторы меньше ( ), больше или равно (>=), не равно (<>), равно (=), Like (выбор по маске), Between (между), In (в интервале), And (и), Or (или) и другие, а также имена обьектов, константы и функции.
Завершение ввода условия выполняется нажатием клавиши Enter или просто переходом к другой ячейке бланка запроса с помощью клавиш управления курсором или мыши. Мicrosoft Access проводит синтаксический анализ заданного выражения. Например, если было введено значение текстового поля то это выражение будет представлено в кавычках. Если выражение не содержит никакого оператора, Microsoft Access будет исходить из того, что подразумевается оператор = или Like.
Допускается использование нескольких условий отбора, которые можно задать как для разных полей, так и для одного поля. Для создания сложных условий выбора данных используются логические операторы And и Or. Если условия отбора связаны оператором And, запись выбирается только в случае выполнения всех условий. Если же условия отбора связаны оператором Or, запись выбирается при выполнении хотя бы одного из всех условий. При определении нескольких условий отбора, связанных оператором And, для различных полей необходимо просто задать условие в строке Условие отбора для каждого из полей, образующих критерий выбора данных. Если же при определении нескольких условий поместить их в различные строки — строку Условие отбора и строку или — Microsoft Acces будет использовать Or-связь. В результате условия, расположенные в одной строке, связываются оператором And, в разных строках — оператором Or.
Т.о., при формировании условия отбора в запросах могут использоваться:
Подстановочные символы:
MS Access. Работа с данными при помощи запросов
Основные типы запросов
Запрос — объект базы данных, который используется для извлечения информации из одной или нескольких таблиц или для выполнения определенных действий с данными.
По способу формирования запросы можно разделить на два вида:
В действительности любой запрос в Microsoft Access реализуется с помощью языка SQL. И хотя большинство запросов можно создавать в режиме конструктора, используя возможности запроса по образцу, каждый созданный запрос хранится в виде инструкции SQL. При создании запроса по образцу Microsoft Access автоматически формирует соответствующий SQL-запрос. Можно просмотреть инструкцию SQL для существующего запроса и внести в нее изменения. В этом случае автоматически будет обновляться определение соответствующего запроса по образцу в режиме конструктора.
По результатам действий и особенностям выполнения запросы можно разделить следующим образом:
Создание запросов в режиме конструктора
Для создания запросов по образцу используется режим конструктора. После определения таблиц (или запросов), на основе которых будет создаваться новый запрос, он будет открыт в режиме конструктора. Окно конструктора запросов состоит из двух частей.
В верхней части окна находятся списки полей тex таблиц или запросов, на основе которых строится данный запрос, в нижней части окна располагается бланк запроса.
Каждая строка бланка запроса выполняет определенную функцию:
Первым шагом построения запроса является выбор полей. Необходимые поля можно выбрать несколькими способами:
Иногда требуется включить в запрос все поля исходной таблицы. Для этого необходимо сделать двойной щелчок мышыо по строке заголовка соответствующего списка полей, выделяя таким образом сразу все поля, и перенести их одновременно в бланк запроса. При этом каждое поле будет помещено в отдельный столбец. Можно воспользоваться другим способом. В начале каждого списка полей, приведенных в верхней полонине окна, находится символ *, который означает «все поля». Для того чтобы включить в запрос все поля таблицы, можно просто перенести * в бланк запроса. В этом случае имя поля в бланке запроса будет содержать имя таблицы, за которым следует точка, а затем — символ * (например, Заказы.*), что означает выбор всех полей исходной таблицы.
У метода переноса * есть одно существенное достоинство. Если в структуре исходной таблицы производятся какие-либо изменения, например, добавляется новое поле, запрос будет автоматически изменен (при использовании первого способа запрос выбирает только те поля, которые были перенесены в бланк запроса. Однако если необходимо определить условие отбора, придется дополнительно добавить отдельные поля в бланк запроса, а чтобы они дважды не включались в выберу снять для соответствующих полей флажки Вывод на экран.
При выполнении запроса в качестве заголовков столбца динамической таблицы используются имена выбранных полей. Для переименования поля в результирующей динамической таблице необходимо установить текстовый курсор перед именем поля в строке Поле бланка запроса и ввести новое имя с двоеточием. В результате получится следующая конструкция: Новое имя: Старое имя поля.
Обычно Microsoft Access выводит записи в том порядке, в каком они выбираются из базы данных. Можно изменить последовательность вывода данных, определив ее порядок в строке Сортировка. При сортировке по нескольким полям порядок обработки полей определяется их положением в бланке запроса: сначала сортируются значения в крайнем левом поле и далее слева направо.
По умолчанию Microsoft Access выводит все поля, вклкюченные в бланк запроса. Если поле используется только для оп ределения условия выбора данных, для него необходимо снять флажок в строке Вывод на экран, щелкнув мышью в соотвествующей ячейке.
Выражение, которое указывает, какие записи необходимо включить в динамическую таблицу при выполнении запроса вводится в строку Условие отбора для поля, по которому это условие необходимо проверить. Для задания условий отбора можно использовать операторы меньше ( ), больше или равно (>=), не равно (<>), равно (=), Like (выбор по маске), Between (между), In (в интервале), And (и), Or (или) и другие, а также имена обьектов, константы и функции.
Завершение ввода условия выполняется нажатием клавиши Enter или просто переходом к другой ячейке бланка запроса с помощью клавиш управления курсором или мыши. Мicrosoft Access проводит синтаксический анализ заданного выражения. Например, если было введено значение текстового поля то это выражение будет представлено в кавычках. Если выражение не содержит никакого оператора, Microsoft Access будет исходить из того, что подразумевается оператор = или Like.
Допускается использование нескольких условий отбора, которые можно задать как для разных полей, так и для одного поля. Для создания сложных условий выбора данных используются логические операторы And и Or. Если условия отбора связаны оператором And, запись выбирается только в случае выполнения всех условий. Если же условия отбора связаны оператором Or, запись выбирается при выполнении хотя бы одного из всех условий. При определении нескольких условий отбора, связанных оператором And, для различных полей необходимо просто задать условие в строке Условие отбора для каждого из полей, образующих критерий выбора данных. Если же при определении нескольких условий поместить их в различные строки — строку Условие отбора и строку или — Microsoft Acces будет использовать Or-связь. В результате условия, расположенные в одной строке, связываются оператором And, в разных строках — оператором Or.
Таким образом, при создании запросов на выборку в режиме конструктора можно выделить следующие этапы:
При создании параметрического запроса прежде всею формируется обычный запрос на выборку. В ячейку строкиусловие отбора для заданного поля вводится необходимый оператор и имя параметра, заключенное в квадратные скобки. Это имя выводится в диалоговом окне при выполнении запроса, поэтому в качестве имени параметра удобно использовать какую-либо содержательную фразу или приглашение на ввод данных. В одном запросе можно установить несколько параметров, однако каждый параметр должен иметь уникально содержательное имя.
Дополнительно, выполнив команду Запрос / Параметры, в диалоговом окне Параметры запроса можно перечислить имена всех параметров, используемых в запросе, и для каждого параметра определить тип данных. Следует иметь в виду, что текст, введенный в качестве имени параметра в бланке запрос должен в точности соответствовать тексту, введенному в диалоговое окно Параметры запроса при определении типа данных параметров. В противном случае Microsoft Access воспринимает их как два разных параметра. При удалении параметра из бланка запроса необходимо удалить его и из диалогового окна Параметры запроса.
При формировании условия отбора в запросах могут использоваться:
Подстановочные символы:
Язык запросов по образцу QBE
Вы будете перенаправлены на Автор24
С целью повышения эффективности обработки данных, хранящихся в БД, применяются запросы, которые позволяют выполнять множественную обработку данных (одновременный ввод, редактирование и удаление множества записей, а также выбор данных из таблиц).
Запрос – требование, описанное специальным образом, которое определяет состав операций выборки, удаления или изменения хранимых данных, выполняющихся над БД.
Для выполнения запросов средствами разных СУБД чаще всего используют 2 основных языка описания запросов:
Главным отличием между этими языками является способ формирования запросов: язык QBE позволяет формировать запрос вручную или визуально, а SQL программирует запрос.
Характеристика языка QBE
Теоретическую основу языка QBE составляет реляционное исчисление доменов. С помощью языка QBE можно создавать сложные запросы к базе данных, заполняя предлагаемую СУБД запросную форму. Данный способ создания запросов позволяет получить высокую наглядность и не требует указывать алгоритм выполнения операции. Каждая современная реляционная СУБД содержит свой вариант QBE.
Язык QBE позволяет создавать однотабличные и многотабличные (которые выбирают или обрабатывают данные из более, чем одной связанных таблиц) запросы.
Запросы на языке QBE позволяют выполнять основные операции:
В результате выполнения запроса создается новая таблица, которая называется ответной, или обновленная исходная таблица.
Все операции, кроме вычислений, можно производить безусловно или по условиям, которые задаются логическими выражениями. Вычисления над данными выполняются с помощью арифметических выражений и создают в ответных таблицах новые поля, которые называют вычисляемыми.
Готовые работы на аналогичную тему
Запросная форма представляется в виде таблицы с именем и названиями полей, которые совпадают соответственно с именем и названиями полей использующейся исходной таблицы.
Современные СУБД (например, Visual FoxPro, Access) многие действия по созданию запросов на языке QBE позволяют выполнять визуально с помощью мыши.
Первоначальный вариант QBE
Первое описание QBE было предложено в 1975-1977 гг. М.М. Злуффом.
Рассмотрим таблицы базы данных, которая используется в торговле фирмой, продающей несколько видов товаров. База данных содержит 4 таблицы:
Чтобы указать системе необходимость включения какого-либо поля в ответную таблицу используется параметр Р. – напечатать.
Можно записать запрос на выборку, например, всех зеленых товаров:
Словесно запрос формулируется так: «Вывести все товары XX, которые имеют зеленый цвет». Здесь элемент примера XX не является обязательным, т.е. он может быть опущен. Обязательными элементы примера являются при записи логических условий и при выполнении связывания таблиц в запросах.
Пустые колонки из шаблона могут быть удалены.
Столбец СТОИМОСТЬ не используется, поэтому можно записать шаблон таким образом:
После того, как шаблон заполнен, чтобы получить результат нужно нажать соответствующую клавишу, например Enter, после чего начнется выполнение запроса.
Результат выполнения рассмотренного запроса:
Характеристика языков QBE современных СУБД
Основными отличиями языков QBE современных СУБД от языка, который предложил М.М. Злуфф являются незначительные изменения в интерпретации отдельных реляционных операций, введение дополнительных операций и изменение формы представления языка.
Например, в системе Paradox операция печати Р. заменена методом выбора в запросной форме полей с помощью флажков, которые расположены в начале каждого ее поля.
Запросные формы в MS Access наглядно показывают конструирование запроса. В процессе подготовки запросных форм диалоговое окно (рисунок 1) состоит из двух частей: верхняя часть отображает взаимосвязь исходных таблиц, а нижняя – остальную информацию о запросе по каждому из полей.
Создание запросов в БД
Запрос строится на основе одной или нескольких взаимосвязанных таблиц, позволяя комбинировать содержащуюся в них информацию. При этом могут использоваться как таблицы базы данных, так и сохраненные таблицы, полученные в результате выполнения других запросов. Кроме того, запрос может строиться непосредственно на другом запросе с использованием его временной таблицы с результатами. Запрос QBE содержит схему данных, включающую используемые таблицы и бланк запроса. При конструировании запроса достаточно выделить и перетащить с помощью мыши необходимые поля из таблиц, представленных в схеме данных запроса, в бланк запроса и ввести условия отбора записей.
Назначение и виды запросов
Запрос позволяет выбрать необходимые данные из одной или нескольких взаимосвязанных таблиц, произвести вычисления и получить результат в виде виртуальной таблицы. Полученная таблица может использоваться в качестве источника данных в следующих запросах, формах, отчетах, страницах доступа к данным. Через запрос можно производить обновление данных в таблицах, добавление и удаление записей.
С помощью запроса можно выполнить следующие виды обработки данных:
Многотабличный запрос позволяет сформировать записи результата путем объединения взаимосвязанных записей из таблиц БД и включения нужных полей из нескольких таблиц. В частности, при объединении двух нормализованных связанных одно-многозначными отношениями таблиц результирующая запись образуется на основе записи подчиненной таблицы, в которую добавляются поля из связанной записи в главной таблице. Заметим, что подобное объединение формирует новую таблицу, которая не является нормализованной. Выбранный тип объединения таблиц задается при установлении связи между таблицами и определяет способ формирования записей запроса. По умолчанию связи устанавливаются с параметром объединения первого типа: объединение только тех записей, в которых значения связанных полей обеих таблиц совпадают.
Последовательное выполнение ряда запросов по образцу позволяет решать достаточно сложные задачи, не прибегая к программированию.
В Access может быть создано несколько видов запроса.
Создание запроса
Лучшим способом создания запроса является использование графического конструктора — одного из наиболее мощных средств Access. Основные принципы конструирования различных запросов заложены в технике конструирования запроса на выборку, являющегося основой всех видов запроса.
Запрос на выборку позволяет достаточно просто выбрать данные из одной или нескольких взаимосвязанных таблиц. Результаты выполнения запроса отображаются в виде временной таблицы, существующей до закрытия запроса. Поля, составляющие записи этой таблицы, указываются пользователем в запросе. Записи таблицы результатов запроса формируются на основе записей в исходных таблицах и связей между этими таблицами и фильтруются в соответствии с заданными в запросе условиями отбора.
Таблица результатов запроса может применяться при дальнейшей обработке данных. В запросе на выборку могут использоваться не только таблицы базы данных, но и ранее созданные запросы, а вернее таблицы, являющиеся результатом их выполнения. При этом нет необходимости сохранять таблицы, получаемые в результате выполнения ранее созданных запросов.
Однако в ряде случаев непосредственное использование в запросе другого запроса невозможно. Тогда необходимо преобразовать включаемый запрос в запрос на создание таблицы. Этот запрос, в отличие от запроса на выборку, сохраняет результат в новой таблице БД, после чего эта таблица может включаться в состав таблиц для построения запроса.
Результаты выполнения запроса выводятся в режиме таблицы. Окно запроса в режиме таблицы аналогично окну просмотра таблицы базы данных. В этом режиме становится активной панель инструментов Запрос в режиме таблицы.
Таблица в режиме таблицы
Несмотря на то, что поля результирующей таблицы принадлежат, как правило, нескольким таблицам базы данных, с ними можно работать так, как если бы они принадлежали одной таблице. Можно изменить данные в таблице результатов запроса на выборку, и сделанные изменения будут внесены в базовые таблицы. Особенно важно, что, несмотря на дублируемость данных, возникающую в результате объединения записей таблиц, изменение одного данного в таблице запроса автоматически приводит к изменению всех повторяющихся в таблице запроса значений. Это определяется тем, что через таблицу запроса меняется значение в исходной таблице, где оно представлено один раз.
Для выполнения необходимых действий при создании запросов используются команды меню или панель инструментов Конструктор запросов. Окно конструктора запросов разделено на две панели. Верхняя панель содержит схему данных запроса, которая включает выбранные поля данного запроса таблицы. Таблицы представлены списками полей. Нижняя панель является бланком запроса по образцу – QBE, который необходимо заполнить.
Схема данных запроса
В окне конструктора запроса отображаются выбранные таблицы со списком полей и одно-многозначные связи между ними, имеющиеся в схеме БД. Первая строка в списке полей, отмеченная звездочкой (*), обозначает все множество полей таблицы. Кроме того, если таблицы имеют поля с одинаковыми именами и типами данных, Access автоматически устанавливает связи для объединения таких таблиц, даже когда связи не были установлены в схеме данных. Пользователь может самостоятельно установить не установленные автоматически связи, переместив с помощью мыши, задействованные в связи поля из одного списка полей в другой.
При использовании в запросе других запросов или таблиц, не представленных в схеме данных базы, с ними также могут быть установлены связи-объединения.
Бланк запроса по образцу
Бланк запроса по образцу представлен в виде таблицы на нижней панели окна запроса. Такая таблица предназначена для конструирования структуры таблицы результата запроса и условий выборки данных из исходных таблиц. Первоначально эта таблица пуста.
Каждый столбец бланка относится к одному запрашиваемому полю. Поля могут использоваться для включения в таблицу запроса, для задания сортировки, для задания условий отбора записей, а также для выполнения вычислений в записях таблицы.
При заполнении бланка запроса:
В ряде случаев в бланке запроса наряду с именем поля необходимо отображать имя соответствующей таблицы, например, когда поля имеют одинаковые имена в разных таблицах. Для отображения имен таблиц в строке бланка следует выбрать команду Вид | Имена таблиц или нажать соответствующую кнопку на панели конструктора запросов. В результате выполнения команды в бланке появится строка Имя таблицы.
Поля бланка запроса
Каждый столбец бланка запроса соответствует одному из полей таблиц, на которых строится запрос. Кроме того, здесь может размещаться вычисляемое поле, значение которого вычисляется на основе значений других полей записи результата, или итоговое поле для групп записей, использующее одну из встроенных групповых функций Access. Для включения требуемых полей таблиц в соответствующие столбцы запроса можно воспользоваться следующими приемами:
Модификация запроса
Добавление таблицы в схему данных запроса осуществляется с помощью команды меню Запрос | Добавить таблицу или нажатием соответствующей кнопки панели Конструктор запросов. Команда добавления может быть выполнена также через контекстное меню, вызываемое в режиме схемы данных запроса.
Добавление поля в бланк запроса осуществляется посредством одного из рассмотренных выше действий, например, перемещением с помощью мыши имени поля из таблицы в схеме данных в нужное место бланка. Все столбцы полей справа от него передвинутся на один столбец вправо.
Удаление поля в бланке запроса требует предварительного выделения соответствующего столбца. Для этого следует переместить курсор в область маркировки столбца, где он примет вид направленной вниз черной стрелки, и щелкнуть кнопкой мыши. Далее нажмите клавишу или выберите пункт меню Правка | Удалить столбцы.
Для перемещения поля в бланке запроса выделите с помощью мыши соответствующий столбец и переместите его на новую позицию. Столбец, на место которого перемещен новый, и все столбцы справа от него будут сдвинуты вправо.