Для удаления группы записей используется оператор DELETE,который имеет следующий формат:
DELETE FROM <имя таблицы>
[WHERE <условиевыбора>];
По этому оператору из указанной таблицы будут удалены записи, удовлетворяющие указанному критерию отбора (<условия выбора>). Если критерий отбора не задан, то будут удалены все записи заданной таблицы.
Например,
1) Удаление из таблицы Sotrudniki записей, год рождения для которых больше 1977:
DELETE FROM Sotrudniki
WHERE EXTRACT(YEAR FROM S_birthday)>1977;
2) Удаление всех записей из таблицы 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.