Insert (SQL) | это... Что такое Insert (SQL)? (original) (raw)

У этого термина существуют и другие значения, см. Insert.

Правильный заголовок этой статьи — INSERT. Он показан некорректно из-за технических ограничений.

INSERT — оператор языка SQL, который позволяет добавить строки в таблицу, заполняя их значениями. Значения можно вставлять перечислением с помощью слова values и перечислив их в круглых скобках через запятую или оператором select.

Содержание

Примеры использования

Используя перечисление значений, с указанием столбцов:

INSERT INTO <название таблицы> ([<Имя столбца>, ... ]) VALUES (<Значение>,...)

Используя перечисление значений, без указания столбцов:

не работает если использовать с set identity_insert

INSERT INTO <название таблицы> VALUES (<Значение>,...)

Используя select:

INSERT INTO <название таблицы> SELECT <имя столбца>,... FROM <название таблицы>

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

Особенности

Во время выполнения оператора могут возникнуть ошибки:

Опция identity_insert (MS SQL Server)

эта инструкция не будет работать, нужно указывать имя таблицы.

Включить опцию:

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

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

Получение ключа

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

SELECT * FROM NEW TABLE ( INSERT INTO phone_book VALUES ( 'Peter Doe','555-2323' ) ) AS t

DB2 для z/OS реализует эту возможность следующим образом:

SELECT EMPNO, HIRETYPE, HIREDATE FROM FINAL TABLE (INSERT INTO EMPSAMP (NAME, SALARY, DEPTNO, LEVEL) VALUES(’Mary Smith’, 35000.00, 11, ’Associate’));

DECLARE @TABLE TABLE ( [id] [SMALLINT] IDENTITY(1,1) NOT NULL, [name] NCHAR NULL);

INSERT INTO @TABLE OUTPUT INSERTED.id VALUES ('Peter Doe');

INSERT INTO phone_book VALUES ( 'Peter Doe','555-2323' ) RETURNING phone_book_id INTO v_pb_id

INSERT INTO phone_book VALUES ( 'Peter Doe','555-2323' ) RETURNING phone_book_id

См. также

Просмотр этого шаблона SQL
Версии SQL-86 • SQL-89 • SQL-92SQL:1999SQL:2003SQL:2008
Ключевые слова CreateDelete • From • HavingInsertJoinMergeNull • Order by • Prepare • Select • Top • TruncateUnionUpdateWhere
Related Эдгар КоддРеляционная база данных
Просмотр этого шаблона Базы данных
Концепции Модель данных • Реляционная (модельалгебраНормальная формаСсылочная целостностьБДСУБД) • Иерархическая модель • Сетевая (модельСУБД) • Объектно-ориентированная (БДСУБД) • ТранзакцияЖурнализацияСекционирование
Объекты Отношение (таблица)ПредставлениеХранимая процедураТриггерКурсорИндекс
Ключи ПотенциальныйПервичныйВнешнийЕстественныйСуррогатный (искусственный) • Суперключ
SQL SELECTINSERTUPDATEMERGEDELETETRUNCATEJOINUNIONINTERSECT • EXCEPT • CREATE • ALTER • DROP • GRANT • COMMITROLLBACK
СУБД IMSDB2InformixOracle DatabaseMicrosoft SQL ServerAdaptive Server EnterpriseTeradata DatabaseFirebirdPostgreSQLMySQLSQLiteMicrosoft AccessVisual FoxProЛИНТЕРCouchDBMongoDB
Компоненты Язык запросовОптимизатор запросовПлан выполнения запросаODBCADOADO.NETJDBC