* Вмъкване на данни
Публикувано на 15 февруари 2009 в раздел Бази от Данни.
След като вече знаем как се създава база от данни е време да научим как се вмъква информация в нея. За целта съществува команда "INSERT INTO". Нека вкараме имената на два университета в таблица "university" от база от данни "university":
INSERT INTO `university`.`university` (`id` , `name` , `founded`) VALUES ( NULL , 'Sofia University', '1889-01-29' ); INSERT INTO `university`.`university` (`id` , `name` , `founded`) VALUES ( NULL , 'Techical University', '1941-06-12' );
Виждате, че на полета `id` зададохме стойност NULL, но ако прелистим базата ще видим, че то не е:
Това е така, поради дефиницията на полето `id` от таблица `university` - там бяхме посочили, че то е "auto_increment":
Досещате се, че при добавяне на още един запис той ще получи id = 3. Поради тази причина такива колони се използват изключително често като уникален идентификатор и съответно първичен ключ.
Възможно е добавянето на повече от един ред с една INSERT заявка:
INSERT INTO `university`.`faculties` (`id` ,`name` ,`univ_id` ,`dekan_id`) VALUES ( NULL , 'Avtomatika', '2', NULL ), ( NULL , 'Elektronna Tehnika i Tehnologii', '2', NULL ), ( NULL , 'Elektrotehnicheski', '2', NULL ), ( NULL , 'Energo-mashinostroitelen', '2', NULL ), ( NULL , 'Kompiutarni sistemi i upravlenie', '2', NULL ), ( NULL , 'Mashino-tehnologichen', '2', NULL ); INSERT INTO `university`.`faculties` (`id` ,`name` ,`univ_id` ,`dekan_id` ) VALUES ( NULL , 'Biologicheski', '1', NULL ), ( NULL , 'Himicheski', '1', NULL ), ( NULL , 'Matematika i informatika', '1', NULL ), ( NULL , 'Istoricheski', '1', NULL ), ( NULL , 'Fizicheski', '1', NULL );
Нека видим как са се записали в таблицата:
Аналогично се добавят записи и в другите таблици.
Ето един примерен файл, чрез който ще бъде създадена базата от данни, добавени два университета, няколко техни факултета и техни преподаватели: university.sql
Какво и е грешното в синтаксиса на тази заявка, че не я изпълнява?
INSERT INTO `firm`.`firms`(`id`,`name`),
VALUES (NULL, `borsa1`),
(NULL, `borsa2`),
(NULL, `borsa3`),
Низовите променливи се ограждат с ' кавички, а не с `. Апострофът (`) се използва за изброяване на имена на полета. Освен това заявката трябва да завършва с ;. Накрая след скобите на INSERT INTO няма запетайка. Т.е. заявката ти трябва да е:
INSERT INTO `firm`.`firms`(`id`,`name`)
VALUES (NULL, 'borsa1'),
(NULL, 'borsa2'),
(NULL, 'borsa3');
Георги - може, като се използва UPDATE заявка.
След като 1 път съм въвел информация в таблица мога ли да е допълна, т.е. ако наприрмер в таблицата faculties съм въвел всичко без dekan_id мога ли след това да го въведа само това и как ?
Огради имената и градовете с кавички.
INSERT INTO request.clients (Id, Name, Address)
VALUES (14, Ivan Petrov, Sofia),
(77, Peter Petrov, Varna),
(49, Iva Kirilova, Sofia),
(89, Hristo Penev, Plovdiv);
Дава ми грешка в синтаксиса, но немога да я открия ... може ли помощ ?
А защо dekan_id си остана NULL? Каква информация точно ни носи този стълб? Не трябва ли по-скоро да имаме таблица с имена на Декани и тн?
Първоначално не е възможно да не е NULL, защото все още няма вмъкнати преподаватели. Чак след като се вкарат преподаватели, някой от тях може да бъде избран за декан с ALTER TABLE.