Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Практическая работа с базами данных в OpenOffice.org Base. Учебное пособие
.pdf
31
Запрос в отличие от фильтра можно сохранить, задав ему имя для дальнейшего использования. Если вам неоднократно приходится обращаться к отобранным данным, рекомендуется составлять запрос. Запрос можно использовать
как источник данных для форм и отчетов.
5.1. Создание запросов по образцу
Для создания запросов в современных СУБД предназначены два языка:
• QBE (Query By Example) - запрос по образцу;
• SQL (Structured Query Language) - структурированный язык запросов.
Наиболее просто и наглядно запросы создаются с помощью языка QBE.
Запросы на этом языке организуются путем интерактивного заполнения специальных запросных форм. Создание запросов с помощью языка SQL требует
программирования запроса с помощью операторов и функций данного языка. В
данной работе рассматриваются только QBE–запросы.
Для создания QBE–запроса необходимо в главном окне БД выбрать вкладку Запросы и соответствующую ей задачу Создать запрос в режиме дизайна.
После этого появятся два окна: окно построителя запросов и окно добавления
таблиц (рис. 23).
Рис. 23. Окна построителя запросов и добавления таблиц

32
Далее необходимо в окне добавления таблиц выбрать и добавить в верхнюю часть окна построителя запросов нужные таблицы, после чего окно добавления таблиц закрывается. Связи между таблицами берутся из схемы данных, созданной ранее, и устанавливаются автоматически.
Нижняя часть построителя запросов состоит из ряда строк (рис. 23), назначение которых следующее:
Поле - здесь располагается название отобранного для запроса поля;
Псевдоним - альтернативное название поля для ответной таблицы;
Таблица - название таблицы, из которой берется поле;
Сортировка - для указания того, нужна ли сортировка по полю, и если
нужна, то какая; при выполнении щелчка на этой строке появляется поле списка с перечнем способов сортировки;
Видимый - флажок, указывающий на то, будет ли показан данный столбец
в ответной форме или он введен для иных целей (участвует только в выражении
отбора записей и т.п.);
Функция - для выбора групповой операции;
Критерий - для задания условия отбора;
Или - строки для создания сложного условия отбора.
Строки Критерий и ИЛИ предназначены для ввода условий (критериев)
отбора в запрос. Условия отбора указываются для одного или нескольких полей
и представляют собой логическое выражение.
В логических выражениях используются логические операторы AND
(―И‖), OR (―ИЛИ‖) и NOT (―НЕ‖), операторы отношений (<, <=, >, >=, =, < >),
команды OOo.
Логические операторы AND и OR в QBE–запросах в отличие от языка SQL
в условиях отбора явно не указываются. Принято следующее соглашение:
условия, находящиеся в одной строке, связываются логическим оператором
AND (условия выполняются одновременно), а условия в разных строках озна-

33
чают выполнение логического оператора OR (выполняется хотя бы одно из
условий).
Операторы отношений сравнивают содержимое поля с указанным условием.
Команды OOo, используемые в условиях отбора:
•
LIKE x – поле данных содержит указанное выражение x; выражение x
может быть текстовым и содержать символы подстановки ‗?‘ и ‗*‘;
• NOT LIKE x – поле данных не содержит указанное выражение x; вы-
ражение x может быть текстовым и содержать символы подстановки ‗?‘ и ‗*‘;
• BETWEEN x AND y – поле данных содержит значение, находящееся
в интервале [x, y];
• NOT BETWEEN x AND y – поле данных не содержит значения в ин-
тервале [x, y];
• IS EMPTY – поле данных пустое (NULL);
• IS NOT EMPTY – поле данных не пустое;
• IN (a; b; c…) – поле данных содержит одно из указанных выражений
a, b, c,…, которые могут быть числами или символами; результат запроса опре-
деляется оператором OR;
• NOT IN (a; b; c…) – поле данных не содержит указанных выражений
a,b,c,…;
• = TRUE – поле данных имеет значение TRUE (ИСТИНА);
• = FALSE – поле данных имеет значение FALSE (ЛОЖЬ).
5.2. Примеры построения запросов
Рассмотрим ряд примеров, поясняющих технологию построения запро-
сов.
Пример 1. Создать запрос, формирующий список студентов, фамилии
которых начинаются на ―C‖ и родившихся в 1991 – 1992 годах. В результате запроса вывести таблицу, содержащую поля ФИО, Группа, Дата рождения.
Условие отбора совпадает с условием поиска в фильтре по умолчанию для ана-

