C, PHP, VB, .NET

Дневникът на Филип Петров


* Вмъкване на данни

Публикувано на 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, но ако прелистим базата ще видим, че то не е:

SQL insert into

Това е така, поради дефиницията на полето `id` от таблица `university` - там бяхме посочили, че то е "auto_increment":

SQL 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 );

Нека видим как са се записали в таблицата:

SQL multiple insert into

Аналогично се добавят записи и в другите таблици.

Ето един примерен файл, чрез който ще бъде създадена базата от данни, добавени два университета, няколко техни факултета и техни преподаватели: university.sql

 



8 коментара


  1. Какво и е грешното в синтаксиса на тази заявка, че не я изпълнява?
    INSERT INTO `firm`.`firms`(`id`,`name`),
    VALUES (NULL, `borsa1`),
    (NULL, `borsa2`),
    (NULL, `borsa3`),

  2. Низовите променливи се ограждат с ' кавички, а не с `. Апострофът (`) се използва за изброяване на имена на полета. Освен това заявката трябва да завършва с ;. Накрая след скобите на INSERT INTO няма запетайка. Т.е. заявката ти трябва да е:

    INSERT INTO `firm`.`firms`(`id`,`name`)
    VALUES (NULL, 'borsa1'),
    (NULL, 'borsa2'),
    (NULL, 'borsa3');

  3. След като 1 път съм въвел информация в таблица мога ли да е допълна, т.е. ако наприрмер в таблицата faculties съм въвел всичко без dekan_id мога ли след това да го въведа само това и как ?

  4. INSERT INTO request.clients (Id, Name, Address)
    VALUES (14, Ivan Petrov, Sofia),
    (77, Peter Petrov, Varna),
    (49, Iva Kirilova, Sofia),
    (89, Hristo Penev, Plovdiv);

    Дава ми грешка в синтаксиса, но немога да я открия ... може ли помощ ?

  5. А защо dekan_id си остана NULL? Каква информация точно ни носи този стълб? Не трябва ли по-скоро да имаме таблица с имена на Декани и тн?

  6. Първоначално не е възможно да не е NULL, защото все още няма вмъкнати преподаватели. Чак след като се вкарат преподаватели, някой от тях може да бъде избран за декан с ALTER TABLE.

Добави коментар

Адресът на електронната поща няма да се публикува


*