- •Лабораторная работа №7
- •7.1. Типы запросов данных в sql
- •7.2. Формирование запросов из тбд командным способом
- •Указание результатов выборки и источников данных
- •Указание объекта, куда пересылается выборка
- •Критерий отбора данных
- •Группирование данных
- •7.2.1.2. Сложные однотабличные и многотабличные запросы (несколько условий отбора)
- •7.3.1. Характеристика до «Конструктор запросов»
- •7.3.2. Файлы запросов на языке sql и результаты их выполнения
- •7.3.2.1. Однотабличные запросы Запрос 1: запрос по точному совпадению значения одного поля
- •7.3.Оператор select, формируемый интерактивным способом с помощью метода построения запроса qbe
- •Внимание !
- •1.Предъявляемые ниже тексты всех остальных запросов служат для проверки правильности настройки конкретного бланка запроса.
- •Запрос 3: запрос по неточному совпадению значения одного поля
- •Запрос 4: запрос с вычисляемым полем
- •Запрос 5: запрос поиск по точному совпадению значения даты
- •Самостоятельная работа
- •7.2.1.2. Многотабличные запросы
- •Сложные запросы.
- •Вложенные запросы.
- •Values (‘п6’, ‘Быков’, ‘Москва’, 30, ‘Иван’, ‘Борисович’)
- •7.6 Арифметические операции в опции where
Указание объекта, куда пересылается выборка
Следующие опции задают «получатель» данных выборки. Им может быть ТБД, массив, текстовый файл, экран и принтер.
Кроме того, информация может быть переслана в так называемый Курсор (будем писать с большой буквы). Курсор – это временный набор данных, который может быть областью памяти или временным файлом FoxPro (этот процесс от нас не зависит) и имеет режим «Только чтение». Данные Курсора могут быть, например, предъявлены в команде BROWSE, напечатаны, из них может быть образовано меню и т.д. Курсор может быть обработан другой командой SELECT. К колонкам Курсора надо обращаться по имени этих колонок, возможно, с префиксом – именем Курсора (через точку).
Итак:
INTO <получатель>
<Получатель> может быть одного из следующих типов:
ARRAY <массив> - здесь вновь создаваемый двумерный <массив>
CURSOR <курсор> - задается имя Курсора.
DBF/TABLE <БД> - новая таблица базы данных с указанным именем. Слова DBF и TABLE здесь являются синонимами.
Кроме того, данные можно переслать в файл или на принтер.
TO FILE <файл> [ADDITIVE]/TO PRINTER – выборка посылается в текстовый <файл> или на принтер. Если используется слово ADDITIVE, то выборка будет добавлена в конец существующего файла без его перезаписи.
Следующие опции имеют смысл только при выдаче на экран (команда используется без слова INTO):
NOCONSOLE – выборка не выдается на экран.
PLAIN – заголовки колонок не выдаются.
NOWAIT – не делаются паузы при заполнении экрана.
Критерий отбора данных
WHERE <условие связи> [AND <условие связи> …]
[AND/OR <условие отбора> [AND/OR <условие отбора> …]]
Здесь:
<Условие связи> - применяется в случае, если выборка делается более чем из одной ТБД, и указывает критерий, которому должны отвечать поля из разных таблиц. В условии связи указываются поля из разных таблиц. Здесь разрешается использовать знаки отношения =, #, ==, >, >=, <, <=. Допускается задание нескольких критериев, соединенных знаком AND.
<Условие отбора> - строится аналогично, но из выражений только одной ТБД, и допускается использование логических операторов OR и NOT.
Условия, кроме любых функций FoxPro, могут содержать следующие операторы SQL:
LIKE – позволяет построить условие сравнения по шаблону, где символ “_” указывает единичный неопределенный символ в строке, “%” – любое их количество. Эти символы аналогичны символам маски “?” и “*” в MS DOS. Формат оператора:
<выражение> LIKE <шаблон>
BETWEEN – проверяет, находится ли выражение в указанном диапазоне. Формат оператора:
<выражение> BETWEEN <нижнее знач.> AND <верхнее знач.>
IN – проверяет, находится ли выражение, стоящее слева от слова IN, среди перечисленных справа от него. Формат оператора:
<выражение> IN (<выражение>,<выражение>,…)
Все указанные операторы можно комбинировать с помощью связок OR, AND, NOT и скобок. Операторы LIKE и BETWEEN не следует путать с одноименными функциями FoxPro, которые, впрочем, также можно использовать.
Группирование данных
GROUP BY <колонка>[,<колонка>…] – задаются колонки, по которым производится группирование выходных данных. Все записи ТБД, для которых значения колонок совпадают, отображаются в выборке единственной (итоговой) строкой. Группирование удобно для получения некоторых сводных характеристик (сумм, количеств записей, средних) группы.
HAVING <условие отбора> - опция задает критерий отбора данных в каждую сформированную в процессе выборки группу.
Сортировка
ORDER BY <колонка> [ASC/DESC][,<колонка> [ASC/DESC]…] – опция задает упорядочение по заданной колонке/колонкам. По умолчанию сортировка выполняется по возрастанию (ASC), но может быть задана и по убыванию (DESC).
7.2.1.Примеры запросов к базе данных
в аналитической форме записи языка SQL
Внимание!
1. Все выполняемые запросы надо сохранить не под именами, присваиваемыми СУБД по умолчанию (query1.qpr… queryХ.qpr…), а под своими произвольными именами, определяющими цель запроса.
2. Все выполняемые командные запросы, кроме тех, которые имеют аналог выполнения по методу QBE, надо выполнить затем с помощью метода QBE сохранить их под новыми именами.
7.2.1.1. Однотабличные запросы
Могут не иметь условия отбора/ иметь одно условие отбора (простые запросы). либо иметь несколько условий отбора к одной или нескольким таблицам (сложные запросы).
Простые запросы
1.Отсутствие условия отбора (просмотр ТБД):
Выборка всех полей из ТБД POSHK.DBF. Все колонки выборки будут иметь имена полей ТБД.
SELECT * FROM Data1!POSHK
2.Одно условие отбора:
Вывести все сведения о поставщиках, проживающих в городе Киев
SELECT nomp, famp, gord, stat FROM Data1!POSHK;
WHERE gord=‘КИЕВ’
3. Выборка фамилий поставщика по первой букве (из POSHK.DBF).
SELECT famp FROM poshk WHERE famp="С"
