Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Fondovi-lekcii.doc
Скачиваний:
23
Добавлен:
10.11.2018
Размер:
4.09 Mб
Скачать

Додавання рядків з однієї таблиці в іншу

Введіть:

INSERT INTO table

[(column1, column2..... columnN)]

select_statement;

table- ця назва таблиці, в яку ви додаєте рядок; column1, column2..., columnN- список назв стовпців в ній; select statement- будь-яка команда SELECT, що прочитує рядки даних, які повинні бути додані в таблицю.

pub id

pub.name

city

state

country

P05

This is Pizza? Press

New York

NY

USA

P06

This is Beer? Press

Toronto

ON

Canada

P07

This is Irany? Press

London

NULL

United Kindom

P08

This is Fame? Press

Los Angeles

CA

USA

Кількість стовпців в результаті виконання команди select statement повинне відповідати кількості стовпців в table або списку стовпців. СУБД ігнорує назви стовпців при виконанні команди selееt statement і замість них використовує положення в стовпці. Для першого стовпця в table або column1 використовується перший стовпець select statement в процесі виконання і т.д. Пропущеному стовпцю задається значення за умовчанням або NULL.

Команда-приклад додасть в table декілька рядків.

В решті прикладів цього розділу використовується таблиця new publishers, яку ми створили, щоб показати, як працює команда INSERT SELECT. Таблиця new publishers має ту ж структуру, що і publishers, і використовується тільки як джерела нових рядків, але не змінюється в результаті виконання команди INSERT.

Лістинг 4.5. додає рядки з інформацією про видання Лос-Анджелеса з таблиці nеw publishers в publishers. Ми пропустили список стовпців, тому СУБД буде використовувати положення стовпців в таблиці publishers для додавання значень. Команда лістинга 4.5 додасть в publishers один рядок. Лістинг 4.6 додає рядки з інформацією про неамериканські видання з таблиці new publishers в publishers. Назви стовпців в пунктах INSERT і SELECT тут однакові, проте це необов'язково, оскільки СУБД ігнорує назви стовпців, лічені командою SELECT, і використовує їх положення. Ця команда додасть в publishers два рядки. Речення SELECT може рахувати порожній результат (нуль рядків). Лістинг 4.7 додає рядки з інформацією про видання XXX з таблиці new publishers в publishers. Ми можемо використовувати SELECT* замість списку назв стовпців, оскільки new publishers і publishers мають однакову структуру. Команда з лістинга 4.7 не додасть в publishers жодні рядки, оскільки видавництва з назвою XXX в таблиці new publishers немає.

Лістинг 4.5. Додамо, з рядки з інформацією про видання Лос-Анджелеса з таблиці new publishers в publishers.

INSERT INTO publishers

SELECT

Pub_id,

Pub_name,

City,

State,

country

FROM new publishers

WHERE city = 'Los Angeles';

Лістинг 4.6. Додати рядки з інформацією про неамериканські видання з таблиці new publishers в publishers.

INSERT INTO publishers

(

pub_id,

pub_name,

city,

state,

country)

SELECT

Pub_id,

Pub_name,

City,

state,

country

FROM new publishers

WHERE country <> 'USA';

Лістинг 4.7. Додати рядки з інформацією про видання XXX з таблиці new publishers в publishers.

INSERT INTO publishers(

Pub_id,

Pub_name,

city,

state,

country)

SELECT *

FROM new publishers

WHERE pub name = 'XXX';

В SQL ключове слово INTO є опцією для команди insert. Microsoft Access, Oracle і PostgreSQL обов'язково вимагають введення INTO.

Процес додавання рядків в таблицю і перший раз називається заповненням таблиці.

Ви можете використовувати команду SELECT INTO, щоб створити нову таблицю і заповнити її рядками, які поверне команда SELECT.

Якщо ви бажаєте бути особливо уважними при додаванні рядків, можете перевірити команду INSERT за допомогою тимчасової таблиці.

Ви також можете додавати рядки з ними допомогою представлень

Якщо ви застосовуєте транзакції, скористайтеся командою COMMIT після команди INSERT, щоб зробити зміни постійними.

Якщо table1 і table2 мають однакову структуру, можете вставити всі рядки з table2 в table1 Для цього введіть:

INSERT INTO table1

SELECT * FROM table2;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]