Sql оператор insert: INSERT | SQL | SQL-tutorial.ru
Оператор INSERT в SQL, примеры
Здравствуйте, уважаемые читатели. Продолжаем изучать запросы на языке SQL, и сегодня мы затронем еще один важный оператор — INSERT SQL. Разберем примеры, связанные с этим оператором.
Введение
Напомним, что в прошлый раз мы создали базу данных и три таблицы с помощью оператора CREATE, подробнее вы можете почитать об этом здесь.
Таблицы, которые были созданы (Salespeople (Продавцы), Customers (Заказчики), Orders (Заказы)) пока что не содержат никаких данных. И, конечно, следует заполнить их данными, подходящими для каждой таблицы в отдельности.
Общая информация об INSERT в SQL
В SQL заполнение таблиц данными можно осуществить с помощью оператора INSERT INTO. В общем виде, запрос в базе данных можно представить так:
INSERT INTO имя_таблицы (список_столбцов_для_вставки) VALUES (список_вставляемых_значений)
Очевидно, что количество элементов в списке столбцов должно быть одинаковым с количеством вставляемых значений, чтобы было соответствие. То есть если вы попробуете выполнить следующий запрос:
INSERT INTO salespeople (snum, sname) VALUES (1001, "Колованов", "Москва")
то система, в которой выполняется этот SQL запрос, выдаст ошибку.
Примеры с оператором INSERT
Для начала мы выполним SQL запросы, которые добавят данные в наши таблицы, чтобы в следующих статьях мы могли к ним обращаться и каким либо образом взаимодействовать. Начнем с таблицы salespeople, у которой 4 столбца:
INSERT INTO salespeople (snum, sname, city, comm) VALUES (1, "Колованов", "Москва", 10), (2, "Петров", "Тверь", 25), (3, "Плотников", "Москва", 22), (4, "Кучеров", "Санкт-Петербург", 28), (5, "Малкин", "Санкт-Петербург", 18), (6, "Шипачев", "Челябинск", 30), (7, "Мозякин", "Одинцово", 25), (8, "Проворов", "Москва", 25)
Примечание: чтобы понять, правильно ли сработал запрос, нужно вывести данные таблицы. Это делается с помощью оператора SQL — SELECT (это тема следующих статей, поэтому здесь разберем кратко). Выполняем запрос:
SELECT * FROM salespeople
И получаем такую таблицу с заполненными данными:
snum | sname | city | comm |
---|---|---|---|
1 | Колованов | Москва | 10 |
2 | Петров | Тверь | 25 |
3 | Плотников | Москва | 22 |
4 | Кучеров | Санкт-Петербург | 28 |
5 | Малкин | Санкт-Петербург | 18 |
6 | Шипачев | Челябинск | 30 |
7 | Мозякин | Одинцово | 25 |
8 | Проворов | Москва | 25 |
Итак, далее заполним остальные таблицы:
INSERT INTO customers (cnum, cname, city, rating, snum) VALUES (1, "Деснов", "Москва", 90, 6), (2, "Краснов", "Москва", 95, 7), (3, "Кириллов", "Тверь", 96, 3), (4, "Ермолаев", "Обнинск", 98, 3), (5, "Колесников", "Серпухов", 98, 5), (6, "Пушкин", "Челябинск", 90, 4), (7, "Лермонтов", "Одинцово", 85, 1), (8, "Белый", "Москва", 89, 3), (9, "Чудинов", "Москва", 96, 2), (10, "Лосев", "Одинцово", 93, 8)
INSERT INTO orders (onum, amt, odate, cnum, snum) VALUES (1001, 128, '2016-01-01', 9, 4), (1002, 1800, '2016-04-10', 10, 7), (1003, 348, '2017-04-08', 2, 1), (1004, 500, '2016-06-07', 3, 3), (1005, 499, '2017-12-04', 5, 4), (1006, 320, '2016-03-03', 5, 4), (1007, 80, '2017-09-02', 7, 1), (1008, 780, '2016-03-07', 1, 3), (1009, 560, '2017-10-07', 3, 7), (1010, 900, '2016-01-08', 6, 8)
На всякий случай напомню, что в таблице orders(заказы) колонка amt означает стоимость заказа, cnum — номер покупателя, snum — номер продавца, оформившего сделку.
Дополнительная информация
Если вы ввели неправильные данные в таблицу, то всю таблицу можно очистить с помощью SQL оператора TRUNCATE:
TRUNCATE TABLE orders
Если же вы хотите удалить определенную строку, то нужно воспользоваться оператором DELETE, а также указать какую то информацию, описывающую данную строку, например в salespeople это будет snum:
DELETE FROM salespeople WHERE snum = 1
При таком запросе удалится одна строка. В принципе можно удалять несколько строк, если в WHERE указать условие, подходящее для нескольких строк.
Заключение
Итак, мы познакомились с оператором INSERT языка SQL, который вставляет данные в таблицы, на примерах сами научились это делать. На этом все, если у вас остались вопросы, то оставляйте их в комментариях.
Поделиться ссылкой:
Похожее
Команда INSERT — вставка записей в базу данных
Команда INSERT вставляет записи в базу данных.
Можно вставить или одну запись, или сразу несколько.
См. также команды
SELECT,
UPDATE,
DELETE,
которые отвечают за получение, редактирование и удаление записей.
См. также команду
SELECT INTO,
которая копирует данные из одной таблицы в другую.
Синтаксис
Первый синтаксис:
INSERT INTO имя_таблицы SET поле1=значение1, поле2=значение2, поле3=значение3...
Второй синтаксис:
INSERT INTO имя_таблицы (поле1, поле2...) VALUES (значение1, значение2...)
Одновременно много записей:
INSERT INTO имя_таблицы (поле1, поле2...)
VALUES (значение1, значение2...), (значение1, значение2...)..."
Примеры
Все примеры будут по этой таблице workers, если не сказано иное:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
Пример
Добавим с помощью первого синтаксиса
нового работника Васю с возрастом 23 и зарплатой 500:
INSERT INTO workers SET name='Вася', age=23, salary=500
Таблица workers станет выглядеть так:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
Пример
Добавим с помощью второго синтаксиса
нового работника Васю с возрастом 23 и зарплатой 500:
INSERT INTO workers (name, age, salary) VALUES ('Вася', 23, 500)
Таблица workers станет выглядеть так:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
Пример
Добавим одновременно
нового работника Васю с возрастом 23 и зарплатой 500
и работника Колю с возрастом 30 и зарплатой 1000:
INSERT INTO workers (name, age, salary) VALUES ('Вася', 23, 500), ('Коля', 30, 1000)
Таблица workers станет выглядеть так:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
4 | Коля | 30 | 1000 |
Пример
Давайте добавим
нового работника Васю с возрастом 23, но не указав ему зарплату.
Вместо нее вставится значение по умолчанию:
INSERT INTO workers (name, age) VALUES ('Вася', 23)
Таблица workers станет выглядеть так:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 0 |
Добавление данных, оператор insert
Для добавления новых записей в таблицу предназначен оператор INSERT.
Общая структура запроса с оператором INSERT
INSERT INTO имя_таблицы [(поле_таблицы, ...)]
VALUES (значение_поля_таблицы, ...)
| SELECT поле_таблицы, ... FROM имя_таблицы ...
В описанной структуре запроса необязательные параметры указаны в квадратных скобках. Вертикальной чертой обозначен альтернативный синтаксис.
Значения можно вставлять перечислением с помощью слова values, перечислив их в круглых скобках через запятую или c помощью оператора select. Таким образом, добавить новые записей можно следующими способами:
INSERT INTO Goods (good_id, good_name, type)
VALUES (5, 'Table', 2);
INSERT INTO Goods VALUES (5, 'Table', 2);
INSERT INTO Goods
SELECT good_id, good_name, type FROM Goods where good_name = 2;
Первичный ключ при добавлении новой записи
Следует помнить, что первичный ключ таблицы является уникальным значением и добавление уже существующего значения приведет к ошибке.
При добавлении новой записи с уникальными индексами выбор такого уникального значения может оказаться непростой задачей. Решением может быть дополнительный запрос, направленный на выявление максимального значения первичного ключа для генерации нового уникального значения.
INSERT INTO Goods SELECT COUNT(*) + 1, 'Table', 2 FROM Goods;
MySQL
В MySQL введен механизм его автоматической генерации. Для этого достаточно снабдить первичный ключ good_id атрибутом AUTO_INCREMENT. Тогда при создании новой записи в качестве значения good_id достаточно передать NULL или 0 — поле автоматически получит значение, равное максимальному значению столбца good_id, плюс единица.
CREATE TABLE Goods (
good_id INT NOT NULL AUTO_INCREMENT
...
);
INSERT INTO Goods VALUES (NULL, 'Table', 2);
PostgreSQL
В PostgreSQL есть схожий механизм для автоматической генерации уникального идентификатора. Для этого он имеет типы SMALLSERIAL SERIAL BIGSERIAL, которые не являются настоящими типами, а скорее просто удобством записи столбцов с уникальным идентификатором. Столбец с одним из вышеперечисленных типов будет являться целочисленным и автоматически увеличиваться при добавление новой записи.
CREATE TABLE Goods (
good_id SERIAL
...
);
INSERT INTO Goods (good_name, type) VALUES ('Table', 2);
Инструкция INSERT INTO в Transact-SQL – несколько способов добавления данных в таблицу | Info-Comp.ru
Всем привет! В данной статье речь пойдет о том, как можно добавлять данные в таблицу в Microsoft SQL Server, если Вы уже хоть немного знакомы с языком T-SQL, то наверно поняли, что сейчас мы будем разговаривать об инструкции INSERT, а также о том, как ее можно использовать для добавления данных в таблицу.
Начнем по традиции с небольшой теории.
Инструкция INSERT в T-SQL
INSERT – это инструкция языка T-SQL, которая предназначена для добавления данных в таблицу, т.е. создания новых записей. Данную инструкцию можно использовать как для добавления одной строки в таблицу, так и для массовой вставки данных. Для выполнения инструкции INSERT требуется разрешение на вставку данных (INSERT) в целевую таблицу.
Существует несколько способов использования инструкции INSERT в части данных, которые необходимо вставить:
- Перечисление конкретных значений для вставки;
- Указание набора данных в виде запроса SELECT;
- Указание набора данных в виде вызова процедуры, которая возвращает табличные данные.
Заметка! Начинающим рекомендую посмотреть мой видеокурс по T-SQL.
Упрощённый синтаксис
INSERT [INTO] [таблица] (список столбцов, …) VALUES (список значений, …) Или SELECT запрос на выборку Или EXECUTE процедура
Где,
- INSERT INTO – это команда добавления данных в таблицу;
- Таблица – это имя целевой таблицы, в которую необходимо вставить новые записи;
- Список столбцов – это перечень имен столбцов таблицы, в которую будут вставлены данные, разделенные запятыми;
- VALUES – это конструктор табличных значений, с помощью которого мы указываем значения, которые будем вставлять в таблицу;
- Список значений – это значения, которые будут вставлены, разделенные запятыми. Они перечисляются в том порядке, в котором указаны столбцы в списке столбцов;
- SELECT – это запрос на выборку данных для вставки в таблицу. Результирующий набор данных, который вернет запрос, должен соответствовать списку столбцов;
- EXECUTE – это вызов процедуры на получение данных для вставки в таблицу. Результирующий набор данных, который вернет хранимая процедура, должен соответствовать списку столбцов.
Вот примерно так и выглядит упрощённый синтаксис инструкции INSERT INTO, в большинстве случаев именно так Вы и будете добавлять новые записи в таблицы.
Список столбцов, в которые Вы будете вставлять данные, можно и не писать, в таком случае их порядок будет определен на основе фактического порядка столбцов в таблице. При этом необходимо помнить этот порядок, когда Вы будете указывать значения для вставки или писать запрос на выборку. Лично я Вам рекомендую все-таки указывать список столбцов, в которые Вы планируете добавлять данные.
Также следует помнить и то, что в списке столбцов и в списке значений, соответственно, должны присутствовать так называемые обязательные столбцы, это те, которые не могут содержать значение NULL. Если их не указать, и при этом у столбца отсутствует значение по умолчанию, будет ошибка.
Еще хотелось бы отметить, что тип данных значений, которые Вы будете вставлять, должен соответствовать типу данных столбца, в который будет вставлено это значение, ну или, хотя бы, поддерживал неявное преобразование. Но я Вам советую контролировать тип данных (формат) значений, как в списке значений, так и в запросе SELECT.
Хватит теории, переходим к практике.
Исходные данные
Для того чтобы добавлять данные в таблицу, нам нужна соответственно сама таблица, давайте ее создадим, и уже в нее будем пробовать добавлять записи.
Примечание! Все примеры будут выполнены в Microsoft SQL Server 2016 Express.
CREATE TABLE TestTable( [Id] [INT] IDENTITY(1,1) NOT NULL, [ProductName] [VARCHAR](100) NOT NULL, [Price] [Money] NOT NULL )
Наша тестовая таблица, будет содержать перечень товаров с ценой.
Также в примерах мы будем использовать процедуру, которая возвращает табличное значение, для добавления данных в таблицу, поэтому давайте ее тоже создадим.
CREATE PROCEDURE TestProcedure AS BEGIN SELECT ProductName, Price FROM TestTable END
Для примера она у нас будет возвращать данные из только что созданной таблицы TestTable.
Примечание!
Как Вы понимаете, чтение данного материала подразумевает наличные определенных знаний по языку T-SQL, поэтому если Вам что-то непонятно, рекомендую ознакомиться со следующими материалами:
Пример 1 – Добавляем новую запись в таблицу с использованием конструктора табличных значений
Сначала давайте попробуем добавить одну запись и сразу посмотрим на результат, т.е. напишем запрос на выборку.
INSERT INTO TestTable(ProductName, Price) VALUES ('Компьютер', 100) GO SELECT * FROM TestTable
Вы видите, что мы после названия таблицы перечислили через запятую имена столбцов, в которые мы будем добавлять данные, затем мы указали ключевое слово VALUES и в скобочках также, в том же порядке, через запятую написали значения, которые мы хотим вставить.
После инструкции INSERT я написал инструкцию SELECT и разделил их командой GO.
А теперь давайте представим, что нам нужно добавить несколько строк. Мы для этого напишем следующий запрос.
INSERT INTO TestTable(ProductName, Price) VALUES ('Компьютер', 100), ('Клавиатура', 20), ('Монитор', 50) GO SELECT * FROM TestTable
В данном случае мы добавили три записи, т.е. три строки. После VALUES значения каждой новой строки указаны в скобочках, разделили мы их запятыми.
Пример 2 – Добавляем новые строки в таблицу с использованием запроса SELECT
Очень часто возникает необходимость добавлять много данных в таблицу, например, на основе запроса на выборку, т.е. SELECT. Для этого вместо VALUES нам всего лишь нужно указать запрос.
INSERT INTO TestTable(ProductName, Price) SELECT ProductName, Price FROM TestTable WHERE Id > 2 GO SELECT * FROM TestTable
В данном примере мы написали запрос SELECT, который возвращает данные из таблицы TestTable, но не все, а только те, у которых идентификатор больше 2. А результат вставили все в ту же таблицу TestTable.
В качестве примера того, как можно добавлять записи в таблицу без указания списка столбцов, давайте напишем еще один запрос на вставку данных, который сделает равно то же самое что и запрос выше, только в нем не будет перечисления столбцов для вставки.
INSERT INTO TestTable SELECT ProductName, Price FROM TestTable WHERE Id > 2 GO SELECT * FROM TestTable
В данном случае мы уверены в том, что в таблице TestTable первый столбец это ProductName, а второй Price, поэтому мы можем позволить себе написать именно так. Но, снова повторюсь, на практике лучше указывать список столбцов.
Если Вы заметили, я во всех примерах не указывал столбец Id, а он у нас есть, ошибки не возникло, так как данный столбец со свойством IDENTITY, он автоматически генерирует идентификаторы, поэтому в такой столбец вставить данные просто не получится.
Пример 3 – Добавляем новые записи в таблицу с использованием хранимой процедуры
Сейчас давайте вставим в таблицу данные, которые нам вернёт хранимая процедура. Смысл здесь такой же, вместо VALUES и вместо запроса мы указываем вызов процедуры. Но как Вы понимаете, порядок и количество столбцов, возвращаемых процедурой, должен строго совпадать со списком столбцов для вставки (даже если список столбцов не указан).
INSERT INTO TestTable(ProductName, Price) EXEC TestProcedure GO SELECT * FROM TestTable
Надеюсь, данный материал помог Вам разобраться с инструкцией INSERT INTO, а у меня все, пока!
Нравится1Не нравится
Insert into values where — Вэб-шпаргалка для интернет предпринимателей!
Инструкция SQL INSERT INTO и INSERT SELECT используются для вставки новых строк в таблицу. Существует два способа использования инструкций:
- Только значения : Первый метод предусматривает указание только значений данных, которые нужно вставить без имен столбцов.
- Имена столбцов и значения : При втором методе указываются имена столбцов и значения строк для вставки:
Запросы :
Способ 1 ( вставка только значений ):
После использования INSERT INTO SELECT таблица Student теперь будет выглядеть следующим образом:
ROLL_NO | NAME | ADDRESS | PHONE | Age |
1 | Ram | Delhi | 9455123451 | 18 |
2 | RAMESH | GURGAON | 9562431543 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
4 | SURESH | Delhi | 9156768971 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
2 | RAMESH | GURGAON | 9562431543 | 18 |
5 | HARSH | WEST BENGAL | 8759770477 | 19 |
Способ 2 ( вставка значений только в указанные столбцы ):
Таблица Student теперь будет выглядеть следующим образом:
ROLL_NO | NAME | ADDRESS | PHONE | Age |
1 | Ram | Delhi | 9455123451 | 18 |
2 | RAMESH | GURGAON | 9562431543 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
4 | SURESH | Delhi | 9156768971 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
2 | RAMESH | GURGAON | 9562431543 | 18 |
5 | PRATIK | null | null | 19 |
Обратите внимание, что для столбцов, значения для которых не указаны, задается null .
Использование SELECT в инструкции INSERT INTO
Можно использовать инструкцию MySQL INSERT SELECT для копирования строк из одной таблицы и их вставки в другую.
Использование этого оператора аналогично использованию INSERT INTO . Разница в том, что оператор SELECT применяется для выборки данных из другой таблицы. Ниже приведены различные способы использования INSERT INTO SELECT :
- Вставка всех столбцов таблицы : можно скопировать все данные таблицы и вставить их в другую таблицу.
Мы использовали инструкцию SELECT для копирования данных из одной таблицы и инструкцию INSERT INTO для их вставки в другую.
- Вставка отдельных столбцов таблицы . Можно скопировать только те столбцы таблицы, которые необходимо вставить в другую таблицу.
Мы использовали инструкцию SELECT для копирования данных только из выбранных столбцов второй таблицы и инструкцию MySQL INSERT INTO SELECT для их вставки в первую таблицу.
- Копирование определенных строк из таблицы . Можно скопировать определенные строки из таблицы для последующей вставки в другую таблицу с помощью условия WHERE с оператором SELECT . В этом случае нужно использовать соответствующее условие в WHERE .
Таблица 2: LateralStudent
ROLL_NO | NAME | ADDRESS | PHONE | Age |
7 | SOUVIK | DUMDUM | 9876543210 | 18 |
8 | NIRAJ | NOIDA | 9786543210 | 19 |
9 | SOMESH | ROHTAK | 9687543210 | 20 |
Способ 1 ( вставка всех строк и столбцов ):
Этот запрос вставит все данные таблицы LateralStudent в таблицу Student . После применения SQL INSERT INTO SELECT таблица Student будет выглядеть следующим образом:
ROLL_NO | NAME | ADDRESS | PHONE | Age |
1 | Ram | Delhi | 9455123451 | 18 |
2 | RAMESH | GURGAON | 9562431543 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
4 | SURESH | Delhi | 9156768971 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
2 | RAMESH | GURGAON | 9562431543 | 18 |
7 | SOUVIK | DUMDUM | 9876543210 | 18 |
8 | NIRAJ | NOIDA | 9786543210 | 19 |
9 | SOMESH | ROHTAK | 9687543210 | 20 |
Способ 2 ( вставка отдельных столбцов ):
Этот запрос вставит данные из столбцов ROLL_NO , NAME и Age таблицы LateralStudent в таблицу Student . Для остальных столбцов таблицы Student будет задано значение null . После применения SQL INSERT SELECT таблица будет выглядеть следующим образом:
ROLL_NO | NAME | ADDRESS | PHONE | Age |
1 | Ram | Delhi | 9455123451 | 18 |
2 | RAMESH | GURGAON | 9562431543 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
4 | SURESH | Delhi | 9156768971 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
2 | RAMESH | GURGAON | 9562431543 | 18 |
7 | SOUVIK | Null | null | 18 |
8 | NIRAJ | Null | null | 19 |
9 | SOMESH | Null | null | 20 |
- Выбор определенных строк для вставки :
Этот запрос выберет только первую строку из таблицы LateralStudent для вставки в таблицу Student . После применения INSERT SELECT таблица будет выглядеть следующим образом:
ROLL_NO | NAME | ADDRESS | PHONE | Age |
1 | Ram | Delhi | 9455123451 | 18 |
2 | RAMESH | GURGAON | 9562431543 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
4 | SURESH | Delhi | 9156768971 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
2 | RAMESH | GURGAON | 9562431543 | 18 |
7 | SOUVIK | DUMDUM | 9876543210 | 18 |
Данная публикация представляет собой перевод статьи « SQL INSERT INTO Statement » , подготовленной дружной командой проекта Интернет-технологии.ру
Всем привет! В данной статье речь пойдет о том, как можно добавлять данные в таблицу в Microsoft SQL Server, если Вы уже хоть немного знакомы с языком T-SQL, то наверно поняли, что сейчас мы будем разговаривать об инструкции INSERT, а также о том, как ее можно использовать для добавления данных в таблицу.
Начнем по традиции с небольшой теории.
Инструкция INSERT в T-SQL
INSERT – это инструкция языка T-SQL, которая предназначена для добавления данных в таблицу, т.е. создания новых записей. Данную инструкцию можно использовать как для добавления одной строки в таблицу, так и для массовой вставки данных. Для выполнения инструкции INSERT требуется разрешение на вставку данных (INSERT) в целевую таблицу.
Существует несколько способов использования инструкции INSERT в части данных, которые необходимо вставить:
- Перечисление конкретных значений для вставки;
- Указание набора данных в виде запроса SELECT;
- Указание набора данных в виде вызова процедуры, которая возвращает табличные данные.
Упрощённый синтаксис
- INSERT INTO – это команда добавления данных в таблицу;
- Таблица – это имя целевой таблицы, в которую необходимо вставить новые записи;
- Список столбцов – это перечень имен столбцов таблицы, в которую будут вставлены данные, разделенные запятыми;
- VALUES – это конструктор табличных значений, с помощью которого мы указываем значения, которые будем вставлять в таблицу;
- Список значений – это значения, которые будут вставлены, разделенные запятыми. Они перечисляются в том порядке, в котором указаны столбцы в списке столбцов;
- SELECT – это запрос на выборку данных для вставки в таблицу. Результирующий набор данных, который вернет запрос, должен соответствовать списку столбцов;
- EXECUTE – это вызов процедуры на получение данных для вставки в таблицу. Результирующий набор данных, который вернет хранимая процедура, должен соответствовать списку столбцов.
Вот примерно так и выглядит упрощённый синтаксис инструкции INSERT INTO, в большинстве случаев именно так Вы и будете добавлять новые записи в таблицы.
Список столбцов, в которые Вы будете вставлять данные, можно и не писать, в таком случае их порядок будет определен на основе фактического порядка столбцов в таблице. При этом необходимо помнить этот порядок, когда Вы будете указывать значения для вставки или писать запрос на выборку. Лично я Вам рекомендую все-таки указывать список столбцов, в которые Вы планируете добавлять данные.
Также следует помнить и то, что в списке столбцов и в списке значений, соответственно, должны присутствовать так называемые обязательные столбцы, это те, которые не могут содержать значение NULL. Если их не указать, и при этом у столбца отсутствует значение по умолчанию, будет ошибка.
Еще хотелось бы отметить, что тип данных значений, которые Вы будете вставлять, должен соответствовать типу данных столбца, в который будет вставлено это значение, ну или, хотя бы, поддерживал неявное преобразование. Но я Вам советую контролировать тип данных (формат) значений, как в списке значений, так и в запросе SELECT.
Хватит теории, переходим к практике.
Исходные данные
Для того чтобы добавлять данные в таблицу, нам нужна соответственно сама таблица, давайте ее создадим, и уже в нее будем пробовать добавлять записи.
Примечание! Все примеры будут выполнены в Microsoft SQL Server 2016 Express.
Наша тестовая таблица, будет содержать перечень товаров с ценой.
Также в примерах мы будем использовать процедуру, которая возвращает табличное значение, для добавления данных в таблицу, поэтому давайте ее тоже создадим.
Для примера она у нас будет возвращать данные из только что созданной таблицы TestTable.
Примечание!
Как Вы понимаете, чтение данного материала подразумевает наличные определенных знаний по языку T-SQL, поэтому если Вам что-то непонятно, рекомендую ознакомиться со следующими материалами:
Пример 1 – Добавляем новую запись в таблицу с использованием конструктора табличных значений
Сначала давайте попробуем добавить одну запись и сразу посмотрим на результат, т.е. напишем запрос на выборку.
Вы видите, что мы после названия таблицы перечислили через запятую имена столбцов, в которые мы будем добавлять данные, затем мы указали ключевое слово VALUES и в скобочках также, в том же порядке, через запятую написали значения, которые мы хотим вставить.
После инструкции INSERT я написал инструкцию SELECT и разделил их командой GO.
А теперь давайте представим, что нам нужно добавить несколько строк. Мы для этого напишем следующий запрос.
В данном случае мы добавили три записи, т.е. три строки. После VALUES значения каждой новой строки указаны в скобочках, разделили мы их запятыми.
Пример 2 – Добавляем новые строки в таблицу с использованием запроса SELECT
Очень часто возникает необходимость добавлять много данных в таблицу, например, на основе запроса на выборку, т.е. SELECT. Для этого вместо VALUES нам всего лишь нужно указать запрос.
В данном примере мы написали запрос SELECT, который возвращает данные из таблицы TestTable, но не все, а только те, у которых идентификатор больше 2. А результат вставили все в ту же таблицу TestTable.
В качестве примера того, как можно добавлять записи в таблицу без указания списка столбцов, давайте напишем еще один запрос на вставку данных, который сделает равно то же самое что и запрос выше, только в нем не будет перечисления столбцов для вставки.
В данном случае мы уверены в том, что в таблице TestTable первый столбец это ProductName, а второй Price, поэтому мы можем позволить себе написать именно так. Но, снова повторюсь, на практике лучше указывать список столбцов.
Если Вы заметили, я во всех примерах не указывал столбец Id, а он у нас есть, ошибки не возникло, так как данный столбец со свойством IDENTITY, он автоматически генерирует идентификаторы, поэтому в такой столбец вставить данные просто не получится.
Пример 3 – Добавляем новые записи в таблицу с использованием хранимой процедуры
Сейчас давайте вставим в таблицу данные, которые нам вернёт хранимая процедура. Смысл здесь такой же, вместо VALUES и вместо запроса мы указываем вызов процедуры. Но как Вы понимаете, порядок и количество столбцов, возвращаемых процедурой, должен строго совпадать со списком столбцов для вставки (даже если список столбцов не указан).
Надеюсь, данный материал помог Вам разобраться с инструкцией INSERT INTO, а у меня все, пока!
Главное меню » Базы данных » База данных MySQL » 12 основных примеров команды INSERT в MySQL
В этом руководстве объясняется, как использовать команду INSERT в MySQL и несколько практических и полезных примеров.
Рассматриваются в данном руководстве следующие примеры:
- Основные примеры команды Insert
- Вставьте значения только для выбранных столбцов
- Пример INSERT с SET
- Вставка записей на основе строк из другой таблицы
- Вставка значений выбранных столбцов из другой таблицы
- Вставить записи в определенный раздел
- Вставка записи в несколько разделов в таблице
- Игнорировать сообщение об ошибке во время ввода текста
- Значения по умолчанию в Insert
- Экспрессия в вставки значений
- Сделайте приоритет команды Insert ниже или выше
- При найденном дубликате, обновить значение столбца
В следующем примере мы подключимся к базу данных andreyexbase с именем пользователя devuser и паролем mysecretpwd
Для этого урока мы вставим значения в таблице сотрудников. Это структура таблицы сотрудников.
Если вы новичок в MySQL, используйте это Как создать MySQL базу данных и таблицу, чтобы начать работу.
1. Основные примеры команды Insert
Следующая команда вставит три новых записей в таблице сотрудников. В этом примере, после “values”, укажет значения для всех столбцов в таблице.
С помощью команды SELECT в MySQL, убедитесь, что записи был успешно установлены.
2. Вставьте значения только для выбранных столбцов
Если вы хотите, вставить значения только выбранных столбцов, следует указать имена столбцов в команде вставки.
Ниже будет вставлены две записи только для столбцов идентификатора и имени.
Для “отдела” и столбца “зарплаты”, мы не указали никаких значений для этой конкретной записи. Таким образом, мы будем видеть NULL в качестве значения в нашем выводе команды SELECT. Обратите внимание, что это не строка “NULL”, именно значение столбца в строке действительно нулевая.
3. Пример INSERT с SET
Вместо того чтобы использовать ключевого слова “values” в вашей команде выбора, вы можете также использовать ключевое слово “set” в вашей команде выбора, как показано ниже.
Следующая команда вставки точно так же, как и в предыдущем примере. Но, вместо значения, использует набор.
4. Вставка записей на основе строк из другой таблицы
В этом примере мы будем использовать INSERT … SELECT метод, который будет выбирать строки из другой таблицы, и вставлять его в нашу таблицу.
В следующем примере будет принимать все записи из таблицы подрядчика и вставить его в таблицу сотрудников.
Вы можете также использовать различные условия в “where” выберите команду, чтобы выбрать записи из таблицы подрядной и вставить в таблицу служащих, как показано ниже.
Примечание: Если вы привыкли к базе данных Oracle, вы будете использовать “insert into worker AS select * from contractor”. Обратите внимание, что MySQL не использует ключевого слова “AS” в данном контексте.
5. Вставка значений выбранных столбцов из другой таблицы
Кроме того, можно выбрать только выбранные значения столбцов строк из другой таблицы и вставить его в таблицу.
В следующем примере будет принимать значения “ID” и “name” для всех строк в таблице подрядчика и вставлять его в таблицу сотрудников.
Так же, как и в предыдущем примере, вы можете также использовать, когда есть условие и ограничение на записи.
Обратите внимание, что если запись уже существует для первичного ключа (что идентификатор) в таблице сотрудников, вы получите следующее сообщение об ошибке. Следующее сообщение об ошибке указывает на то, что идентификационный номер сотрудника “100” уже существует в таблице сотрудников.
6. Вставить записи в определенный раздел
Если вы создали таблицу, используя раздел по диапазону, то вы можете указать раздел в вашей команде вставки, как показано ниже.
В следующем примере будет вставлять записи в таблицу служащих в разделе p1
Обратите внимание, что строка уже существует в данном конкретном разделе. Например, в данном примере p1, вы получите следующее сообщение об ошибке:
Примечание: Эта функция будет работать только на MySQL 5.6 и выше.
7. Вставка записи в несколько разделов в таблице
Вы также можете вставлять записи на несколько разделов с помощью одного оператора вставки.
Следующий оператор вставки вставляет запись с идентификатором “100” в разделе p1, и запись с идентификатором “200” в разделе p2.
Обратите внимание, что в приведенном выше примере, если по каким-либо причинам MySQL не может вставить одну из записей в раздел, весь оператор вставки не получится, и обе записи не будут вставлены.
Опять же, это будет работать только на MySQL 5.6 и выше.
8. Игнорировать сообщение об ошибке во время ввода текста
Если по какой-то причине вы хотите проигнорировать сообщение об ошибке MySQL во время вставки, вы можете использовать игнорирование вставки.
Например, следующая команда выдаст сообщение об ошибке, так как запись уже существует в таблице.
Чтобы проигнорировать выше сообщение об ошибке, вы можете использовать “insert ignore” (вместо того, чтобы просто вставить), как показано ниже. Обратите внимание, что это еще не вставит запись в таблицу, поскольку есть primary key в идентификаторе столбца. Но, это просто игнорирует сообщение об ошибке.
9. Значения по умолчанию в Insert
Если MySQL работает в строгом режиме, и когда мы не указываем значения по умолчанию, он выдаст сообщение об ошибке.
Однако, если строгий режим не включен (который по умолчанию), и когда вы делаете команду вставки и не указываете значение столбца, он будет использовать значение по умолчанию для этого конкретного типа данных столбца.
Например, в бонусной таблице, оба значения столбца установлены в положение “not null”.
Давайте вставим запись в эту таблицу для столбца идентификаторов.
Когда вы выполните команду select, вы заметите, что колонка “сумма” автоматически устанавливается неявной значением 0 по умолчанию.
Если вы не указываете как для идентификатора и суммы, будет установлено на 0 автоматически, как показано ниже. Если значения не заданы, то MySQL будет использовать значения по умолчанию.
Примечание: Вы можете также использовать ключевое слово “DEFAULT” в значениях, как показано ниже, что позволит достичь выхода, как описано выше.
Для строки столбца, значение по умолчанию пустая строка. Кроме того, обратите внимание, что, когда числовой столбец имеет множество AUTO_INCREMENT, то значение по умолчанию будет следующее значение соответствующей последовательности.
10. Экспрессия в вставки значений
В следующем примере для значения бонуса, мы определили “5000 + идентификатор” в качестве значения. Таким образом, это добавит значение идентификатор служащего к значению бонуса и вставит окончательное значение в колонке бонуса, как показано ниже.
Вы можете использовать “+”, “-“, “*”, или любой другой действующий оператор выражения MySQL в значениях. В следующем примере, он использует “50 * 2” для столбца идентификаторов. Таким образом, идентификатор, который будет вставлен в “100”
Вы можете также обратиться к значениям других столбцов. В следующем примере, он использует “5000 + id” для бонусного столбца. Таким образом, это будет иметь значение столбца идентификаторов (который является 100), и добавить его к 5000. Таким образом, окончательное значение бонуса “5100”, как показано ниже.
11. Сделайте приоритет команды Insert ниже или выше
Для движка, которая поддерживает блокировку таблицы (например, MyISAM), вы можете указать приоритет вашей вставки.
Например, эта команда Insert будет задерживать вставку (сделать его низкий приоритет) до тех пор, никто ни кто не будет читать таблицу.
Можно также указать высокий приоритет, как показано ниже, который будет вести себя противоположно низким приоритетом вставки.
Пожалуйста, имейте в виду, что если ваша база данных интенсивно считывается и если вы укажете LOW_PRIORITY в команде Insert, то ваша вставка может длится в течение очень долгого времени.
Кроме того, обратите внимание, что это немного отличается от “INSERT … DELAYED”, который является устаревшим, начиная с MySQL 5.6.6. Таким образом, не следует больше использовать “insert … delayed”.
12. При найденном дубликате, обновить значение столбца
Во время вставки, если есть дубликат ключа, она не будет выполнена, как показано ниже, в качестве идентификатора “100” уже существует в таблице.
Тем не менее, вы можете сделать некоторые обновления для этой конкретной записи (если дубликат обнаружен) с помощью “ON DUPLICATE KEY UPDATE”, как показано ниже.
Как показано в следующем примере, когда вставка не удалось (из-за дубликата ключа), мы обновляем столбец заработной платы путем добавления 500 к его стоимости.
Обратите внимание, что в приведенном выше примере, при вставке, даже если обновляется только одна запись, то выход будет такой: “2 rows affected”.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Рекомендуем к прочтению
Insert (SQL) — это… Что такое Insert (SQL)?
У этого термина существуют и другие значения, см. Insert.
- Правильный заголовок этой статьи — INSERT. Он показан некорректно из-за технических ограничений.
INSERT — оператор языка SQL, который позволяет добавить строки в таблицу, заполняя их значениями. Значения можно вставлять перечислением с помощью слова values и перечислив их в круглых скобках через запятую или оператором select.
Примеры использования
Используя перечисление значений, с указанием столбцов:
INSERT INTO <название таблицы> ([<Имя столбца>, ... ]) VALUES (<Значение>,...)
Используя перечисление значений, без указания столбцов:
не работает если использовать с set identity_insert
INSERT INTO <название таблицы> VALUES (<Значение>,...)
Используя select:
INSERT INTO <название таблицы> SELECT <имя столбца>,... FROM <название таблицы>
В последнем случае, в таблицу может вставиться более одной записи. Если в таблице есть другие поля требующие заполнения, но не указанные в операторе insert, для них будет установлено значение по умолчанию, либо null, если значение по умолчанию не указано.
Особенности
Во время выполнения оператора могут возникнуть ошибки:
- если при создании таблицы для поля был указан параметр not null и не было определено значение по умолчанию (см. create), то при отсутствии для него вставляемого значения возникнет ошибка. Решение очевидно:
- либо убрать параметр not null
- либо указать значение по умолчанию
- либо вставить значение
- если произойдет попытка вставки в поле с типом identity (автоинкремент), то также произойдет ошибка. Решить проблему можно двумя способами:
- не вставлять значение в это поле
- указать опцию identity_insert on после чего вставить уникальное значение для этого столбца
Опция identity_insert (MS SQL Server)
эта инструкция не будет работать, нужно указывать имя таблицы.
Включить опцию:
После включения этой опции можно вставлять значения в поля определенные как identity. Нужно учесть, что значение должно быть уникальным.
Включать эту опцию без явной необходимости не рекомендуется. Однако, её следует использовать в записях в которых нужно сменить некоторые столбцы, не поменяв её identity столбец (например если по этому столбцу делается связь с другой таблицей)
Получение ключа
Разработчики, которые используют суррогатный ключ в качестве первичного ключа, часто сталкиваются со сценарием, когда необходимо получить первичный ключ (для использования в других запросах), сгенерированный базой данных в ответ на оператор SQL INSERT. Но большинство систем не позволяют оператору SQL INSERT возвращать данные. Возможные способы решения:
- Использовать характерную для данной БД хранимую процедуру, которая генерирует суррогатный ключ, исполняет операцию INSERT, и возвращает сгенерированный ключ. Например, в Microsoft SQL Server, ключ возвращается специальной функцией SCOPE_IDENTITY(), а в SQLite функцией last_insert_rowid().
- Использовать характерную для данной БД операцию SELECT над временной таблицей, содержащей последнюю добавленную строку (или строки). DB2 реализует эту возможность следующим образом:
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’));
- Используя оператор SELECT после оператора INSERT, со специальной функцией, которая в данной БД возвращает сгенерированный первичный ключ для последней добавленной строки.
- Используя уникальную комбинацию полей, которые входили в исходный оператор SQL INSERT, в последующих вызовах оператора SELECT.
- Используя GUID в операторе SQL INSERT, получить результат через оператор SELECT.
- Используя функцию PHP mysql_insert_id() для MySQL после оператора INSERT.
- используя INSERT с последующим SELECT LAST_INSERT_ID() для MySQL.
- Используя оператор INSERT с предложением OUTPUT (Transact-SQL) начиная с Microsoft SQL Server 2005.
DECLARE @TABLE TABLE ( [id] [SMALLINT] IDENTITY(1,1) NOT NULL, [name] [NCHAR](50) NULL); INSERT INTO @TABLE OUTPUT INSERTED.id VALUES ('Peter Doe');
- Используя оператор INSERT с модификатором RETURNING для Oracle.
INSERT INTO phone_book VALUES ( 'Peter Doe','555-2323' ) RETURNING phone_book_id INTO v_pb_id
- Используя оператор INSERT с модификатором RETURNING для PostgreSQL (с версии 8.2). Возвращаемый список идентичен результату оператора SELECT.
INSERT INTO phone_book VALUES ( 'Peter Doe','555-2323' ) RETURNING phone_book_id
- Функция IDENTITY() в h3 возвращает последний добавленный (ключ?)
См. также
Обзор оператора SQL Insert
Эта статья об операторе SQL Insert является частью серии, посвященной функциям, операторам и методам работы со строками. Предыдущие статьи были сосредоточены на методах SQL-запросов, и все они были сосредоточены на задачах подготовки и преобразования данных.
До сих пор мы были сосредоточены на операторе select для чтения информации из таблицы. Но тут возникает вопрос; как данные вообще попали туда? В этой статье мы сосредоточимся на операторе DML, операторе вставки SQL.Если мы хотим создать данные, мы будем использовать ключевое слово SQL «Insert».
Общий формат — это оператор INSERT INTO SQL , за которым следует имя таблицы, затем список столбцов, а затем значения, которые вы хотите использовать с оператором вставки SQL для добавления данных в эти столбцы. Вставка — обычно несложная задача. Он начинается с простого утверждения — вставки одной строки. Однако во многих случаях более эффективно использовать подход, основанный на наборах, для создания новых строк.В последней части статьи давайте обсудим различные методы одновременной вставки нескольких строк.
Обязательное
Предполагается, что у вас есть следующее разрешение на выполнение операции вставки в таблицу.
- Операция вставки выполняется по умолчанию для членов фиксированной серверной роли sysadmin , фиксированных ролей базы данных db_owner и db_datawriter и владельца таблицы.
- Вставка с опцией OPENROWSET BULK требует, чтобы пользователь был членом фиксированной серверной роли sysadmin или фиксированной серверной роли bulkadmin .
- Загрузите AdventureWorks2014 здесь
Правила:
- Обычно мы не всегда предоставляем данные для каждого столбца. В некоторых случаях столбцы можно оставить пустыми, а в некоторых других указать собственные значения по умолчанию.
- У вас также есть ситуации, когда некоторые столбцы автоматически генерируют ключи. В таких случаях вы, конечно же, не хотите пытаться внедрять в них свои собственные ценности.
- Столбцы и значения должны соответствовать порядку, типу данных и количеству.
- Если столбец состоит из строк, даты, времени или символов, их необходимо заключить в одинарные кавычки. Если они числовые, кавычки не нужны.
- Если вы не указываете целевые столбцы в операторе вставки, вы должны вставить значения во все столбцы в таблице, а также не забудьте сохранить порядок значений.
Как выполнить простую вставку
Давайте начнем вставлять данные в эту простую таблицу отделов.Сначала используйте имя таблицы, а затем в скобках имя столбцов, а затем введите значения. Итак, назовите столбцы, в которые мы будем вводить значения.
отдел CREATE TABLE (dno INT PRIMARY KEY, dname VARCHAR (20) NOT NULL, loc VARCHAR (50) NOT NULL ); |
Следующая инструкция SQL Insert into вставляет строку в отдел.Перечисляются столбцы dno, dname и loc, и предоставляются значения для этих столбцов. Порядок также поддерживается таким же образом, как и столбцы в таблице.
INSERT INTO Department (dno, dname, loc ) VALUES (10, ‘ENGINEERING’, ‘New York’ ); |
Как выполнить простую вставку с помощью SSMS
Вставку данных в таблицу можно выполнить либо с помощью SQL Server Management Studio (SSMS), графического интерфейса пользователя, либо с помощью языка обработки данных в редакторе SQL.Использование графического интерфейса в SSMS — это быстрый и простой способ вводить записи непосредственно в таблицу.
Давайте просмотрим таблицу отделов, щелкнем правой кнопкой мыши и перейдем к редактированию первых 200 строк.
Это вызовет окно редактора, в котором мы сможем напрямую взаимодействовать с данными. Чтобы ввести новые значения, спуститесь вниз и начните вводить значения.
В некоторых случаях очень полезно ознакомиться с данными, которые вы собираетесь ввести в таблицу.
Как использовать оператор Insert into для добавления нескольких строк данных
В следующем операторе вставки SQL в отдел вставлены три строки. Значения для всех столбцов предоставляются и перечислены в том же порядке, что и столбцы в таблице. Кроме того, перечислены несколько значений, разделенных запятыми.
.
Оператор SQL INSERT INTO — с примерами
Как добавить новые записи в таблицу?
Оператор INSERT INTO используется для добавления новых данных в базу данных.
INSERT INTO добавляет новую запись в таблицу.
INSERT INTO может содержать значения для некоторых или всех своих столбцов.
INSERT INTO можно комбинировать с SELECT для вставки записей.
Синтаксис SQL INSERT INTO
Общий синтаксис:
INSERT INTO имя-таблицы (имена столбцов) ЗНАЧЕНИЯ (значения)
КЛИЕНТ |
---|
Идентификатор |
Имя |
Фамилия |
Город |
Страна |
Телефон |
Примеры SQL INSERT INTO
Проблема : Добавить нового клиента в базу данных
ВСТАВИТЬ клиента (имя, фамилия, город, страна, телефон) ЦЕННОСТИ («Крейг», «Смит», «Нью-Йорк», «США», 1-01-993 2800)
Результат: Добавлена 1 новая запись
КЛИЕНТ |
---|
Идентификатор |
Имя |
Фамилия |
Город |
Страна |
Телефон |
Проблема : Добавить нового клиента по имени Анита Коутс в базу данных
ВСТАВИТЬ клиента (имя, фамилия) ЦЕННОСТИ («Анита», «Пальто»)
Результат: Добавлена 1 новая запись
SQL INSERT в сочетании с SELECT
Общий синтаксис
INSERT INTO имя-таблицы (имена столбцов) ВЫБЕРИТЕ имена столбцов ОТ имя-таблицы ГДЕ условие
ПОСТАВЩИК |
---|
Идентификатор |
Название компании |
Контактное имя |
Город |
Страна |
Телефон |
Факс |
КЛИЕНТ |
---|
Имя |
Фамилия |
Город |
Страна |
Телефон |
SQL INSERT INTO
с помощью SELECT Пример
Проблема : Поставщик пивоварни Bigfoot имеет
также стать клиентом.Добавить клиента
запись со значениями из таблицы поставщиков.
ВСТАВИТЬ клиента (имя, фамилия, город, страна, телефон) ВЫБРАТЬ ВЛЕВО (ContactName, CHARINDEX ('', ContactName) - 1), ПОДСТРОКА (ContactName, CHARINDEX ('', ContactName) + 1, 100), Город, Страна, Телефон ОТ поставщика ГДЕ CompanyName = 'Bigfoot Breweries'
Примечание. ContactName разбирается на FirstName и LastName.
Парсинг происходит с помощью встроенных функций: LEFT, SUBSTRING и CHARINDEX.
Результат: Добавлена 1 новая запись
.
Обзор оператора INSERT INTO SELECT и примеры
В этой статье рассматривается оператор SQL INSERT INTO SELECT, а также его синтаксис, примеры и варианты использования.
В моей предыдущей статье SQL SELECT INTO Statement мы рассмотрели следующие задачи.
- Создание таблицы SQL на лету, вставляя записи с соответствующими типами данных
- Используйте SQL SELECT INTO для вставки записей в определенную FileGroup
- Мы не можем использовать его для вставки данных в существующую таблицу
Оператор INSERT INTO SELECT
Мы хотим вставлять записи как обычное действие в базе данных.Мы можем вставлять данные напрямую с помощью клиентских инструментов, таких как SSMS, Azure Data Studio, или непосредственно из приложения. В SQL мы используем оператор SQL INSERT INTO для вставки записей.
Синтаксис INSERT INTO
Вставив данные в таблицу, мы можем использовать следующий синтаксис для нашего оператора SQL INSERT INTO.
INSERT INTO имя_таблицы (Столбец1, Столбец 2 ….) ЗНАЧЕНИЯ (значение1, значение2,…); |
Если мы указали все значения столбцов в соответствии с порядком столбцов таблицы, нам не нужно указывать имена столбцов. Мы можем напрямую вставлять записи в таблицу.
INSERT INTO имя_таблицы VALUES (значение1, значение2, …); |
Создадим примерную таблицу и вставим в нее данные.
СОЗДАТЬ ТАБЛИЦУ Сотрудники (ID INT, Имя VARCHAR (20) ); |
Мы можем вставить данные, используя следующие запросы.Оба запроса действительны для вставки данных.
Вставить в значения сотрудников (ID, имя) (1, ‘raj’) Вставить в значения сотрудников (2, ‘raj’) |
Мы не можем вставлять данные без указания имен столбцов, если есть несоответствие между вставкой данных и другой порядок значений столбцов. Мы можем получить следующее сообщение об ошибке.
В этом примере мы будем использовать оператор SQL INSERT INTO с предоставлением значений непосредственно в операторе.Предположим, мы хотим вставить данные из другой таблицы. Мы по-прежнему можем использовать оператор SQL INSERT INTO с оператором select. Давайте рассмотрим это в следующем разделе.
INSERT INTO SELECT Синтаксис оператора
Мы можем вставить данные из других таблиц SQL в таблицу с помощью следующего оператора INSERT INTO SELECT.
ВСТАВИТЬ В таблицу1 (col1, col2, |
.
SQL INSERT — вставить одну или несколько строк в таблицу
Сводка : в этом руководстве вы узнаете, как использовать оператор SQL INSERT для вставки данных в таблицы.
Оператор INSERT
вставляет одну или несколько строк в таблицу. Оператор INSERT
иногда называют оператором INSERT INTO
.
Оператор SQL INSERT — вставить одну строку в таблицу
Ниже показан оператор INSERT
, который вставляет одну строку в существующую таблицу.
INSERT INTO table (column1, column2, …) VALUES (value1, value2, …); |
Чтобы вставить строку в таблицу, вам необходимо указать три вещи:
- Во-первых, таблица, в которую вы хотите вставить новую строку, в предложении
INSERT INTO
. - Во-вторых, список столбцов в таблице, разделенных запятыми, в круглых скобках.
- В-третьих, список значений, разделенных запятыми, окруженный круглыми скобками в предложении
VALUES
.
Список столбцов должен иметь такое же количество элементов, что и список значений, в противном случае ядро базы данных выдаст ошибку.
Давайте взглянем на следующую таблицу грузоотправителей
:
Следующий оператор INSERT
вставляет новую строку в таблицу отправителей :
INSERT INTO грузоотправителей (название компании, телефон) ЦЕННОСТИ («Грузоотправители Альянса», «1-800-222-0451»); |
Две константы: 'Alliance Shippers'
и '1-800-222-0451'
указаны в пункте VALUES
.Механизм базы данных вставил их в столбцы companyname
и phone
соответственно.
После выполнения оператора сервер базы данных возвращает сообщение, чтобы указать количество затронутых строк. В этом случае мы получаем сообщение «1 строка затронута», сообщающее, что новая строка была успешно вставлена.
Обратите внимание, что мы не указали столбец shipperID
в списке столбцов, поскольку столбец shipperID
является столбцом AUTO INCREMENT
, ядро базы данных автоматически генерирует следующую последовательность для него всякий раз, когда новая строка вставляется в Таблица.
Чтобы помочь вам писать меньше кода, SQL предоставляет более короткую форму оператора INSERT
следующим образом:
INSERT INTO table VALUES (value1, value2, ...) |
В этой форме список значений должен иметь тот же порядок, что и список столбцов в таблице. Если вы используете эту форму оператора INSERT
, вы должны указать значения для всех столбцов, кроме столбца AUTO INCREMENT
.
Рекомендуется использовать имена столбцов в операторе INSERT
, чтобы упростить сопровождение кода.
Следующий оператор INSERT
имеет тот же эффект, что и предыдущий:
INSERT INTO shippers VALUES («Alliance Shippers», «1-800-222-0451»); |
Оператор SQL INSERT - вставка нескольких строк в таблицу
Оператор INSERT
также позволяет вставлять несколько строк в таблицу с помощью одного оператора, как показано ниже:
INSERT INTO имя_таблицы (столбец1, столбец2…) ЗНАЧЕНИЯ (значение1, значение2,…), (значение1, значение2,…), … |
В этой форме необходимо предоставить несколько списков значений, каждый список разделяется запятой.
Следующий оператор INSERT
вставляет две строки в таблицу shippers
:
INSERT INTO shippers (companyName, phone) VALUES ('UPS', '1-800-782-7892' ), ('DHL', '1-800-225-5345') |
Оператор SQL INSERT - копирование данных таблицы
Вместо указания списка значений вы можете использовать оператор SELECT для выбора значений из другой таблицы и передайте их в оператор INSERT
.Это позволяет копировать данные из таблицы в другую таблицу.
Следующий оператор показывает, как скопировать данные из another_table
в table
:
INSERT INTO table (column1, column2, ...) SELECT column1, column2 ,. .. FROM another_table WHERE condition |
Список столбцов в предложении SELECT
должен соответствовать списку столбцов в предложении INSERT INTO
.Если вы хотите скопировать только частичные данные, вам необходимо указать условие в предложении WHERE.
Предположим, у вас есть временная таблица с именем shippers_tmp
, которая имеет ту же структуру, что и таблица shippers
. Чтобы скопировать данные из таблицы shippers
в таблицу shippers_tmp
, используйте следующую инструкцию:
INSERT INTO shippers_tmp (shipperid, name, phone) SELECT shipperid, companyName, phone ОТ грузоотправителей |
В этом руководстве вы узнали, как использовать оператор INSERT
для вставки одной или нескольких строк в таблицу.Кроме того, вы также узнали, как копировать данные из таблицы в другую таблицу с помощью оператора INSERT SELECT INTO
.
- Было ли это руководство полезным?
- Да Нет
.