Самый универсальный и гибкий способ создания данных состоит в использовании SQL-команды INSERT. Формат у нее такой:
INSERT INTO ИмяТаблицы (СписокСтолбцовТаблицы)
VALUES (СписокЗначений);
Если в этой команде пропустить СписокСтолбцовТаблицы, то имеются в виду ВСЕ столбцы, и именно в таком порядке, в каком они были определены при создании таблицы.
SQL-команды нужно набирать в окне SQL statement. Для выполнения команд нужно выбрать меню Query – Execute или кнопку на панели инструментов или нажать Ctrl+Enter.
Можно набрать несколько команд и выполнить их все вместе, или выделить отдельную команду (как для копирования) и выполнить только ее.
Текст SQL-команд, который также называют SQL-сценарием, можно (и нужно!) сохранять в файл. По умолчанию тип файла sql.
Заполним таблицу Предприятия:
# выберем базу данных
USE kontora;
# добавим строки
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_num, поскольку этот столбец имеет свойство Auto increment, и сервер его заполняет сам, натуральными числами.
Заполним Отдел
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)
Заполним таблицу Сотрудник. Обратите внимание, что в этой таблице можно указывать только такой номер отдела, который существует в таблице Отдел! (Оставить это поле пустым тоже можно.)
INSERT INTO k_staff (staff_name, K_dept_dept_num, staff_hiredate, staff_post)
VALUES('Иванов', 1, '1999-01-01', 'Менеджер');
INSERT INTO k_staff (staff_name, K_dept_dept_num, staff_hiredate, staff_post)
VALUES('Петров', 2, '2010-10-13','Менеджер');
INSERT INTO k_staff (staff_name, K_dept_dept_num, staff_hiredate, staff_post)
VALUES('Сидоров', 3, '2005-12-01','Менеджер');
INSERT INTO k_staff (staff_name, staff_hiredate, staff_post)
VALUES('Семенов', '1990-01-01','Директор');
INSERT INTO k_staff (staff_name, K_dept_dept_num, staff_hiredate, staff_post)
Кроме команды добавления данных INSERT, есть полезные команды изменения данных UPDATE и удаления данных DELETE.
Формат команды UPDATE:
UPDATE [INTO] ИмяТаблицы SET ИмяСтолбца=НовоеЗначение
[WHERE Условие];
Квадратные скобки означают необязательную часть команды. Если условия нет, то изменяются ВСЕ строки заданной таблицы.
Применим эту команду на практике. Если вы обратили внимание, в таблице Отдел остался незаполненным столбец k_staff_staff_num, означающий номер сотрудника – руководителя отдела.
UPDATE k_dept SET k_staff_staff_num=2
WHERE dept_short_name='Mart';
UPDATE k_dept SET k_staff_staff_num=3
WHERE dept_short_name='Cust';
UPDATE k_dept SET k_staff_staff_num=1
WHERE dept_short_name='Sales';
Результат:
Формат команды DELETE:
DELETE [FROM] имя_таблицы [WHERE условие];
Квадратные скобки означают необязательную часть команды. Если условия нет, то удаляются ВСЕ строки заданной таблицы.
Пример: удаляем фирму с номером 5:
DELETE FROM k_firm WHERE firm_num=5;
Результат успешный. А что будет, если попробовать удалить фирму с номером 1? У этой фирмы есть подчиненные строки в таблице Договор.
Ошибка:
Error Code 1451
Cannot delete or update a parent row: a foreign key constraint fails (`kontora`, `k_contract`, CONSTRAINT `fk_contract_k_firm` FOREIGN KEY (`k_firm_firm_num`) REFERENCES `k_firm` (`firm_num`) …