SQL оператор INSERT

В этом учебном материале вы узнаете, как использовать оператор INSERT в SQL с синтаксисом и примерами.

Описание

SQL оператор INSERT используется для вставки одной или нескольких записей в таблицу. Существует два синтаксиса для оператора INSERT в зависимости от того, вставляете ли вы одну запись или несколько записей.

Синтаксис

Синтаксис SQL оператора INSERT при вставке одной записи в таблицу:

INSERT INTO table
(column1, column2, … )
VALUES
(expression1, expression2, … );

Или синтаксис SQL оператора INSERT при вставке нескольких записей в таблицу:

INSERT INTO table
(column1, column2, … )
SELECT expression1, expression2, …
FROM source_tables
[WHERE conditions];

Параметры или аргументы

table
Таблица, в которую нужно вставить записи.
column1, column2
Это столбцы в table для вставки значений.
expression1, expression2
Эти значения присваиваются столбцам в таблице. Поэтому column1 будет присвоено значение expression1, column2 будет присвоено значение expression2 и т.д. ,
source_tables
Используется при вставке записей из другой таблицы. Это исходная таблица при выполнении вставки.
WHERE conditions
Необязательный. Используется при вставке записей из другой таблицы. Это те условия, которые должны быть соблюдены для вставки записей.

Примечание

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

Пример — использование оператора INSERT для вставки одной записи

Самый простой способ использовать оператор INSERT — вставить одну запись в таблицу с помощью ключевого слова VALUES. Давайте рассмотрим пример того, как сделать это в SQL.

В этом примере у нас есть таблица с categories со следующими данными:

category_idcategory_name
25Deli
50Produce
75Bakery
100General Merchandise
125Technology

Давайте вставим новую запись в category. Введите следующий SQL оператор:

Будет вставлена 1 запись. Снова выберите данные из таблицы categories:

Вот результаты, которые вы должны получить:

category_idcategory_name
25Deli
50Produce
75Bakery
100General Merchandise
125Technology
150Miscellaneous

Этот пример вставит одну запись в таблицу categories. Эта новая запись будет иметь category_id 150 и category_name «Miscellaneous».

В этом примере, поскольку вы предоставляете значения для всех столбцов в таблице categories, вы можете опустить имена столбцов и вместо этого написать оператор INSERT, такой как:

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

Пример — использование оператора INSERT для вставки нескольких записей

Поместив оператор SELECT в оператор INSERT, вы можете быстро выполнить несколько операций вставки. Давайте рассмотрим пример того, как это сделать.

В этом примере у нас есть таблица employees со следующими данными:

employee_numberfirst_namelast_namesalarydept_id
1001JustinBieber62000500
1002SelenaGomez57500500
1003MilaKunis71000501
1004TomCruise42000501

И таблица customers со следующими данными:

customer_idfirst_namelast_namefavorite_website
4000JustinBiebergoogle.com
5000SelenaGomezbing.com
6000 MilaKunisyahoo.com
7000TomCruiseoracle.com
8000JohnnyDeppNULL
9000RussellCrowegoogle.com

Теперь давайте вставим некоторую информацию из таблицы employees в таблицу customers:

СОВЕТ: С этим типом INSERT некоторые базы данных требуют от вас псевдонимов имен столбцов в SELECT, чтобы они соответствовали именам столбцов таблицы, в которую вы вставляете. Как вы можете видеть в приведенном выше примере, мы связали первый столбец в операторе SELECT с customer_id.

Будет вставлено 2 записи. Выберите данные из таблицы customers еще раз:

Вот результаты, которые вы должны получить:

customer_idfirst_namelast_namefavorite_website
4000JustinBiebergoogle.com
5000SelenaGomezbing.com
6000 MilaKunisyahoo.com
7000TomCruiseoracle.com
8000JohnnyDeppNULL
9000RussellCrowegoogle.com
1001JustinBieber62000NULL
1002SelenaGomez57500NULL

В этом примере последние 2 записи в таблице customers были вставлены с использованием данных из таблицы employees.