Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Ый способ заполнения базы данных – используем команду INSERT
Самый универсальный и гибкий способ создания данных состоит в использовании 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) VALUES('Cust', 'Отдел гарантийного обслуживания');
SELECT * FROM k_dept; Заполним таблицу Сотрудник. Обратите внимание, что в этой таблице можно указывать только такой номер отдела, который существует в таблице Отдел! (Оставить это поле пустым тоже можно.) 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) VALUES('Григорьев', 3, '2008-12-19', 'Программист'); SELECT * FROM k_staff; Что же будет, если указать несуществующий номер отдела? INSERT INTO k_staff (staff_name, K_dept_dept_num, staff_hiredate, staff_post) VALUES('Смит', 10, '2013-01-01', 'Консультант'); Будет получена следующая ошибка: Error code: 1452 Cannot add or update a child row: a foreign key constraint fails (`kontora`, `k_staff`, CONSTRAINT `fk_staff_k_dept` FOREIGN KEY (`k_dept_dept_num`) REFERENCES `k_dept` (`dept_num`) … Заполним таблицу Договор INSERT INTO k_contract (contract_type, k_firm_firm_num, k_staff_staff_num, contract_date) VALUES('A', 1, 1, '2011-11-01'); INSERT INTO k_contract (contract_type, k_firm_firm_num, k_staff_staff_num, contract_date) VALUES('B', 1, 2, '2011-10-01'); INSERT INTO k_contract (contract_type, k_firm_firm_num, k_staff_staff_num, contract_date) VALUES('C', 1, 1, '2011-09-01'); INSERT INTO k_contract (contract_type, k_firm_firm_num, k_staff_staff_num, contract_date) VALUES('A', 2, 2, '2011-11-15'); INSERT INTO k_contract (contract_type, k_firm_firm_num, k_staff_staff_num, contract_date) VALUES('B', 2, 2, '2011-08-01'); INSERT INTO k_contract (contract_type, k_firm_firm_num, k_staff_staff_num, contract_date) VALUES('C', 3, 1, '2011-07-15'); INSERT INTO k_contract (contract_type, k_firm_firm_num, k_staff_staff_num, contract_date) VALUES('A', 4, 1, '2011-11-12');
SELECT * FROM k_contract; Заполним таблицу Счет INSERT INTO k_bill (k_contract_contract_num, bill_date, bill_term, bill_sum) VALUES(1, '2011-11-12', '2011-12-12', 1000); INSERT INTO k_bill (k_contract_contract_num, bill_date, bill_term, bill_sum) VALUES(1, '2011-12-12', '2012-01-12', 2000); INSERT INTO k_bill (k_contract_contract_num, bill_date, bill_term, bill_sum) VALUES(1, '2012-01-12', '2012-02-12', 2000); INSERT INTO k_bill (k_contract_contract_num, bill_date, bill_term, bill_sum) VALUES(2, '2011-12-12', '2012-01-12', 6000); INSERT INTO k_bill (k_contract_contract_num, bill_date, bill_term, bill_sum) VALUES(2, '2012-01-12', '2012-02-12', 2000); INSERT INTO k_bill (k_contract_contract_num, bill_date, bill_term, bill_sum) VALUES(3, '2012-01-12', '2012-02-12', 2500); INSERT INTO k_bill (k_contract_contract_num, bill_date, bill_term, bill_sum) VALUES(4, '2011-12-12', '2012-01-12', 1500); INSERT INTO k_bill (k_contract_contract_num, bill_date, bill_term, bill_sum) VALUES(5, '2011-12-12', '2012-01-12', 1200); INSERT INTO k_bill (k_contract_contract_num, bill_date, bill_term, bill_sum) VALUES(5, '2012-01-12', '2012-02-12', 10000);
SELECT * FROM k_bill; И остальные таблицы: SELECT * FROM k_payment; SELECT * FROM k_price; 'У' означает услугу, 'Т' – товар. SELECT * FROM k_protokol; Кроме команды добавления данных 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`) … |
Последнее изменение этой страницы: 2019-06-19; Просмотров: 609; Нарушение авторского права страницы