Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Добавление данных

Добавление выбранных данных

     Обычно оператор INSERT служит для добавления строки в таблицу с использованием указанных значений. Существует и другая форма оператора INSERT, она может быть использована для добавления в таблицу результата применения оператора SELECT. Известна эта форма как оператор INSERT SELECT и, как подсказывает название последнего, данный оператор выполняет то же самое, что делают операторы INSERT и SELECT.

     Предположим, вы хотите ввести в таблицу Customers список клиентов из другой таблицы. Вместо того чтобы считывать по одной строке и затем добавлять ее посредством оператора INSERT, вы можете сделать следующее.

Инструкции для следующего примера

В следующем примере данные импортируются из таблицы CustNew в таблицу Customers. Сначала создайте и наполните таблицу CustNew. Формат таблицы CustNew должен быть таким же, как и таблицы Customers, описанной в приложении А. После заполнения CustNew удостоверьтесь в том, что не были использованы значения cust_id, которые уже применялись в таблице Customers (последующая операция insert потерпит неудачу, если значения первичного ключа будут повторяться).

 

INSERT INTO Customers(cust_id, cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_ZIP,
cust_country) SELECT cust_id,
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_ZIP,
cust_country FROM CustNew;

     В этом примере для импорта всех данных из таблицы CustNew в таблицу Customers используется оператор INSERT SELECT. Вместо того чтобы перечислять значения, которые должны быть добавлены, оператор SELECT выбирает их из таблицы CustNew. Каждый столбец в операторе SELECT соответствует столбцу в списке указанных столбцов. Сколько же строк добавит этот оператор? Это зависит от того, сколько строк содержится в таблице CustNew. Если таблица пуста, никакие строки добавлены не будут (и никакое сообщение об ошибке не будет выдано, поскольку эта операция остается правомерной). Если таблица содержит данные, все они будут добавлены в таблицу Customers.

Имена столбцов в операторе INSERT SELECT

В этом примере были использованы одинаковые имена столбцов в операторах insert и select. Учтите, что к именам столбцов не предъявляются никакие требования. В действительности СУБД вообще не обращает внимания на имена столбцов, возвращаемых оператором select. Точнее, ею используется положение столбца, так что первый столбец в select (независимо от имени) будет использован для заполнения первого указанного столбца таблицы и т.д.

     Оператор SELECT, используемый в INSERT SELECT, может включать предложение WHERE для фильтрации данных, которые должны быть добавлены.

Добавление нескольких строк

Оператор insert обычно добавляет только одну строку. Чтобы добавить несколько строк, нужно выполнить несколько операторов insert. Исключением из этого правила является оператор insert select, который может быть использован для добавления многих строк посредством одного оператора — какие бы данные ни возвратил оператор select, они могут быть добавлены в таблицу посредством оператора insert.