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_id category_name
25 Deli
50 Produce
75 Bakery
100 General Merchandise
125 Technology

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

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

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

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

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

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

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

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

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

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

employee_number first_name last_name salary dept_id
1001 Justin Bieber 62000 500
1002 Selena Gomez 57500 500
1003 Mila Kunis 71000 501
1004 Tom Cruise 42000 501

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

customer_id first_name last_name favorite_website
4000 Justin Bieber google.com
5000 Selena Gomez bing.com
6000  Mila Kunis yahoo.com
7000 Tom Cruise oracle.com
8000 Johnny Depp NULL
9000 Russell Crowe google.com

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

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

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

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

customer_id first_name last_name favorite_website
4000 Justin Bieber google.com
5000 Selena Gomez bing.com
6000  Mila Kunis yahoo.com
7000 Tom Cruise oracle.com
8000 Johnny Depp NULL
9000 Russell Crowe google.com
1001 Justin Bieber 62000 NULL
1002 Selena Gomez 57500 NULL

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