В этом учебном материале вы узнаете, как использовать оператор INSERT в SQL с синтаксисом и примерами.
Описание
SQL оператор INSERT используется для вставки одной или нескольких записей в таблицу. Существует два синтаксиса для оператора INSERT в зависимости от того, вставляете ли вы одну запись или несколько записей.
Синтаксис
Синтаксис SQL оператора INSERT при вставке одной записи в таблицу:
(column1, column2, ... )
VALUES
(expression1, expression2, ... );
Или синтаксис SQL оператора INSERT при вставке нескольких записей в таблицу:
(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 2 3 4 |
INSERT INTO categories (category_id, category_name) VALUES (150, 'Miscellaneous'); |
Будет вставлена 1 запись. Снова выберите данные из таблицы categories:
1 2 |
SELECT * FROM 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, такой как:
1 2 3 |
INSERT INTO categories VALUES (150, 'Miscellaneous'); |
Однако это опасно по двум причинам. Во-первых, оператор 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:
1 2 3 4 5 6 7 |
INSERT INTO customers (customer_id, last_name, first_name) SELECT employee_number AS customer_id, last_name, first_name FROM employees WHERE employee_number < 1003; |
СОВЕТ: С этим типом INSERT некоторые базы данных требуют от вас псевдонимов имен столбцов в SELECT, чтобы они соответствовали именам столбцов таблицы, в которую вы вставляете. Как вы можете видеть в приведенном выше примере, мы связали первый столбец в операторе SELECT с customer_id.
Будет вставлено 2 записи. Выберите данные из таблицы customers еще раз:
1 2 |
SELECT * FROM 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.