Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_БД.doc
Скачиваний:
27
Добавлен:
04.05.2019
Размер:
4.03 Mб
Скачать
      1. Модификация записей.

Модификация записей заключается в вставке в набор данных новых записей, редактировании записей или удалении записей. При реляционном способе доступа к БД операции модификации выполняются не над одиночными записями, а над группами записей. Группа записей может состоять и из одной записи.

Вставка записей.

Вставка записей выполняется с помощью оператора 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 <условие выбора>];

По этому оператору из указанной таблицы будут удалены записи, удовлетворяющие указанному критерию отбора (<условия выбора>). Если критерий отбора не задан, то будут удалены все записи заданной таблицы.

Например,

  1. Удаление из таблицы Sotrudniki записей, год рождения для которых больше 1977:

DELETE FROM Sotrudniki

WHERE EXTRACT(YEAR FROM S_birthday)>1977;

  1. Удаление всех записей из таблицы 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.