- •Раздел 1. Проектирование баз данных. 2
- •Раздел 2. Разработка приложений для работы с Базами Данных в среде Delphi. 25
- •Раздел 1. Проектирование баз данных.
- •1.1. Основы построения баз данных. Модели данных.
- •1.1.1. Реляционная модель данных.
- •1.1.2. Нормализация базы данных.
- •1.2. Проектирование базы данных методом “сущность-связь”.
- •Раздел 2. Разработка приложений для работы с Базами Данных в среде Delphi.
- •2.1. Технология создания информационной системы.
- •2.1.1.Создание таблиц базы данных в Database Desktop.
- •2.1.2. Целостность базы данных.
- •Программа bde Administrator и модули данных.
- •Компоненты доступа и работы с данными. Тема: Наборы данных. Состояние и режимы наборов данных.
- •Тема: Объекты поля. Операции с полями.
- •Тема. Отображение и выбор значения поля.
- •Тема. Визуальные компоненты отображения записей из набора данных.
- •Закладки.
- •Тема. Ограничения на вводимые значения.
- •Тема. Сортировка набора данных.
- •Тема. Операции с таблицей базы данных.
- •Тема. Фильтрация записей.
- •Тема. Поиск записей.
- •Тема. Модификация набора данных.
- •Тема. Работа с отчетами
- •Отчет для связанных наборов данных
- •Составной отчет
- •Модули данных
- •Конструктор отчетов Rave Report
- •Реляционный способ доступа к данным.
- •Основные сведения о языке sql.
- •Оператор выбора Select.
- •Агрегирование и группирование записей.
- •Объединение таблиц.
- •Вложенные запросы.
- •Модификация записей.
- •Примеры баз данных
Модификация записей.
Модификация записей заключается в вставке в набор данных новых записей, редактировании записей или удалении записей. При реляционном способе доступа к БД операции модификации выполняются не над одиночными записями, а над группами записей. Группа записей может состоять и из одной записи.
Вставка записей.
Вставка записей выполняется с помощью оператора INSERT. Оператор позволяет добавить к таблицам одну или несколько записей.
При добавлении одной записи оператор INSERT имеет формат:
INSERT INTO <имя таблицы>
(<список полей>)
VALUES (<список значений>);
К указанной в операторе таблице, добавляется одна запись. При этом заполняются поля, перечисленные в списке полей, значениями, которые берутся из списка значений. Списки полей и списки значений должны соответствовать друг другу по числу элементов и по типу. Порядок полей и значений может отличаться от фактического порядка полей в таблице. В списке перечисляются только те поля, значения которых известны. Для пропущенных полей значения берутся по умолчанию (если значения по умолчанию заданы) или поля остаются пустыми.
Например, добавление записи в таблицу Doljn:
1) INSERT INTO Doljn
(D_Nazv, D_Stavka)
VALUES ("слесарь",2500);
2) INSERT INTO Doljn
(D_Nazv)
VALUES (‘сторож’);
При добавлении к таблице сразу нескольких записей оператор INSERT имеет формат:
INSERT INTO <имя таблицы>
(<список полей>) <оператор Select>;
Этот оператор может выбирать записи из какой-то другой таблицы и вставлять их в данную таблицу.
Например,
INSERT INTO Sotrudniki SELECT * FROM Sotrudniki1
WHERE EXTRACT(YEAR FROM S_birthday)>1975;
Удаление записей.
Для удаления группы записей используется оператор DELETE, который имеет следующий формат:
DELETE FROM <имя таблицы>
[WHERE <условие выбора>];
По этому оператору из указанной таблицы будут удалены записи, удовлетворяющие указанному критерию отбора (<условия выбора>). Если критерий отбора не задан, то будут удалены все записи заданной таблицы.
Например,
Удаление из таблицы Sotrudniki записей, год рождения для которых больше 1977:
DELETE FROM Sotrudniki
WHERE EXTRACT(YEAR FROM S_birthday)>1977;
Удаление всех записей из таблицы Sotrudniki1
DELETE FROM Sotrudniki1;
Редактирование записей.
Редактирование – это изменение значений полей в группе записей. Выполняется оператором UPDATE, который имеет формат:
UPDATE <имя таблицы>
SET <имя поля>=<выражение>,
. . .
<имя поля>=<выражение>
[WHERE <условие отбора>];
Например,
1) UPDATE Doljn
SET D_Stavka=D_Stavka+500
WHERE D_Stavka<5000
2) UPDATE Doljn
SET D_Stavka=D_Stavka*1.5;
В одном операторе UPDATE можно изменить значения нескольких полей. В этом случае для каждого поля указывается соответствующее значение.
Например,
UPDATE Doljn
SET D_Stavka=7777,
D_Nazv="оператор ЭВМ"
WHERE D_Nazv="писарь";
Статический и динамические запросы.
В зависимости от способа формирования SQL-запрос может быть статическим или динамическим.
Статический SQL-запрос формируется в процессе разработки приложения и не может быть изменен в процессе выполнения приложения.
Динамический SQL-запрос формируется или изменяется при выполнении приложения.
Например динамического SQL-запроса, выполнить сортировку по выбранному полю и для выбранного направления:
procedure TForm1.BtnSortClick(Sender:
TObject);
var str1:string;
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM
Sotrudniki.db');
case RadioGroup1.ItemIndex of
0: str1:=' ORDER BY S_fio ';
1: str1:=' ORDER BY S_birthday ';
end;
case RadioGroup2.ItemIndex of
0:;
1: str1:=str1+' DESC';
end;
Query1.SQL.Add(str1);
Query1.Open;
end;
Для настройки статического SQL-запроса во время выполнения приложения используются параметры. Параметр – это специальная переменная, перед именем которой в тексте запроса ставится двоеточие. В процессе выполнения приложения на место параметра подставляется его значение. Параметры используются для передачи в текст SQL-запроса внешних значений.
Например, записать в динамическом запросе вывод фамилий сотрудников из таблицы Sotrudniki, дата рождения которых больше введенной в поле Edit1:
procedure TForm1.Button2Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT D_Nazv, D_Stavka ');
Query1.SQL.Add('FROM Doljn ');
Query1.SQL.Add('WHERE D_Stavka > '
+Edit1.Text);
Query1.Open;
end;
С помощью параметров эту задачу можно решить записав SQL-запрос в виде:
SELECT D_Nazv, D_Stavka
FROM Doljn
WHERE D_Stavka> :prmStavka
Система Delphi автоматически учитывает все параметры в специальном списке параметров. Этот список определяется как массив для свойства Params:TParam. К каждому параметру из этого списка можно получить доступ при разработке приложения и при его выполнении. Для обращения к параметру при выполнении приложения нужно указать номер (индекс) параметра в списке параметров. Например, Params[1] – обращение ко второму параметру. При разработке приложения в Инспекторе объектов можно вызвать окно Редактор параметров. Тип каждого параметра указывается в свойстве DataType:TFieldType. Например, для параметра prmStavka установлен тип ftFloat.
Например, выполнение статического SQL-запроса с заданием значения для параметра в поле Edit1.Text:
procedure TForm1.Button3Click(Sender: TObject);
begin
Query1.Close;
Query1.ParamByName('prmStavka').AsFloat:=
StrToFloat(Edit1.Text);
Query1.Open;
end;
При использовании параметров можно не изменять текст SQL-запроса во время выполнения приложения, передавая в него значения параметров.
Подготовка запроса к выполнению осуществляется методом Prepare, который можно вызвать при создании формы. Для проверки выполнения подготовки запроса анализируется свойство Prepared:Boolean. Это свойство после вызова метода Prepare устанавливается равным True. Если текст подготовленного к выполнению запроса изменился (к изменению значений параметров это не относится), то автоматически вызывается метод UnPrepare, и свойство Prepared устанавливается равным False.