34
логичной задачи, см. рис. 21: ФИО=С* AND Дата рождения >= 01.01.1991
AND Дата рождения <= 31.12.1992. Сравнить задание условия отбора в запро-
се с условием поиска в фильтре по умолчанию.
1. В главном окне БД Сессия на вкладке Запросы выберите задачу Со-
здать запрос в режиме дизайна. Откроются окна построителя запросов и добавления таблиц (рис. 23).
2. В окне добавления таблицы выберите из списка таблицу Студент и
нажмите кнопку «Добавить». Закройте окно добавления таблицы.
3. В таблице Студент дважды щелкните по следующим полям в указан-
ной последовательности: ФИО, Группа, Дата рождения, Дата рождения.
4. Снимите в строке Видимый флажок для последнего поля Дата рожде-
ния (флажок указывает, будет ли показан данный столбец в ответной форме).
5. Введите в строке Критерий условие отбора. Напомним, что апострофы
и символы # подставляются автоматически при нажатии клавиши «Enter» или
щелчке по другой ячейке. Результаты проделанных действий представлены на
рис. 24.
Рис. 24. Запросная форма примера 1

35
6. Просмотрите запрос, нажав клавишу «F4» (рис. 25).
Рис. 25. Просмотр результатов выполнения запроса
Повторное нажатие клавиши «F4» восстанавливает запросную форму для
возможных ее исправлений. Проверьте.
7. Закройте окно построителя запросов и в появившемся окне сохранения
запроса задайте ему имя Пример1 для дальнейшего использования.
8. Если вы хотите убедиться, правильно ли расставлены в условии отбора
логические операторы AND (―И‖) или OR (―ИЛИ‖), перейдите в режим SQL.
Для этого щелкните правой кнопкой мыши по значку запроса Пример1 и выберите в контекстном меню команду Редактировать в режиме SQL. Откроется
окно построителя запросов с условием отбора на языке SQL (рис. 26). Просмотрите условие WHERE. Закройте окно построителя запросов.
Рис. 26. Условие отбора на языке SQL
9. Просмотреть запрос можно и из главного окна БД Сессия. Дважды
щелкните по значку запроса Пример1 и просмотрите ответную таблицу. При
изменении или добавлении записей в таблице Студент ответная таблица также
будет изменена. Закройте окно Представление данных таблицы.

36
10. Щелкните правой кнопкой мыши по значку запроса Пример1 и выберите в контекстном меню команду Изменить. Откроется окно построителя запросов, в котором можно произвести необходимые изменения.
Рассмотрим другой вариант задания условия отбора для рассматриваемой
задачи.
11. Удалите правый столбец Дата рождения, для чего выделите его
щелчком по серому полю над заголовком и нажмите клавишу «Delete».
12. Введите новое условие отбора BETWEEN 01.01.1992 AND 31.12.1992.
Результаты проделанных действий представлены на рис. 27.
13. Просмотрите запрос, нажав клавишу «F4». Результаты просмотра запроса совпадают с данными рис. 25.
Рис. 27. Новое условие отбора
14. Сохраните запрос под другим именем, для чего выполните команду
Файл > Сохранить как и задайте запросу имя Пример1_1.
15. Закройте окно построителя запросов.
16. Просмотрите условие WHERE в режиме SQL. Закройте окно построителя запросов.
Пример 2. Создать запрос, формирующий список студентов–мужчин,
родившихся в 1990 г. или 1993 г. В результате запроса вывести таблицу, содержащую поля ФИО, Пол, Дата рождения и отсортированную по полю Дата
рождения (например, по возрастанию). Условие отбора: (Пол=М AND Дата

37
рождения >= 01.01.1990 AND Дата рождения <= 31.12.1990) OR (Пол=М AND
Дата рождения >= 01.01.1993 AND Дата рождения <= 31.12.1993).
1. В главном окне БД Сессия на вкладке Запросы выберите задачу Создать запрос в режиме дизайна. Откроются окна построителя запросов и до-
бавления таблиц (рис. 23).
2. В окне добавления таблицы выберите из списка таблицу Студент и
нажмите кнопку «Добавить». Закройте окно добавления таблицы.
3. В таблице Студент дважды щелкните по следующим полям в указанной последовательности: ФИО, Пол, Дата рождения, Дата рождения.
4. Снимите в строке Видимый флажок для последнего поля Дата рождения.
5. Для первого поля Дата рождения установите сортировку по возраста-
нию. Для этого щелкните в ячейке на пересечении строки Сортировка и столбца Дата рождения и выберите в раскрывающемся списке сортировку по возрастанию.
6. Введите в строках Критерий и ИЛИ условие отбора. Просмотрите запрос, нажав клавишу «F4». Результаты проделанных действий представлены на
рис. 28.
Рис. 28. Условие отбора и результат запроса примера 2

