DML (Data Manipulation Language) – язык манипулирования данными, составная часть SQL.
Рассмотрим его основные команды – команды добавления, изменения и удаления данных INSERT, UPDATE и DELETE.
Для добавления новых строк в таблицу служит команда INSERT:
INSERT [INTO] имя_таблицы [(список_полей)]
VALUES (список_значений);
Например,
INSERT k_firm (firm_name, firm_addr)
VALUES('Альфа', 'Москва');
Список полей можно явно не указывать, тогда в списке значений нужно задавать значения для каждого поля в том порядке, в котором они были созданы.
Для поля с ограничением IDENTITY обычно явное значение указывать нельзя, т.к. оно формируется автоматически. Если требуется явно указывать значения для таких полей, следует предварительно выполнить команду:
SET IDENTITY_INSERT ON
Если мы вставляем значения из одной таблицы в другую, формат команды INSERT следующий:
INSERT [INTO] имя_таблицы [(список_полей)]
(SELECT параметры);
Для обновления данных используется команда UPDATE:
UPDATE имя_таблицы
SET поле1=выражение1 [,…, полеN=ВыражениеN]
[WHERE условие];
Например,
UPDATE k_dept SET staff_num=1
WHERE dept_short_name='Sales';
Если опция WHERE пропущена, изменяться будут все строки таблицы.
Для удаления данных используется команда DELETE:
DELETE [FROM] имя_таблицы [WHERE условие];
Например,
DELETE FROM k_dept WHERE dept_short_name='Sales';
Если опция WHERE пропущена, удалены будут все строки таблицы.
Заполним тестовыми данными нашу базу «Рога и копыта». Кроме команд добавления, для примера рассмотрены несколько команд изменения данных. Обратите внимание, что для полей, имеющих свойство IDENTITY, значения не задаются – они будут генерироваться автоматически.
Строки-константы следует задавать в одинарных кавычках.
Могут возникать некоторые проблемы с заданием констант типа дата. Формат таких констант зависит от региональных настроек операционной системы.
Если вы хотите задать определенный формат даты, например, день:месяц:год, выполните команду:
SET DATEFORMAT dmy
Мы будем использовать формат год:месяц:день
SET DATEFORMAT ymd
при котором константа-дата выглядит так: ‘2012-01-31’
В примерах также используется функция GETDATE(), которая возвращает текущие дату/время.
Таблица "Предприятия"
INSERT INTO k_firm (firm_name, firm_addr)
VALUES('Альфа', 'Москва');
INSERT INTO k_firm (firm_name, firm_addr)
VALUES('Бета', 'Казань');
INSERT INTO k_firm (firm_name, firm_addr)
VALUES('Гамма', 'Париж');
INSERT INTO k_firm (firm_name, firm_addr)
VALUES('Дельта', 'Лондон');
INSERT INTO k_firm (firm_name, firm_addr)
VALUES('Омега', 'Токио');
Посмотрим результат заполнения, для этого выполним следующую команду:
SELECT * FROM k_firm;
Результат будет выглядеть следующим образом (поле firm_phone мы не заполняли, поэтому в нем будут значения NULL):
firm_num firm_name firm_addr firm_phone
-------------------------------------------
1 Альфа Москва NULL
2 Бета Казань NULL
3 Гамма Париж NULL
4 Дельта Лондон NULL
5 Омега Токио NULL
(5 row(s) affected)
Таблица "Отделы"
INSERT INTO k_dept (dept_short_name, dept_full_name)
VALUES('Sales', 'Отдел продаж');
INSERT INTO k_dept (dept_short_name, dept_full_name)
VALUES('Mart', 'Отдел маркетинга');
INSERT INTO k_dept (dept_short_name, dept_full_name) VALUES('Cust', 'Отдел гарантийного обслуживания');
Посмотрим результат заполнения, для этого выполним следующую команду: