INSERT

INSERT — оператор мовиSQL, котрий додає рядки в таблицю. В реляційній СКБД можна визначити два варіанти оператора INSERT.

Однорядковий оператор INSERT дозволяє додавати в таблицю один новий рядок. Він широко використовується в повсякденних аплікаціях, наприклад програмах введення даних.

Багаторядковий оператор INSERT забезпечує витягування даних з однієї частини бази даних, їх трансформацію і додавання в іншу частину. Використовується зазвичай при пакетній обробці і створенні нових даних.

 

Однорядковий INSERT

Синтакс оператора INSERT виглядає наступним чином:

 

INSERT INTO таблиця (колонка1, [колонка2, ... ]) VALUES (значення1, [значення2, ...])

 

Багаторядковий INSERT

Синтаксис

 

INSERT INTO таблиця (колонка1, [колонка2, ... ]) SELECT (колонка1a, [колонка2a, ...]) FROM таблиця_вибірки WHERE ...

 

В запис, що міститься в середині багаторядкового оператора INSERT, стандарт SQL вимагає деяких логічних обмежень:

 

  • В запит не можна включати ORDER BY.
  • Таблиця результату запиту повинна містити таку ж кількість колонок, що і оператор INSERT.
  • Запит не може бути запитом на об'єднання кількох різних операторів SELECT.
  • Ім'я цільової таблиці оператора INSERT не може бути присутнім в виразі FROM запиту на читання чи любого запиту, вкладеного в нього. Таким чином забороняється додавання таблиці саму в себе.

 

Наприклад, якщо ми маємо таблиці такого типу:

Таблиця 1

 

Id

Name

Adress

 

 

 

Таблиця 2

 

Id

City

Phone

 

 

 

 

Тоді запит виду:

 

INSERT INTO table1 (id,name,adress) VALUES (NULL,’Semen’,’Ostafova str.’);

 

Додасть до таблиці table1 новий рядок зі заченнями Name=’Semen’, Adress=’Ostafova str.’, та дозволить системі автоматично вибрати значення для поля id.

 

А такий запит:

 

INSERT INTO table2 (id,city,phone) SELECT table1.id, table1.name,table1.adress FROM table1 WHERE address=’Ostafova str.’;

 

Скопіює з першої таблиці поля table1.name= table2. city, table1.adress= table2. phone, table1.id= table2.id, тільки тих рядків де вказана адреса ’Ostafova str.’.