38
7. Закройте окно построителя запросов и в появившемся окне сохранения
запроса задайте ему имя Пример2.
8. Просмотрите условие WHERE в режиме SQL.
9. Закройте окно построителя запросов.
Пример 3. Создать запрос, формирующий список студентов группы 112,
получивших на экзамене неудовлетворительные оценки (балл < 53) по математике или информатике. В результате запроса вывести таблицу, содержащую поля ФИО, Группа, Дисциплина, Балл и отсортированную по полю ФИО (по возрастанию). Условие отбора: (Группа=112 AND Математика < 53) OR (Груп-
па=112 AND Информатика < 53).
1. В главном окне БД Сессия на вкладке Запросы выберите задачу Создать запрос в режиме дизайна. Откроются окна построителя запросов и до-
бавления таблиц (см. рис. 23).
2. Данный запрос строится на основе трех таблиц: Студент, Экзамен и
Дисциплина. В окне добавления таблицы выбирайте последовательно из списка
таблицы Студент, Экзамен и Дисциплина, нажимая каждый раз кнопку «Добавить» (рис. 29). Связи между таблицами берутся из схемы данных, созданной
ранее, и устанавливаются автоматически. Закройте окно добавления таблицы.
3. Добавьте нужные поля в запросную форму:
• из таблицы Студент – поля ФИО и Группа;
• из таблицы Дисциплина – поле Дисциплина;
• из таблицы Экзамен – поле Балл.
4. Для поля ФИО установите сортировку по возрастанию.
5. Введите в строках Критерий и ИЛИ условие отбора. Результаты проделанных действий представлены на рис. 29.
6. Просмотрите запрос, нажав клавишу «F4». Результат выполнения запроса сравните с рис. 30.

39
Рис. 29. Запросная форма примера 3
Рис. 30. Результат запроса примера 3
7. Закройте окно построителя запросов и в появившемся окне сохранения
запроса задайте ему имя Пример3.
Пример 4. Создайте запрос с параметрами, формирующий сведения о
баллах студентов заданной группы по заданной дисциплине. В результате запроса вывести таблицу, содержащую поля ФИО, Группа, Балл, Дисциплина и
отсортированную по полю Балл (по убыванию). Условие отбора: Номер группы
AND Название дисциплины.

40
Запросы, которые представляют собой варианты базового запроса и не-
значительно отличаются друг от друга, называются параметрическими. Поля
строк Критерий и ИЛИ заполняются не конкретным условием отбора, а обращением к пользователю для ввода параметров условия отбора. Во время выполнения запроса это обращение будет адресовано пользователю, который введет параметры условия отбора. На основании введенных параметров (с учетом
других компонент, заданных в строках Критерий и ИЛИ) будет осуществляться
отбор записей. Обращение необходимо начинать с двоеточия, например
:номер_группы.
1. В главном окне БД Сессия на вкладке Запросы выберите задачу Создать запрос в режиме дизайна. Откроются окна построителя запросов и до-
бавления таблиц (рис. 23).
2. Данный запрос строится на основе трех таблиц: Студент, Экзамен и
Дисциплина. В окне добавления таблицы выбирайте последовательно из списка
таблицы Студент, Экзамен и Дисциплина, нажимая каждый раз кнопку «Добавить» (рис. 31). Закройте окно добавления таблицы.
3. Добавьте нужные поля в запросную форму: из таблицы Студент – поля ФИО и Группа, из таблицы Экзамен – поле Балл, из таблицы Дисциплина –
поле Дисциплина.
4. Для поля Балл установите сортировку по убыванию.
5. Введите в строке Критерий для поля Группа обращение
:номер_группы, а для поля Дисциплина обращение :название_дисциплины.
Между словами нельзя использовать пробелы, для их связки можно ставить
знак подчеркивания. Результаты проделанных действий представлены на рис. 31.
6. Нажмите клавишу «F4» для просмотра запроса. Откроется окно для
ввода параметров по запросу (рис. 32).
7. При выделенном параметре название_дисциплины введите в поле Зна-
чение текст Физика и нажмите кнопку «Следующий». Указатель параметра перейдет на строку номер_группы. Активизируйте щелчком поле Значение и вве-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
