Как вставить данные в таблицу sql
SQL-Урок 13. Добавление данных (INSERT INTO)
1. Добавление целых строк
INSERT INTO Sellers (ID, Address, City, Seller_name, Country) VALUES (‘6’, ‘1st Street’, ‘Los Angeles’, ‘Harry Monroe’, ‘USA’)
Также можно изменять порядок указания названий колонок, однако одновременно нужно менять и порядок значений в параметре VALUES.
2. Добавление части строк
В предыдущем примере при использовании оператора INSERT мы явно отмечали имена столбцов таблицы. Используя данный синтаксис, мы можем пропустить некоторые столбцы. Это значит, что вы вводите значение для одних столбцов но не предлагаете их для других. Например:
INSERT INTO Sellers (ID, City, Seller_name) VALUES (‘6’, ‘Los Angeles’, ‘Harry Monroe’)
3. Добавление отобранных данных
INSERT INTO Sellers (ID, Address, City, Seller_name, Country) SELECT ID, Address, City, Seller_name, Country FROM Sellers_EU
Нужно обратить внимание, чтобы значение внутренних ключей не повторялись (поле ID), в противном случае произойдет ошибка. Оператор SELECT также может включать предложения WHERE для фильтрации данных. Также следует отметить, что СУБД не обращает внимания на названия колонок, которые содержатся в операторе SELECT, для нее важно только порядок их расположения. Поэтому данные в первом указанном столбце, что были выбраны из-за SELECT, будут в любом случае заполнены в первый столбец таблицы Sellers, указанной после оператора INSERT INTO, независимо от названия поля.
4. Копирование данных из одной таблицы в другую
Часто при работе с базами данных возникает необходимость в создании копий любых таблиц, с целью резервирования или модификации. Чтобы сделать полную копию таблицы в SQL предусмотрен отдельный оператор SELECT INTO. Например, нам нужно создать копию таблицы Sellers, нужно будет прописать запрос следующим образом:
SELECT * INTO Sellers_new FROM Sellers
Оператор SQL INSERT для вставки данных в таблицу БД
Оператор SQL INSERT предназначен для вставки значений столбцов в таблицу баз данных. В результате его применения в таблице базы данных появляется новая строка.
Оператор INSERT имеет следующий синтаксис:
Квадратные скобки [], в которые заключен элемент запроса (ИМЕНА СТОЛБЦОВ), означают, что этот элемент является необязательным.
Вставка значений в таблицу с указанием или без указания столбцов
Рассмотрим подробнее применение оператора INSERT с указанием имён столбцов и без указания, остановимся на случаях, когда указывать имена столбцов всё же требуется.
Будем работать с базой данных портала объявлений. В ней есть таблица ADS, содержащая данные о объявлениях, поданных за неделю.
Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке .
Для использующих же MySQL приводим содержание оператора CREATE для создания таблицы:
Пример 1. Итак, есть база данных портала объявлений. Таблица ADS выглядит так:
Id | Category | Part | Units | Money |
1 | Транспорт | Автомашины | 110 | 17600 |
2 | Недвижимость | Квартиры | 89 | 18690 |
3 | Недвижимость | Дачи | 57 | 11970 |
4 | Транспорт | Мотоциклы | 131 | 20960 |
5 | Стройматериалы | Доски | 68 | 7140 |
6 | Электротехника | Телевизоры | 127 | 8255 |
7 | Электротехника | Холодильники | 137 | 8905 |
8 | Стройматериалы | Регипс | 112 | 11760 |
9 | Досуг | Книги | 96 | 6240 |
10 | Недвижимость | Дома | 47 | 9870 |
11 | Досуг | Музыка | 117 | 7605 |
12 | Досуг | Игры | 41 | 2665 |
Для вставки новой строки в эту таблицу на MySQL используем следующий запрос:
Или без указания имён столбцов:
MS SQL Server в ответ на такой запрос выдаст сообщение об ошибке, так как при создании таблицы было указано, что значения столбца Id являются идентификаторами и вставляются при добавлении новых строк автоматически с приращением 1. Поэтому на MS SQL Server нужно использовать следующий запрос (можете скопировать его и вставить в окно запросов):
В результате выполнения запроса в таблице появится новая строка:
В запросе на вставку данных можно список столбцов можно указать не в том порядке, который задан при создании таблицы, и тогда данные следует указывать также в изменённом порядке.
Пример 2. Таким будет запрос на MySQL, в котором порядок следования столбцов изменён:
В результате выполнения запроса в таблице появится такая же новая строка, как и в примере 1.
Если вы используете MS SQL Server, то в запросе не нужно указывать столбец Id и запрос с изменённым порядком следования столбцов будет таким:
Вставка значений по умолчанию (DEFAULT) и неопределённых значений (NULL)
Запрос на MySQL. Вставим новые значения, указывая лишь столбец Id и его значение:
Все столбцы кроме Id получили значения по умолчанию. После выполнения этого запроса новая строка будет содержать следующие данные:
На MS SQL Server такой запрос недопустим.
Поскольку все столбцы могут иметь значения по умолчанию, можно использовать в запросе на вставку данных ключевое слово DEFAULT и не указывать имена столбцов.
Пример 4. Запрос на MySQL. Вставим новые значения, используя ключевое слово DEFAULT и не указывая имён столбцов:
Теперь все столбцы получили значения по умолчанию. После выполнения этого запроса новая строка будет содержать следующие данные:
Запрос на MS SQL Server (без указания столбца Id):
Вместо многократного использования слова DEFAULT можно использовать конструкцию DEFAULT VALUES, которая есть во многих диалектах SQL. Следует помнить, что в MySQL эта конструкция отсутствует.
Пример 5. Вставим новые значения, используя констукцию DEFAULT VALUES (запрос можно использовать и на MS SQL Server c предваряющей конструкцией USE adportal1):
После выполнения этого запроса новая строка будет содержать следующие данные:
Вставка значений с использованием оператора SET в MySQL
В MySQL дополнительно существует альтернативная конструкция для вставки значений в таблицу с использованием оператора SET. Она похожа на конструкцию оператора UPDATE и имеет следующий синтаксис:
В подобных запросах можно указывать имена не всех столбцов, при этом не указанные столбцы принимают значения по умолчанию.
Вставим в таблицу строку, при этом столбцы Units и Money примут значения по умолчанию:
В результате выполнения запроса в таблице появится новая строка:
Использование механизма автоматического приращения при вставке данных
Механизм автоматического приращения предназначен для автоматического генерирования уникальных значений первичного ключа в таблице. При его использовании не требуется проверять все значения первичного ключа, чтобы определить максимальное значение. При создании новой записи можно указать в качестве значения первичного ключа 0 или NULL и в таблицу будет автоматически вставлено значение, увеличенное на единицу по сравнению с максимальным значением.
В разных диалектах SQL синтаксис автоматического приращения различается. В MySQL используется ключевое слово AUTO_INCREMENT. Таблица с использованием механизма AUTO_INCREMENT в MySQL создаётся так:
Вставка нескольких строк в таблицу
Применение рассмотренного выше механизма автоматического приращения позволяет вставлять в таблицу базы данных сразу несколько строк, не заботясь об уникальности значений первичного ключа.
Для этого применяется либо однострочный, либо многострочный оператор INSERT. Рассмотрим сначала синтаксис однострочного варианта.
Пример 7. Если используется механизм автоматического приращения значений первичного ключа, то на MySQL вставить новые строки в таблицу можно, применив несколько раз оператор INSERT и указав в качестве значений первичного ключа 0 или NULL:
Допустим, перед вставкой новых строк записи в таблице завершались строкой со значением первичного ключа 5. В результате выполнения запроса в таблице появятся новые строки:
6 | Электротехника | Телевизоры | 127 | 8255 |
7 | Электротехника | Холодильники | 137 | 8905 |
8 | Стройматериалы | Регипс | 112 | 11760 |
9 | Досуг | Книги | 96 | 6240 |
На MS SQL Server нет необходимости указывать значения столбца Id. Аналогичный запрос будет следующим:
В MySQL и SQL Server существует многострочный оператор INSERT. Его отличие от однострочного варианта в том, что для вставки нескольких строк он используется один раз, а после ключевого слова VALUES указывается не один, а несколько списков значений добавляемых строк.
Пример 8. Вставим строки с теми же значениями, что и в предыдущем примере, используя многострочный оператор INSERT.
Запрос на MS SQL Server:
Примеры запросов к базе данных «Портал объявлений-1» есть также в уроках об операторах UPDATE, DELETE, HAVING и UNION.
Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Базы данных
SQL оператор INSERT
В этом учебном материале вы узнаете, как использовать оператор INSERT в SQL с синтаксисом и примерами.
Описание
SQL оператор INSERT используется для вставки одной или нескольких записей в таблицу. Существует два синтаксиса для оператора INSERT в зависимости от того, вставляете ли вы одну запись или несколько записей.
Синтаксис
Синтаксис SQL оператора INSERT при вставке одной записи в таблицу:
Или синтаксис SQL оператора INSERT при вставке нескольких записей в таблицу:
Параметры или аргументы
Примечание
В этом примере у нас есть таблица с categories со следующими данными:
category_id | category_name |
---|---|
25 | Deli |
50 | Produce |
75 | Bakery |
100 | General Merchandise |
125 | Technology |
Будет вставлена 1 запись. Снова выберите данные из таблицы categories :
Вот результаты, которые вы должны получить:
category_id | category_name |
---|---|
25 | Deli |
50 | Produce |
75 | Bakery |
100 | General Merchandise |
125 | Technology |
150 | Miscellaneous |
Однако это опасно по двум причинам. Во-первых, оператор 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 :
Как вставить данные в таблицу sql
Пример базового использования команды INSERT
Следующая команда добавит новую запись в таблицу. После ключевого слово VALUES указываются значения столбцов таблицы:
Используйте команду SELECT для проверки введенных данных.
Вставка данных только для определенных столбцов
Мы не указали значения полей dept и salary. В итоге, мы получили NULL в этих столбцах. Обратите внимание, это не строковое значение “NULL”, это значение, указывающие на то, что ячейка пуста.
Пример Insert Set
Вместо ключевого слова values вы можете использовать слово SET для установки значения нужному полю.
Следующая команда является полным аналогом той, что мы рассмотрели выше:
Вставка значений на основе значений из другой таблицы
В этом примере мы используем INSERT. SELECT метод, для выбора значений из другой таблицы.
Ввод выбранных столбцов из другой таблицы
Конечно, вы можете выбрать определенный набор столбцов для ввода их значений в другую таблицу.
Также допускается использование условий WHERE.
Обратите внимание, если запись с указанным ID уже существует, вы получит ошибку. ERROR 1062 (23000): Duplicate entry ‘100’ for key ‘PRIMARY’
Ввод записей в определенную секцию
Если вы создавали таблицу разбитую на разделы по диапазону записей, то вы можете указать определенный раздел для записи.
Обратите внимание, что запись с этим ID уже существует в указанном разделе. Поэтому мы получим соответствующую ошибку.
Внимание: Этот пример отработает только в MySQL 5.6 и выше.
Вставка записей в несколько разделов таблицы
Обратите внимание, если по какой-либо причине одна из записей вызовет ошибку при обработке, то весь запрос будет отменен.
Снова, пример отработает только в MySQL 5.6 и выше.
Игнорирование ошибок при вводе данных
К примеру, следующая команда вызовет ошибку, так как запись с таким ID уже существует.
Значение по-умолчанию
Если MySQL запущен в строгом режиме, то, не указав значения по-умолчанию для полей, мы получим ошибки.
Если же строгий режим отключен (по-умолчанию), то не указав значение для поля, будет использовано значение по-умолчанию для поля уровня таблицы.
Например, в таблице bonus оба поля не могут принимать значение NULL.
Введем значение только для id.
При выборке данных, мы видим, что поле amount приняло значение 0.
Если мы опустим оба поля при вводе данных, то они примут значение 0. Если поля не указаны при вводе, то они принимают значения по-умолчанию для таблицы.
Выражения в качестве значение в INSERT
Изменение приоритета команды INSERT
Например, следующая команда откладывает операцию INSERT до тех пор, пока сервер не обработает все операции чтения над таблицей.
Также можно указывать высокий приоритет. Это операции полностью противоположна предыдущей.
Не забывайте, если ваша таблица обрабатывает много операций чтения, то установив низкий приоритет, операция записи может не отработать в течение довольно долгого периода времени.
Обновления строки при повторении
Если в процессе записи будет обнаружена запись с повторяющимся значением ID, операция будет остановлена с соответствующей ошибкой.
Руководство по SQL: команда MySQL INSERT в подробностях
Команда вставки данных в таблицу востребована во всех реляционных базах данных. В руководстве рассмотрим разные способы вставки данных в таблицу через систему управления базами данных MYSQL.
Содержание:
1. Простая команда INSERT INTO
Из-за синтаксиса команды учитывайте следующее.
2. Список столбцов таблицы
Указание названий столбцов перед значениями — настоятельно рекомендуемый, но необязательный способом вставки записи в таблицу. Рассмотрим пример:
Преимущества команды INSERT с явно указанными столбцами таблицы:
Добавлять по нескольку значений одновременно в разные столбцы таблицы базы данных MySQL лучше всего следующим образом:
3. Одновременная вставка нескольких записей
Добавлять по нескольку значений одновременно в разные столбцы таблицы базы данных MySQL лучше всего следующим образом:
4. Ключевое слово SET
Ключевое слово SET хорошо сочетается с ключевым словом INSERT при вставке записей в таблицы. Крайне читаемая инструкция! Давайте проанализируем следующий пример:
5. Комбинация команд INSERT и SELECT
6. Связка команд INSERT и IGNORE
7. Загрузка записей из текстового файла
Предположим, что вы создали таблицу друзей с помощью следующего запроса:
Поскольку сначала таблица полностью пуста, самый простой способ заполнить ее данными — это создание простого текстового файла с информацией о друзьях, по одной записи на строку.
Теперь приведенная ниже команда загрузит текстовый файл friends.txt в таблицу базы данных:
Если вы пользуетесь операционной системой Windows, то вместо предыдущей команды вам поможет приведенный ниже код:
Вы даже сможете явно указать разделитель значений столбцов и маркер конца строки через FIELDS TERMINATED BY и LINES TERMINATED BY соответственно. По умолчанию разделителем значений назначен символ табуляции, а указателем перехода на новую строку — символ перевода строки.