Информатика (Visual FoxPro) / METOD1 / TEMA4 / VFP_T4
.docМАТЕРИАЛЫ
для самостоятельной подготовки в период учебной практики на 2 курсе
Тема 4: «Создание и использование запросов к данным»
Цель работы: Освоение основных понятий и методов поиска информации в БД и формирования запросов к данным, содержащимся в базе данных. Изучение языка SQL.
Изучаемые команды СУБД Visual FoxPro: LOCATE, CONTINUE, SEEK, select…From…, CREATE TABLE, INSERT INTO, UPDATE, ALTER TABLE, CREATE CURSOR
-
Обратиться к Visual FoxPro. Установить путь по умолчанию к своей папке на рабочем диске. Открыть БД KOM_FIRM, созданную при выполнении предыдущей темы. Открыть для использования все 3 таблицы и установить между ними связи так, как это делалось в п.3 предыдущей темы. С помощью команды
SELECT POS
перейти к таблице POSTAVKI и отключить упорядочивание в этой таблице командой
SET ORDER TO 0
Найти в таблице первую запись, относящуюся к поставке товаров в фирму с кодом 190. Для этого ввести команду поиска информации по заданному условию в неупорядоченной таблице
LOCATE FOR KOD_FIRM=’190’
Просмотреть таблицу и убедиться, что текущая запись, действительно, относится к искомой фирме. Найти в ней следующую запись о поставке в эту фирму, введя команду продолжения поиска, заданного командой LOCATE
CONTINUE
Просмотреть таблицу и убедиться, что текущей стала следующая запись о поставке в фирму с кодом 190. Несколько раз повторить команду продолжения поиска.
Включить в таблице POSTAVKI упорядочивание по коду фирмы
SET ORDER TO I_FIRM
Применить команду быстрого поиска информации с использованием индекса по аспекту поиска
SEEK ‘190’
Просмотреть таблицу и убедиться в том, что текущей стала первая запись о поставке в данную фирму, а также в том, что остальные записи о поставках в эту фирму расположены вслед за текущей записью.
-
Создать таблицу EXAMPLE1, содержащую выборку из таблицы KLIENTY информации о клиентах фирмы, расположенных в городах Москва и Санкт-Петербург. Для этого следует ввести SQL-запрос:
select firm,adres,gorod from klienty where ; alltrim(klienty. gorod)='Москва' or ; alltrim(klienty. gorod)='Санкт-Петербург' into table example1
Открыть созданную в результате исполнения запроса таблицу EXAMPLE1.DBF и просмотрев ее записи, убедиться в корректности полученного результата.
Создать таблицу EXAMPLE2 c выборкой из 3-х таблиц информации о поставке товаров клиентам фирмы, включающей дату поставки, название фирмы, название города, в котором находится фирма-клиент, название товара, его количество и стоимость. С этой целью создать SQL-запрос:
select b.dat_zanes,a.firm,a.CITY,c.nazvanie,b.koliz,b.stoim from klienty a, postavki b,tovary c where a.kod=b.kod_firm and b.kod_tov=c.kod_tov into table example2
Открыть таблицу EXAMPLE2.DBF, просмотреть ее содержание и сравнить его с содержанием обзора данных TEK_SVED, созданного при выполнении предыдущей темы. Для этого вывести эти таблицы в двух подокнах, расположив их на двух половинках экрана. Сделать вывод по итогам сравнения.
-
Создать таблицу EXAMPLE3 с данными о стипендиях студентов, включающую фамилию и инициалы студента, номер его зачетной книжки, группу и величину назначенной стипендии. Для этого ввести SQL-оператор:
CREATE TABLE EXAMPLE3 (FIO C(40), TAB_NUM C(8), ;
GRUPPA C(7), STIPEND N(4,2))
Просмотреть структуру созданной таблицы. Вставить в созданную таблицу запись, используя оператор
INSERT INTO EXAMPLE3 (FIO, TAB_NUM, GRUPPA, STIPEND);
VALUES ("Иванов И.И.","71001025","A-2-03",92.58)
Проверить корректность выполнения этого оператора.
Добавить в таблицу EXAMPLE3 5-6 записей, заполняя только поле FIO , например, фамилиями студентов своей группы. После этого, выполнить SQL-оператор
UPDATE EXAMPLE3 SET GRUPPA="A-1-03", STIPEND=1258
Сделать вывод о назначении примененного оператора.
-
Используя SQL-оператор CREATE TABLE, создать таблицу SQL_TEST с 3 полями: F1 - календарная дата, F2 - символьное (до 50 символов), F3 - числовое, на 10 знакомест с 4 знаками в дробной части. Внести в таблицу SQL_TEST с помощью оператора INSERT две произвольные записи и отобразить их на экране.
Обратиться к помощи и изучить назначение и синтаксис SQL-оператора ALTER TABLE. С помощью этого оператора изменить структуру таблицы SQL_TEST: удалить поле F3, увеличить размер поля F2 до 70 символов, добавить еще одно поле F4 типа календарной даты.
-
Используя SQL-оператор SELECT , создать на основе таблиц BDW1, BDW2 новую таблицу EXAMPLE4 с 4 полями: FF1(поле DN из BDW1), FF2(поле WB из BDW1 ), FF3(поле FIOO из BDW2), FF4(поле SPLAV из BDW2); записать в эти поля информацию из исходной таблицы для записей, отвечающих условию: BDW1.DN=BDW2.DN и, одновременно, BDW2.FIOE='ПЕТРОВ П.П.'.
Записи в результирующей таблице EXAMPLE4 должны быть упорядочены по полю FF1. Просмотреть полученный результат и проверить его корректность.
-
Выполнить SQL-оператор создания курсора (временной таблицы)
CREATE CURSOR EXAMPLE5 (FIO C(40), TAB_NUM C(8),;
GRUPPA C(7), STIPEND N(4,2))
Просмотреть структуру созданной таблицы. Отличается ли она от структуры таблицы EXAMPLE3 ?
-
Открыть БД OTD_KADR, созданную при выполнении предыдущей темы. С помощью SQL-запроса создать таблицу EXAMPLE6 – список отделов предприятия, включающую информационные аспекты: код отдела и название отдела.
Написать SQL-запрос, позволяющий получить на основе содержащейся в этой БД информации таблицу EXAMPLE7 со списком работающих на предприятии сотрудников, включающую следующие аспекты: фамилия И.О., название отдела, должность, размер оклада. Список сотрудников должен быть упорядочен по отделам.
По информации из той же БД подготовить таблицу EXAMPLE8 со сведениями о выплатах сотрудникам денежных средств в марте 2004 г., включающую следующие информационные аспекты: дата выплаты, фамилия И.О. сотрудника, название отдела, размеры выплат в счет оклада и в виде надбавки.
Контрольные вопросы.
-
Какие способы могут применяться для поиска интересующей пользователя информации в БД? Чем различаются команды поиска LOCATE и SEEK?
-
Можно ли осуществлять поиск информации в упорядоченной таблице с помощью команды LOCATE?
-
Можно ли осуществлять поиск информации в неупорядоченной таблице с помощью команды SEEK?
-
Как из имеющейся БД получить подборку информации с аспектами, интересующими пользователя?
-
Если в БД не установлены связи между таблицами, можно ли использовать SQL-запрос для получения информации, включающей аспекты из разных таблиц?
-
Можно ли применять SQL-запросы к отдельным таблицам или только к тем, которые входят в состав БД? Требуется ли при этом обязательно упорядочить таблицы по какому-то столбцу?
-
Какие способы могут применяться для создания таблицы с требуемой структурой? Как можно изменить структуру уже имеющейся таблицы? Что происходит с информацией, содержащейся в таблице, при изменении ее структуры?
-
Какие способы могут применяться для наполнения информацией ранее созданной таблицы? Как исправить выявленные ошибки в информации, занесенной в таблицу?
-
Должна ли быть предварительно открыта таблица, в которой мы собираемся изменить содержащуюся информацию?
-
Какое указание надо вставить в SQL-запрос для выборки информации из БД, чтобы в результирующей таблице не было повторяющихся записей?
-
Какое указание надо вставить в SQL-запрос для выборки информации из БД, чтобы в результирующей таблице данные были упорядочены по одному из столбцов?
-
Чем различаются таблицы, создаваемые с помощью SQL-операторов CREATE TABLE … и CREATE CURSOR… ? В каких ситуациях надо применять ту или другую из этих команд?
-
Написать SQL-оператор, позволяющий в таблице KLIENTY в записи, относящейся к фирме «ЦОЗ» изменить название города-местоположения на «Кукуев».
-
Написать SQL-оператор, позволяющий получить список разных товаров, поставленных в фирму с кодом 190. Определить, сколько всего поставок товаров сделано в эту фирму.