ЛАБОРАТОРНАЯ РАБОТА 4
РЕАЛИЗАЦИЯ ПРОСТЕЙШИХ ОПЕРАЦИЙ РАБОТЫ С БАЗОЙ ДАННЫХ СРЕДСТВАМИ ВСТРОЕННОГО SQL
Цель работы
Приобретение начальных навыков работы со встроенным SQL средствами встроенного SQL/C.
Содержание работы и методические указания к ее выполнению
Встроенный SQL (ESQL)- инструмент разработки приложений для базы данных на языке Си с возможностью использования средств SQL. При создании ESQL/C-программы пользователь разрабатывает С-программу, включает в нее специальные заголовочные файлы и SQL-описания, реализующие работу с базой данных. Препроцессор ESQL/C преобразует SQL-описания в обращения к библиотечным функциям, которые взаимодействуют с сервером базы данных, и дает на выходе С-код. Далее полученный С-код компилируется и линкуется. Исходя из вышесказанного, пользователь, желающий разрабатывать ESQL/С-программы должен обладать навыками работы с языком Си и уметь пользоваться средствами SQL. При этом необходимо учитывать особенности той операционной системы, в рамках которой создается клиентское приложение. В данной и двух последующих лабораторных работах предполагается разработка несложных ESQL/С-программ. В лабораторных работах используется схема базы данных, созданная в 1 лабораторной работе, содержащая 4 таблицы:
Если приведенная схема базы данных отсутствует (или любая таблица из нее), то необходимо восстановить базу данных, пользуясь интерактивными средствами программы phpPgAdmin, либо выполнив необходимый запрос на языке SQL в рамках данной программы:
create table S (n_post char(6) NOT NULL, family nchar(20),
rating smallint, town nchar(20));
create table P (n_det char(6), name nchar(20),
color nchar(20), weigh smallint,
town nchar(20));
create table J (n_izd char(6), name nchar(20),
town nchar(20));
create table SPJ (n_post char(6), n_det char(6),
n_izd char(6), kol smallint));
insert into S
values (...........................);
insert into P
values (...........................);
insert into J
values (...........................);
insert into SPJ
values (...........................)
Для разработки ESQL/С-программ необходимо изучить:
Данная лабораторная работа связана с написанием таких программ на ESQL/C, которые после обработки SQL-запроса возвращают единственную строку, а также выполняют простейшие операции по модификации базы данных без использования аппарата курсора.
Исходный файл с программой на встроенном SQL/C должен иметь расширение
.ec (например, source.ec).Вызов транслятора со встроенного ESQL/C выполняется командой
pgcci. Ниже приведен упрощенный вариант синтаксиса команды pgcci:pgcci <имя файла без расширения>
Входные данных для SQL-описаний передаются через так называемые главные переменные, через них же возвращаются результаты запроса, которые отображаются на экране терминала для контроля выполнения. При объявлении главных переменных в языке встроенного SQL/C оператору описания переменных предшествует знак $, либо объявление производится внутри блока
exec SQL begin declare section
. . . .
exec SQL end declare section
При использовании главных переменных в программе ESQL/C внутри SQL-описаний им также предшествует знак $, вне SQL-описаний главные переменные используются обычным образом. SQL-описаниям (операторам языка SQL) в программе на встроенном SQL/C также предшествует знак $.
Сервер баз данных возвращает код результата и, возможно, другую информацию в структуру данных, называемую областью связи SQL (SQL Communication Area - SQLCA). Структура и назначение отдельных полей SQLCA приведены в Приложении 3. Структура SQLCA описана в заголовочном файле sqlca.h, который автоматически подключается к программе на встроенном SQL/C. Среди других заголовочных файлов отметим:
datatime.h - описывает структуру для типа данных datetime;
decimal.h - описывает структуру для типа данных decimal;
locator.h - описывает структуру для blobs-данных;
varchar.h - описывает структуру для типа данных varchar;
sqlhdr.h - описывает прототипы функций библиотеки SQL/C;
sqltype.h, sqltypes.h - структуры для работа с динамическими главными переменными.
Для работы с объектами схемы базы данных необходимо указать
- базу данных;
- схему базы данных.
База данных задается оператором в программе на языке ESQL/C
имя базы данных, используемое в лабораторных работах 1-10 - Students;
имя сервера - fpm2;
имя логина указывается в двойных кавычках;
пароль указывается в двойных кавычках или посредством главной переменной, подлежащей вводу на этапе выполнения программы.
Для указания схемы базы данных возмодны несколько вариантов. Один из них состоит в указании перед запуском загрузочного файла с программой на языке ESQL/C схемы базы данных командой из командной строки:
Set_search_path <имя-схемы> <имя-базы данных>
Последовательность выполнения лабораторной работы
1. Разработать и отладить ESQL/С-программу, реализующую задачу 1 из соответствующего варианта заданий.
2. Разработать и отладить ESQL/С-программу, реализующую задачу 2 из соответствующего варианта заданий и связанную с модификацией базы данных.
3. Разработать и отладить ESQL/С-программу, добавляющую в таблицу поставщиков S поставщика с фамилией члена Вашей бригады, а также 3-4 произвольные поставки в таблицу SPJ, связанные с этим поставщиком. Атрибуты добавляемых строк должны быть выбраны таким образом, чтобы изменить результат решения задачи 1.
4. Выполнить ESQL/С-программу, разработанную в п. 1 для нового состояния базы данных. Сравнить результаты.
В случае ошибочного выполнения программ, приводящих к непредусмотренным изменениям базы данных, следует привести базу данных в исходное состояние.
Требования к разрабатываемой программе
Разрабатываемые ESQL/C-программы должны удовлетворять следующим требованиям:
Варианты заданий
Вариант 1
1. Выдать полную информацию о поставщике, имеющим максимальный рейтинг.
2. Перевести поставщика с минимальным рейтингом в город, где изготавливается самая тяжелая деталь.
Вариант 2
1. Выдать полную информацию об изделии, изготавливаемом в городе, в котором проживает поставщик с максимальным рейтингом.
2. Поменять местами города, где проживают поставщики с минимальным и максимальным рейтингом.
Вариант 3
1. Выдать полную информацию о детали, имеющей максимальный вес.
2. Перевести поставщика с максимальным рейтингом в Лондон.
Вариант 4
1. Выдать общий объем поставок деталей красного цвета.
2. В таблице деталей сменить название детали "Винт" на название детали с максимальным весом.
Вариант 5
1. Выдать полную информацию об изделии, имеющем максимальный объем поставок деталей.
2. В таблице деталей сменить город, где изготавливается самая легкая деталь, на Париж.
Вариант 6
1. Выдать общий объем поставок деталей для изделия J2.
2. Увеличить рейтинг всех лондонских поставщиков на 5.
Вариант 7
1. Выдать общий объем поставок деталей для изделия с максимальным объемом поставок.
2. Увеличить вес всех красных деталей на 10.
Контрольные вопросы