Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Инструкция INSERT

Инструкция INSERT добавляет строки данных в таблицу или представление.

Инструкция INSERТ позволяет записывать строки в таблицу при помощи одного из следующих методов.

Первый метод — это вставка одной или нескольких строк при помощи значений по умолчанию, указанных для столбца в инструкции CREATE TABLE или ALTER TABLE.

  • Второй, наиболее распространенный метод — объявление реальных значений, которые будут вставляться в каждый из столбцов записи.
  • Третий метод, который заполняет таблицу сразу большим количеством записей, -это вставка результирующего набора инструкции SELECT.


Синтаксис SQL 2003

INSERT INTO [ONLY] {имя_таблицы | имя_представления} [(столбец1 [, …])] [OVERRIDE {SYSTEM | USER} VALUES]

{DEFAULT VALUES | VALUES (значение1 [, …]) | инструкция_SЕLЕСТ}


Ключевые слова

[ONLY]

Используемое только в объектных таблицах, это ключевое слово запрещает вставлять в подтаблицы значения, которые вставляются в таблицу имя_таблицы.

имя_таблицы имя представления} [(столбец1 [, …])]

Объявляется обновляемая целевая таблица или представление, в которое будут вставляться данные. Вы должны иметь привилегию INSERT в таблице или, как минимум, в тех столбцах, в которые будут вставляться значения. Если информация о схеме не указывается (пример указания схемы: scott.employee), то подразумевается текущая схема и пользовательский контекст. При желании вы можете указать список столбцов целевой таблицы, в которые будут вставляться данные.

OVERRIDE [SYSTEM USER] VALUES

Ключевое слово SYSTEM используется при вставке в столбец литерального значения, которое иначе будет заменено сгенерированным системой значением, например, на автоматически создаваемый последовательный номер. Предложение OVERRIDE USER VALUES выполняет обратную операцию, то есть вставляет сгенерированные системой значения, даже если пользователь указал собственные.

DEFAULT VALUES

В таблицу вставляются все значения, определяемые параметром DEFAULT столбца (значения по умолчанию), если таковые существуют, или вставляются пустые значения (NULL), если не существуют. (Конечно, параметр DEFAULТстолбца также может быть определен как NULL.) Эта операция вставляет только одну запись. Возможно появление ошибки, связанной с тем, как построены ограничения FOREIGN KEY и UNIQUE в целевой таблице, если такие ограничения существуют.

VALUES (значение! […])

Указываются конкретные значения, которые будут вставляться в целевую таблицу. Количество вставляемых значений должно в точности совпадать с количеством столбцов в списке столбцов. Более того, значения должны быть совместимы по типу и размеру со столбцами целевой таблицы. Каждое значение в списке значений соответствует столбцу в списке столбцов с тем же порядковым номером. Таким образом, данные из первого значения попадают в первый столбец, данные из второго значения — во второй столбец и так далее, до тех пор, пока все столбцы не будут заполнены. При желании вы можете использовать ключевое слово DEFAULT, чтобы вставить в столбец значение, заданное по умолчанию, или NULL, чтобы вставить пустое значение.

инструкция SELECT

Строки, извлекаемые инструкцией данной SELECT, вставляются в целевую таблицу или представление. Значения, извлекаемые полнофункциональной инструкцией SELECT, должны прямо соответствовать столбцам, указанным в списке столбцов. На целевую таблицу или представление нельзя ссылаться в предложениях FROM или JOIN инструкции SELECT.


Общие правила

Вы можете вставлять значения в таблицы или представления, созданные на основе одной таблицы. Инструкция INSERT… VALUES добавляет в таблицу одну строку данных, используя литеральные значения, указанные в инструкции. В следующем примере в таблицу authors вставляется новая строка, посвященная автору Jessica Rabbit.

INSERT INTO authors (au_ld, au_lname, au_fname, phone

address, city, state, zip, contract) VALUES (‘111-11-1111’, ‘Rabbit’, ‘Jessica’, DEFAULT, ‘1717 Main St’, NULL, ‘CA’, ‘90675’, 1)

Каждому столбцу данной таблицы присваивается конкретное литеральное значение, за исключением столбца phone, которому присваивается значение по умолчанию (определяемое в инструкции CREATE TABLE или ALTER TABLE), и столбца city, которому присваивается пустое значение.

Важный момент, который нужно запомнить: вы можете пропускать некоторые столбцы, устанавливая их в NULL (если они могут принимать значения NULL). Операция вставки, которая оставляет пустыми некоторые значения, называется частичной вставкой. Ниже приводится операция частичной вставки, которая выполняет те же действия, что и предыдущая инструкция.

INSERT INTO authors (au_id, au_lname, au_fname, phone, contract) VALUES (‘111-11-1111’, ‘Rabbit’, ‘Jessica’, DEFAULT, 1)

Объединение инструкции INSERT с вложенной инструкцией SELECT позволяет быстро занести в таблицу одну или много строк из результирующего набора данных инструкции SELECT. При использовании инструкции INSERT … SELECT для вставки из одной таблицы в другую важно обеспечить совместимость типов данных, возвращаемых инструкцией SELECT, с типами данных целевой таблицы. Например, чтобы вставить данные из таблицы sales в таблицу new_sales, можно использовать следующую инструкцию.

INSERT INTO sales (stor_id, ord_num, ord_date, qty, payterms

title_id) SELECT

CAST(store_nbr AS CHAR(4)), CAST(order_nbr AS VARCHAR(20)), order_date, quantity

SUBSTRING(payment_terms, 1.12), CAST(title_nbr AS CHAR(1)) FROM new_sales

WHERE order_date >= 01-JAN-2005

— извлекаются только наиболее новые записи

Вы должны через запятую указать столбцы таблицы, в которые будут помещаться данные, заключив их в скобки. Этот список столбцов можно опустить, но тогда будут использоваться все столбцы таблицы, в порядке их расположения. Столбцу с опущенным значением будет присвоено значение по умолчанию (в соответствии с параметром DEFAULT определения столбца таблицы) или, если это значение отсутствует, NULL. Столбцы в списке столбцов можно указывать в любом порядке, но нельзя повторять их. Кроме того, столбцы и соответствующие им значения должны быть совместимы по типу данных и размеру.

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

INSERT INTO authors

VALUES (‘111-11-1111’, ‘Rabbit’, ‘Jessica’, DEFAULT, ‘1717 Main St’, NULL, ‘CA’, ‘90675’, 1)

INSERT INTO temp_details DEFAULT VALUES

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

Источник