Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (1084484), страница 97
Текст из файла (страница 97)
Ее упрощенное представление имеет следующий вид:SELECT СгшсокВыбираемыхПолейFROM СписокТаблиц-исгочника данных [ INTO ИмяТаблицы получателя данных|[WHERE УсловиеВыборки][GROUP BY УсловиеГруппировки][ORDER BY УсловиеУпорядочивания выводимых данных][ТО FILE ИмяФайла | Т О PRINTER — направление вывода данных]Квадратные скобки указывают на необязательность опции.Конструктора запроса позволяет:• выбирать данные из одной или нескольких таблиц, используя сложныекритерии;Часть 3. Современные СУБД и их применение462• устанавливать временные связи между таблицами;• выбирать поля и записи таблиц с требуемыми данными;• выполнять вычисления с использованием выбранных данных.Работа с Конструктором запроса сводится к заполнению форм запроса.Результатом запроса всегда является таблица, которая может быть сохраненав массиве или в созданной новой таблице, отображена на экране или оформлена в виде отчета.
Данные, содержащиеся в результирующей таблице, могутбыть представлены в виде графика или гистограммы. Рассмотрим формирование запросов с помощью Конструктора запроса.Для вызова Конструктора запроса после открытия БД можно воспользоваться командой File | New (файл | Создать) системного меню Visual FoxPro.При выполнении этой команды открывается диалоговое окно New (рис.
12.2),в котором нужно выбрать переключатель Query (Запрос) и нажать кнопкуNew File (Новый файл). В открывшемся диалоговом окне Add Table or View(Добавить таблицу или просмотр) следует выбрать одну или несколько таблиц и нажать ОК. В результате откроется окно Конструктора запроса (рис.12.7), содержащее выбранные таблицы, а в системном меню Visual FoxPro появится пункт Query (Запрос).uery Designer - QuerylштшQuery Designer@ol%NI Wil oil <f|fiostagdolgnkafJ!lLfMds j | Join j Filter ] Order By j Group By j MiscellaneousAvailable fields:T_prep.fioT_prep.stagT_prep.
dolgnT_prep.kafSelected fields:ijAdd A l l »R amovezl•:'< Remove AlFunctions and expressions:Рис. 12.7. Окно Конструктора запроса с таблицей T P R E P12. СУБД Visual FoxPro 8.0463После того как определена таблица (одна или несколько) для формирования запроса в диалоговом окне Конструктора необходимо:• выбрать поля, содержащие искомые данные;• задать критерии выборки, упорядочения и группировки данных;• указать, куда выводится результат запроса.Д л я р е ш е н и я п е р е ч и с л е н н ы х задач К о н с т р у к т о р с о д е р ж и т : п а н е л ь д л я ото-бражения таблиц, используемых в запросе (в рассматриваемом примере наней находится одна таблица T_PREP), и вкладки (табл.
12.10).Таблица 12.10Назначение вкладок диалогового окна Конструктора запросовВкладкаНазначениеFieldsВыборка полей в результирующую таблицуJoinЗ а д а н и е условий объединения таблицFilterЗ а д а н и е фильтра (условий отбора записей)Order ByЗадание критерия упорядочиванияGroup ByЗ а д а н и е условий группировки данныхMiscellaneousДополнительные установки (признак выборки повторяющихсязначений, количество выбираемых данных)Поле Functions and expressions (функции и выражения) используется длявключения в запрос функции или выражения.По окончании формирования запроса в диалоговом окне Конструкторарезультат выполнения запроса можно оценить выполнив команду Query | RunQuery (Запрос | выполнить запрос) системного меню.Для повторного выполнения запроса, сформированного в окне Конструктора,его необходимо сохранить.
Для этого достаточно выполнить команду File | Save(Файл | сохранить) и в открывшемся окне указать полное имя файла, в которомбудет сохранено окно с описанием запроса. В результате будет созда! i файл, хранящий запрос, с расширением QPR. Теперь для повторного выполнения запроса достаточно открыть этот файл командой File | Open (Файл | открыть) и запуститьна выполнение командой Query | Run Query (Запрос | выполнить запрос).Выбор полей результирующейтаблицыВыбор полей результирующей таблицы выполняется с помощью вкладкиFields (Поля) диалогового окна Конструктора запросов.
Рассмотрим эту процедуру на примере организации запроса 1.Часть 3. Современные СУБД и их применение464Запрос 1. Составить список всех преподавателей, сведения о которых содержатся в таблице T P R E P . D B F , с указанием их стажа и должности.Вся необходимая информация содержится в одной таблице. Выводимыезаписи должны быть упорядочены по полю 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.Ш\ QueryStagFioПетров П.П.Сидоров С. С.Егоров Е.Е.Баглюк С. И.iDolgn5| преп7 треп10i доценг12; профессор12;сг, препИИЕЗ:Kaf25125!25!25! .24dРис. 12.8. Результат выборки полей таблицы Т ргерРассмотрим процедуру упорядочения данных в таблице на примере следующего запроса.Запрос 2.
Составить список всех преподавателей из таблицы T PREP.DBFс указанием их стажа и должности. Фамилии в списке упорядочить по алфавиту.Для упорядочения данных используется вкладка Order By (упорядочение). В ней содержится два списка Selected Fields (выбранные поля) и12. СУБД Visual FoxPro 8.0465Ordering Criteria (критерий упорядочения). Для задания критерия упорядочивания необходимо перенести в Ordering Criteria (критерий упорядочения) поля, которые будут определять порядок расположения выводимых взапросе данных. Процедура переноса аналогична рассмотренной при определении полей результирующей таблицы.
Для реализации нашего первого запроса во вкладке Order By (упорядочение) выделим курсором поле T_prep.fio(поле 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 — вхождение,= = — фактическое равенство,> — больше чем,< — меньше чем,466Часть 3.
Современные СУБД и их применение>= — не меньше чем,<= — не больше чем,Is NULL — совпадение с NULL,Between — в диапазоне значений,In — среди заданных значений.Оператор = (Equal) позволяет осуществлять поиск при условии знаниячасти первых символов в значениях поля, по которому осуществляется поиск. Эта часть символов вводится в поле столбца Example (пример) и сравнивается со значением поля, указанного в столбце Field Name (имя поля).Оператор Like (подобие) выполняет посимвольное сравнение строки, стоящей слева, со строкой, находящейся справа, пока она не закончится.Операторы >, >=, <, <= и Between (между) можно использовать с текстовыми, цифровыми полями и полями дат.
Например, для выборки преподавателей со стажем более 10 лет, достаточно в качестве условий отбора выбратьполе Stag, в списке вариантов сравнения выбрать оператор >=, а в полеExample (пример) ввести 10.При использовании оператора Between (между) начальное и конечное значение вводится через запятую. При задании диапазона для значений текстовых полей сравниваются коды символьных величин.
Так, условие выбора «А,Д», помещенное в поле Example (пример) применительно к полю Fio позволит выбрать из таблицы Т Ргер всех тех преподавателей, фамилии которыхначинаются с букв в данном диапазоне.При необходимости выбора сведений о конкретных преподавателях следует использовать оператор In. В этом случае в поле столбца Example (пример) через запятую перечисляются фамилии преподавателей.Для реализации запроса с отрицанием условий сортировки, выбранных всписке Criteria, используется размещенный перед списком флажок Not.Возможно формирование критерия отбора записей, состоящего из нескольких условий, соединяемыми операторами AND (И) или OR (ИЛИ) из спискаLogical.Кнопки Insert (вставить) и Remove (удалить) соответственно добавляюти удаляют условия из списка условий отбора записей. Чтобы вставить новоеусловие между существующими условиями, необходимо выделить нижнее изних и нажать кнопку Insert (вставить).