- •Базы данных
- •1. Введение в базы данных
- •1.1. Базы данных и информационные системы
- •1.2. Архигсюура информационной системы
- •1.3. Системы управления базами данных
- •1.4. Локальные информационные системы
- •1.5. Способы разработки и выполнения приложений
- •1.6. Схема обмена данными при работе с бд
- •2. Модели и типы данных
- •2.1. Иерархическая модель
- •Сотоудники
- •2.2. Сетевая модель
- •2.3. Реляционная модель
- •2.4. Постреляционная модель
- •2.5. Многомерная модель
- •1996 1994 Петров Смирнов Яковлев
- •2.6. Объектно-ориентированная модель
- •2.7. Типы данных
- •3. Реляционная модель данных
- •3.1. Определение реляционной модели
- •3.2. Индексирование
- •3.3. Связывание таблиц
- •3.4. Контроль целостности связей
- •3.5. Теоретические языки запросов
- •I аспределенное Удаленное Распределен- Удаленн! 1йдо- Распределен- предстаеление представление ная функция ступ к данным наяЬд
- •4.5. Информационные системы в Интернете и интранете
- •Часть 2. I Ъоектиросанн ? и использование бд
- •7. Средства автоматизации проектирования
- •7.1. Основные определения
- •7.8. Рекомендации по применению case-систем
- •9. Дополнительные вопросы применения баз данных
- •9.1. Программно-аппаратные платформы
- •9.2. Перспективы развития субд
- •9.3. Стандартизация баз данных
- •9.4. Характеристика технологии ado.Net
- •10.1. Общая характеристика
- •10.2. Новые возможности Microsoft Access 2002
- •10.3.Средства поддержки проектирования
- •10.4. Создание основных элементов бд
- •IQdbl mdb
- •Option Compare Database Public Function funl() beep End Function
- •10.5. Работа с гиперссылками
- •10.6. Использование языка sql
- •Аргументы макрокоманды ' Инструкция sQl. Select distinctrow tof
- •10.7. Защита баз данных
- •10.9. Обслуживание баз данный
- •10.10. Репликация баз данных
- •Реплицируемые объекты
- •Реплицируемые объекты
- •10.11. Работа с мультимедиа-данными
- •Тип объекта
- •Comic Chat Boom Microsoft Graph so Music Prop pry Page 2 1 Option f ropery Page21 Ры-ndox FableВидео-клип
- •10.12. Создание файлов приложений
- •10.13. Страницы доступа к данным
- •Краткая характеристика отличий сДд от форм и отчетом
- •10.14. Разработка проекта
- •Распределение атрибутов по вариантам
- •11.1. Пользовательский интерфейс
- •11.2. Характеристика проекта
- •11.3. Компиляция и выполнение проекта
- •11.4. Разработка приложения
- •11.5. Средства интегрированной среды разработки
- •Управление параметрами среды
- •11.6. Базы данных и средства работы с ними
- •Компоненты приложений для баз данных
- •11.7. Создание таблиц базы данных
- •11.8. Создание приложения bde
- •Значения свойств компонентов
- •11.9. Работа с отчетами
- •12. Субд Visual FoxPro 8.0
- •12.1. Общая характеристика
- •12.2. Новые возможности Visual FoxPro 8.0
- •12.3. Элементы проекта
- •12.4. Интерфейс Visual FoxPro
- •12.5. Средства автоматизации разработки
- •12.6. Создание баз данных
- •12.7. Таблицы и индексы
- •12.8. Организация межтабличных связей
- •12.9. Обеспечение ссылочной целостности
- •12.10. Создание запросов
- •Variables:
- •13. Microsoft sql Server 2000
- •13.1. Характеристика sql Server
- •13.2. Язык запросов Transact-sql
- •13.3. Системные базы данных и таблицы
- •13.4. Создание баз данных
- •13.5. Работа с таблицами
- •15.1. Принципы функционирования Web-приложений
- •15.2. Архитектура Web-приложений, публикующих бд
- •15.3. Обзор Web-серверов
- •15.4. Использование Personal Web-server
- •15.5. Использование Microsoft Internet Information Server
- •15.6. Использование Apache дляMicrosoft Windows 9х/2000
- •Вы видите это вместо ожидаемой страницы?
- •15.7. Варианты создания Web-узла
- •16. Интерфейсы программирования Web-приложений
- •16.1. Общий интерфейс взаимодействия cgi
- •18. Публикация бд средствами Microsoft Access
- •18.1. Характеристика вариантов публикации
12.10. Создание запросов
После создания таблиц БД и ввода в них данных требуется организовать доступ к хранящейся в БД информации для просмотра и обработки. Одним из основных способов решения названной задачи является создание запросов.
Средства формирования запросов
Выборка информации из БД может осуществляться: с помощью команды SELECT SQL языкаVisual FoxPro, которая является аналогом соответствующей команды языкаSQL; с помощью Мастера запросов и с помощью Конструктора запроса.
Команда SELECT имеет множество возможностей (опций). Ее упрощенное представление имеет следующий вид:
SELECT СписокВыбираемыхПолей
FROM СписокТаблиц-источника данных [INTO ИмяТаблицы полу чаче- ля данных]
[WHERE УсловиеВьтборки]
[GROUP BY УсловиеГруппировки]
[ORDER BY УсловиеУпорядочивания выводимых данных]
[ТО FILE ИмяФайла | ТОPRINTER — направление вывода данных]
Квадратные скобки указывают на необязательность опции.
Конструктора запроса позволяет:
• выбирать данные из одной или нескольких таблиц, используя сложные критерии;
устанавливать временные < вязи между таблицами;
выбирать поля и записитаблиц стребуемыми данными;
выполнять вычисления с использованием выбранных данных.
Работа с Конструктором запроса сводится к заполнению форм запроса.
Результатом запроса всегда является таблица, которая может быть сохранена в массиве или в созданной новой таблице, отображена на экране или оформлена в виде отчета. Данные, содержащиеся в результирующей таблице, могут быть представлены в виде т рафика или гистограммы. Рассмотрим формирование запросов с помощью Конструктора запроса.
Для вызова Конструктора запроса после открытия БД можно воспользоваться командой File | New (файл | < Создать)системного менюVisual FoxPro. При выполнении этой команды открывается диалоговое окноNew (рис. 12.2), в котором нужно выбрать переключатель Query (Запрос)и нажать кнопкуNew File (Новый файл).В открывшемся диалоговом окне Ada Table or View (Добавить таблицу или просмотр)следует выбрать одну или несколько таблиц и нажать ОК. В результате откроется окно Конструктора запроса (рис. 12.7), содержащее выбранные таблицы, а в системном менюVisual FoxPro появится пункт Query (Запрос).
Т |Wf»p | |
» |
A |
fio |
|
stag |
|
dolgn |
|
kaf |
|
|
|
Query
Designer
ш
jd
.
3K
ffigSl J Job | Filter | Order 8y j Group By j Miscellaneous j i s
'X1
■
•
Я
m
Щ
»
:•
ивПЕгеАИ
1
Dteo.fio
!
i'
j
T_prep
stag
T_prep.
dolgn
T_prep
kaf
Functions
and expressions:
Рис. 12.7. Окно Конструктора запроса с таблицей TMPREP
После того как определена таблица (одна или несколько) для формирования запроса в диалоговом окне Конструктора необходимо:
выбрать поля, содержащие искомые данные;
» задать критерии выборки, упорядочения и группировки данных;
указать, куда выводится результат запроса.
Для решения перечисленных задач Конструктор содержит: панель для отображения таблиц, используемых в запросе (в рассматриваемом примере на ней находится одна таблица Т PREP), и вкладки (табл. 12.10).
Таблица 12.10
Назначение чклацок диалогового окна Конструктора запросов
Вкладка |
Назначение |
Fielrls |
Выборка полей в результирующую таблицу |
Join |
-Задание условий объединения таблиц |
Filter |
Задание фильтра (условий от бора записей) |
Order By |
-Задание критерия упорядочивания |
Group By |
Задание vcnoenn группировка данных |
Miscellaneous |
Дополнительные установки (признак выОорки повторяющихся значений, количество выбираемых данных) |
Поле Functions and expressions (функции и выражения) используется для включения в запрос функции или выражения.
По окончании формирования запроса в диалоговом окне Конструктора результат выполнения запроса можно оценить выполнив команду Query | Run Queiy (Запрос | выполнить запрос)системного меню
Для повторного выполнения запроса, сформированного в окне Конструктора, его необходимо сохранить. Для этого достаточно выполнить команду File | Save (сЬайп | сохранить)и в открывшемся окне указать полное имя файла, в котором будет сохранено окно с описанием запроса. В результате будет создан файл, хранящий запрос, с расширениемQPR. Теперь для повторного вы пол пения запроса достаточно открыть этот файл командой File j Open (Файл | открыть)и запустить на выполнение командой Query | Run Query (Запрос | выполнить запрос)
Выбор полей результирующей таблицы
Выбор полей результирующей таблицы выполняется с помощью вкладки Fields (Поля)диалогового окна Конструктора запросов. Рассмотрим эту процедуру на примере организации запроса 1.
Запрос 1.Составить список всех преподавателей, сведения о которых содержатся в таблицеTPREP.DBF, с указанием их стажа и должности.
Вся необходимая информация содержится в одной таблице. Выводимые записи должны быть упорядочены по полю Fio.
Поля результирующей таблицы формируются из полей исходной таблицы и вычисляемых полей. Для выбора полей исходной таблицы необходимо отобразить их в списке Selected Output (выбранные поля)вкладки выбора полей Fields (поля)(рис. 12.7). Один из способов формирования полей в результирующей таблице состоит в следующем. В окне Конструктора запросов выберем вкладкуFields (поля) и откроем при этом два списка: Available Fields (доступные поля)и Selected Output (выбранные поля)(рис. 12.7). Наша задача перенести в список Selected Output поля, используемые в запросе. При выделении в списке Available Fields (доступные поля)с помощью мыши нужного поля активизируется кюлгса Add (добавить),при нажатии которой и осуществляется перенос этого поля. Для переноса всех полей в список выбранных достаточно нажать кнопку Add All (добавить все).Если часть полей оказалась лишней, их можно удалить из списка Selected Output (выбранные поля)с помощью кнопки Remove (удалить).
Место, которое поле занимает в списке Selected Output (выбранные поля), соответствует и его месту в результирующей таблице. Для изменения расположения некоторого поля достаточно выбрать мышью маркер перемещения (слева от поля) и переместить его в нужное место.
Результаты выполнения запроса представлены на рис. 12.8.
j
Hi Query
шшш\
а
1
Fio
I
Dblfjri
Kar
J Jgf #
**шяи
5=
преп
25!
Петров
П.П.
7|
преп
2Е
|j
Сидоров
С. С.
10|доцент
251
|§!
Егоров
£ Е.
12|
профессор
251
..:
!^аглюк1
И.
j
г
ст, преп
24;
•
Не 4
Рис.
12.8. Результат яыборки полей таблицы Т
ргер
Рассмотрим процедуру упорядочения данныхв таблице на примере следующего запроса.
Запрос 2.Составить список всех преподавателей из таблицыT PREP.DBF с указанием их стажа и должности. Фамилии в списке упорядочить по алфавиту.
Для упорядочения данных используется вкладка Order By (упорядочение).В ней содержится два списка Selected Fields (выбранные поля)и
Ordering Criteria (критерий упорядочения).Для задания критерия упоря дочивания необходимо перенести в Ordering Criteria (критерий упорядочения)поля, которые будут определять порядок расположения выводимых в запросе данных. Процедура переноса аналогична рассмотренной при определении полей результирующей таблицы. Для реализации нашего первого запроса во вкладке Order By (упорядочение)выделим курсором полеTprepiio (полеfio таблицы Т ргер) и, нажав кнопку Add (добавить),перенесем его в список Ordering Criteria (критерий упорядочения).
С помощью переключателя Order Options (параметры упорядочения) для каждого выбранного поля можно установить критерий упорядочивания по возрастанию(Ascending) или по убыванию(Descending). Выберем критерий Ascending (возрастающий).Результат выполнения подготовленного описанным образом запроса будет аналогичен представленному на рисунке 12.8, но фамилии преподавателей будут следовать в алфавитном порядке.
Фильтрация записей
До сих пор в качестве результата запроса мы получали все записи исходной таблицы. Чаще возникает необходимость в просмотре части записей таблицы, удовлетворяющих определенным условиям. Процедуру отбора записей, отвечающих определенному условию, называют процедурой фильтрации записей. Для ее выполнения используется вкладка Filter (фильтр) Конструктора запроса. Рассмотрим эту процедуру на примере следующего запроса.
Запрос3. Выполнить запрос, аналогичный запросу 2, но сформировать список сведений только о преподавателях 25 кафедры.
Поля, входящие в условия отбора записей, не обязательно должны быть включены в запрос.
Для задания условия фильтрации записей выберем вкладку Filter (фильтр). Из раскрывающегося списка полей исходной таблицы в столбцеField Name (имя поля) выберем полеT prep.kaf для отбора. В спискеCriteria (критерий) выберем оператор точного сравнения (= =). Далее зададим значение поляkaf, по которому осуществляется сравнение. Для этого в полеExample (пример) введем 25. Рассматриваемый в примере запрос готов к выполнению.
В раскрывающемся списке Criteria (критепий) содержатся следующие операторы сравнения: = — равенство,Like — вхождение, = = - фактическое равенство, > - больше чем, < — меньше чем,
>= - не меньше чем, <= — не больше чем, Is NULL — совпадение сNULL, Between — в диапазоне значений,In - среди заданных значений.
Оператор = (Equal) позволяет осуществлять поиск при условии знания части первых символов в значениях поля, по которому осуществляется по иск. Эта часть символов вводился в поле столбцаExample (пример) и сравнивается со значением поля, указанного в столбцеField Name (имя поля) ОператорLike (подобие) выполняет посимвольное сравнение строки, сто ящей слева, со строкой, находящейся справа, пока она не закончится.
Операторы >, >"=, <, <= и Between (между ) можно использовать с текстовыми, цифровыми полями и полями дат. Например, для выборки преподава телей со стажем более 10 лет, достаточно в качестве условий отбора выбрать полеStag, в списке вариантов сравнения выбрать оператор >=, а в полеExample (пример) ввести 10.
При использовании оператора Between (между) начальное и конечное значение вводится через запятую. При задании диапазона для значений текстовых полей сравниваются коды символьных величин. Так, условие выбора «А, Д», помещенное в полеExample (пример) применительно к полюFio позволит выбрать из таблицы Т_Ргер всех тех преподавателей, фамилии которых начинаются с букв в данном диапазоне.
При необходимости выбора сведений о конкретных преподавателях следует использовать оператор In. В этом случае в поле столбцаFxample (пример) через запятую перечисляют я фамилии преподавателей.
Для реализации запроса с отрицанием условий сортировки, выбранных в списке Criteria, используется размещенный перед списком флажокNot.
Возможно формирование критерия отбора записей, состоящего из нескольких условий, соединяемыми операторами AND (И)илиOR (ИЛИ)из спискаLogical.
Кнопки Insert (вставить)и Remove (удалит ь)соответственно добавляют и удаляют условия из списка условий отбора записей. Чтобы вставить новое условие между существующими условиями, необходимо выделить нижнее из них и нажать кнопку Insert (оставить).В этом случае будет добавлена пустая строка перед помеченной.
В качестве критерия отбора может выступать сложное выражение, вклю чающее не только поля таблиц, но также переменные и выражения. Для фор ущрования подобных выражений может использоваться построитель выра жений Expression Builder, который вызывается при выборе элемента<Expression...> (<выражение...>)в списке Field Name (имя поля).
Организация многотабличных запросов
Для формирования многотабличного запроса неооходимо разместить в окне Конструктора запросов все участвующие в запросе таблицы и определить условия их связи. Вместе с таблицами в окне Конструктора запросов отображаются и их постоянные связи. Если необходимые постоянные связи отсутствуют, то с помощью вкладки Join (связь)организуются временные межтабличные связи.
Рассмотрим создание многотабличного запроса на следующем примере.
Запрос4. Необходимо получит ь на экране информацию о преподавателях кафедры 25 их должностях у окладах, преподавательском стаже и надбавке за стаж.
Требуемая информация содержится в следующих трех таблицах: Т ргер, T dolgn, T stag. В окне Конструктора запросов уже имеется таблицаTjprep. Остальные можно добавить, например, с помощью команды Quei у | Add Table (запрос | добавить таблицу).При этом в появившемся диалоговом окне Add Table or View (добавить таблицу или запрос)выбирается требуемая таблица. В результате образ таблицы появляется в окне Конструктора запросов.
juTxl
fio
dpi Query Designer - query2
slag d_stag
slag ______
k.
doign oklad
Ш
Fields Join | Filter | Order By liraupBy | Miaelewaut j
Loflicai
Hot
Oitei /alue
<
> inner Joii
T_stag.stag
T_prep. dolgn
T
prep "tag T dolgn. dolgn
Insert
Рис. 12.9. Окно многотабличного запроса с выбранной вкладкой Join
Если ранее постоянных связей между выбранными таблицами установлено не было, то открывается диалоговое окно Join Condition (условие связи), служащее для установления или модификации связи (рис. 12.10). В связи с тем, что в рассматриваемом примере имеются постоянные связи между выбранными таблицами, то окно Join Condition (условие связи)было вызвано двойным щелчком мыши на выбранной линии, связывающей таблицы по полюdolgn Этот прием используется также при модификации типа связи.
Join Condition
13-
Т_ргер
dolgn
•
Ту;*
of
ion -
(* Irinei
ion
T
С Left'join 'm f fl«Wi«r» C-Fy|j*in
•«
CK
Qeate а мл* set (h*t indutles only tf» T J»at« reiout J* IHat match ' T_ck4gn r»cot:Jt.
3 ^ I
Рис. 12.10. Окно Join Condition
Гип связи модифицируется или задается с помощью переключателя Туре of join (тип связи)рассматриваемого окна. В левой и правой частях окна содержатся раскрывающиеся списки полей двух таблиц, с помощью которых выбираются поля для связи таблиц. Будем использовать предлагаемую по умолчанию опцию Inner join. В этом случае создается объединение, в которое выбираются записи, которые содержат совпадающие значения в полях связи.
Замечание.
Для установления временных связей возможно использование любых полей таблиц без ограничений, имеющих место при установке постоянных межтабличных связей.
Формирование вычисляемого поля в запросе
В качестве полей результирующей таблицы могут использоваться вычисляемые поля. Вычисляемое поле представляет собой выражение, включающее одно или несколько полей исходной таблицы, константы и функции, соединенные операторами. Для включения в запрос вычисляемого поля необходимо выбрать вкладку Fields Конструктора запроса и в поле Function
and Expressions ^функция и выражения)(рис. 12.1) ввести необходимое выражение. Далее после нажатия кнопки Add (добавить)данное выражение будет занесено в список полей запроса.
OK
Expression Builder
Expression:
T_prep.dolpn + T_stag.d _stag
Cancel
Verify
Math:
г
Date:
"3
3
text"
Logical.
Option
JeJds.
stag
Л
Щ
Ш
Hon,
table- '
T_stag
Рис. 12.11. Диалоговое окно Expression Builder
Результат выполнения многотабличного запроса с вычисляемым полем (Ехп 7) представлен на рис. 12.12
I pi Query |
iJtfrtf | |||||
d jFio V] К at1 Dc'gr. |
. Slag |D stagjOkladj Exp | |||||
. 1 |
_|ИвановИ.И. |
25 |
51 50! 1000| 1U50= • j | |||
|
J Петров П.П. |
251 лреп |
Ъ 50! i |
II iC 1 2100; | ||
,L |
Сидоров С. С. |
25! цоцет |
10! 1001 2000! | |||
JETODOBE Е |
25! пиоФессор |
12! 150! 2500! 2650! i | ||||
|
ш |
|
■ 1 1 t r |
Рис. 12.12. Результат выполнения многотабличного запроса