22-10-2023
INSERT — оператор языка SQL, который позволяет добавить строки в таблицу, заполняя их значениями. Значения можно вставлять перечислением с помощью слова values и перечислив их в круглых скобках через запятую или оператором select.
Содержание |
Используя перечисление значений, с указанием столбцов:
INSERT INTO <название таблицы> ([<Имя столбца>, ... ]) VALUES (<Значение>,...)
Используя перечисление значений, без указания столбцов:
INSERT INTO <название таблицы> VALUES (<Значение>,...)
Используя select:
INSERT INTO <название таблицы> SELECT <имя столбца>,... FROM <название таблицы>
В последнем случае, в таблицу может вставиться более одной записи. Если в таблице есть другие поля требующие заполнения, но не указанные в операторе insert, для них будет установлено значение по умолчанию, либо null, если значение по умолчанию не указано.
Во время выполнения оператора могут возникнуть ошибки:
Включить опцию:
SET identity_insert ON
После включения этой опции можно вставлять значения в поля определенные как identity. Нужно учесть, что значение должно быть уникальным. Включать эту опцию не рекомендуется, её следует использовать в записях в которых нужно сменить некоторые столбцы, не поменяв её identity столбец (например если по этому столбцу подцепляется другая таблица)
Разработчики, которые используют суррогатный ключ в качестве первичного ключа, часто сталкиваются со сценарием, когда необходимо получить первичный ключ (для использования в других запросах), сгенерированный базой данных в ответ на оператор SQL INSERT. Но большинство систем не позволяют оператору SQL INSERT возвращать данные. Возможные способы решения:
SELECT * FROM NEW TABLE ( INSERT INTO phone_book VALUES ( 'Peter Doe','555-2323' ) ) AS t
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](50) 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
SELECT IDENTITY();
Это заготовка статьи о программировании. Вы можете помочь проекту, исправив и дополнив её. |
SQL | |
---|---|
Версии | SQL-86 • SQL-89 • SQL-92 • SQL:1999 • SQL:2003 • SQL:2008 |
Ключевые слова | Create • Delete • From • Having • Insert • Join • Merge • Null • Order by • Prepare • Select • Top • Truncate • Union • Update • Where |
Related | Эдгар Кодд • Реляционная база данных |
Базы данных | |
---|---|
Концепции |
Модель данных • Реляционная (модель • алгебра • Нормальная форма • Ссылочная целостность • БД • СУБД) • Иерархическая модель • Сетевая (модель • СУБД) • Объектно-ориентированная (БД • СУБД) • Транзакция • Журнализация • Секционирование |
Объекты | |
Ключи |
Потенциальный • Первичный • Внешний • Естественный • Суррогатный (искусственный) • Суперключ |
SQL | |
СУБД |
IMS • DB2 • Informix • Oracle Database • Microsoft SQL Server • Adaptive Server Enterprise • Teradata Database • Firebird • PostgreSQL • MySQL • SQLite • Microsoft Access • Visual FoxPro • ЛИНТЕР • CouchDB • MongoDB |
Компоненты |
Insert (SQL).