Руководство по SQL: команда MySQL INSERT в подробностях

Команда вставки данных в таблицу востребована во всех реляционных базах данных. В руководстве рассмотрим разные способы вставки данных в таблицу через систему управления базами данных MYSQL.

Содержание:

  1. Простая команда INSERT INTO.
  2. Список столбцов таблицы.
  3. Одновременная вставка нескольких записей.
  4. Ключевое слово SET.
  5. Комбинация команд INSERT и SELECT.
  6. Связка команд INSERT и IGNORE.
  7. Загрузка записей из текстового файла.

1. Простая команда INSERT INTO

Самый простой способ вставить данные в таблицу  —  команда INSERT INTO table_name VALUES(column1, column2, column_n). Допустим, что дана таблица users с тремя полями name, age и contact, а также типами varchar, integer и varchar. Применим следующую команду для вставки данных в таблицу users:

INSERT INTO users VALUES("Brave Zombie",18,"987654321");

Из-за синтаксиса команды учитывайте следующее.

  1. Помните порядок столбцов, потому что значения для столбцов указываются по порядку.
  2. Определите значения для всех столбцов.

2. Список столбцов таблицы

Указание названий столбцов перед значениями  —  настоятельно рекомендуемый, но необязательный способом вставки записи в таблицу. Рассмотрим пример:

INSERT INTO users(name, age, contact) VALUES("Brave Zombie", 18, "987654321");

Преимущества команды INSERT с явно указанными столбцами таблицы:

  1. Больше не нужно помнить порядок столбцов.
  2. Не нужно каждый раз предоставлять значения для всех столбцов. Теперь вы можете предоставлять значения только для указанных в запросе столбцов.

Добавлять по нескольку значений одновременно в разные столбцы таблицы базы данных MySQL лучше всего следующим образом:

INSERT INTO users(name, age)
VALUES
("Brave Zombie",18),
("John John", 18),
("Rama", 19);

3. Одновременная вставка нескольких записей

Добавлять по нескольку значений одновременно в разные столбцы таблицы базы данных MySQL лучше всего следующим образом:

INSERT INTO users(name, age)
VALUES
("Brave Zombie",18),
("John John", 18),
("Rama", 19);

4. Ключевое слово SET

Ключевое слово SET хорошо сочетается с ключевым словом INSERT при вставке записей в таблицы. Крайне читаемая инструкция! Давайте проанализируем следующий пример:

INSERT INTO users SET

name="Brave Zombie",

age=18,

contact="9876543210";

Недостатком ключевого слова SET можно назвать то, что с его помощью нельзя вставить несколько записей за один раз. Для вставки нескольких значений одновременно подойдет ранее изложенный синтаксис SQL-команды INSERT.


5. Комбинация команд INSERT и SELECT

Когда из одной таблицы нужно скопировать данные в другую  —  пригодится связка команд INSERT и SELECT. Пример с таблицами users и table2:

INSERT INTO users(name, age, contact)
SELECT name, age, contact
FROM table2;

6. Связка команд INSERT и IGNORE

Работая с большим набором данных, регулярно приходится производить запросы на вставку данных без настоящего изменения таблицы  —  в таком случае выручит комбинация команд INSERT и IGNORE. Говорят, что пример лучше, чем десять строк объяснения, поэтому рассмотрим команду INSERT IGNORE на примере:

  • Сначала создайте таблицу “сотрудники”, employees, с помощью такого синтаксиса:
INSERT INTO employees(id, name, department_name)
VALUES(1, "John John", "Sales Department");
  • Теперь попробуйте вставить запись в таблицу через следующий запрос:
INSERT IGNORE employees(id, name, department_name)
VALUES(1, "John John", "Marketing Department");

Нетрудно заметить, что приведенный выше запрос не выдает ошибку. Кроме того, при выборе всех записей из таблицы сотрудников, возвращается только одна запись, department_name (имя отдела) которой по-прежнему “Sales Department”, “Отдел продаж”.


7. Загрузка записей из текстового файла

До сих пор в руководстве объяснялось создание таблиц и заполнение их через команду INSERT INTO. Но существуют и другие варианты заполнения таблицы, например команда LOAD DATA.

Предположим, что вы создали таблицу друзей с помощью следующего запроса:

CREATE TABLE friends (
firstname VARCHAR(100),
lastname VARCHAR(100),
contact VARCHAR(10),
birth DATE
);

Поскольку сначала таблица полностью пуста, самый простой способ заполнить ее данными  —  это создание простого текстового файла с информацией о друзьях, по одной записи на строку.

Создайте текстовый файл friends.txt и поместите в него все записи, каждую запись на отдельной строке. Значения разделите табуляцией, а пропущенные значения укажите как \N, например:

'John'    '\N'    '9876543210'    '2000-01-01'

Теперь приведенная ниже команда загрузит текстовый файл friends.txt в таблицу базы данных:

LOAD DATA LOCAL INFILE '/path/friends.txt' INTO TABLE friends;

Если вы пользуетесь операционной системой Windows, то вместо предыдущей команды вам поможет приведенный ниже код:

LOAD DATA LOCAL INFILE '/path/friends.txt' INTO TABLE friends LINES TERMINATED BY '\r\n';

Вы даже сможете явно указать разделитель значений столбцов и маркер конца строки через FIELDS TERMINATED BY и LINES TERMINATED BY соответственно. По умолчанию разделителем значений назначен символ табуляции, а указателем перехода на новую строку  —  символ перевода строки.

Если MYSQL выдает ошибку при выполнении команды LOAD DATA, возможно, в вашей установке MYSQL по умолчанию не включена возможность работы с локальными файлами. Чтобы изменить параметры, посетите раздел 6.1.6. “Соображения безопасности для LOAD DATA LOCAL” справочного руководства MySQL.

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи Bravezombie: Ultimate Guide to MySQL INSERT Command

Предыдущая статья7 малоизвестных пакетов для визуализации на Python, о которых вы должны знать
Следующая статьяClickHouse + Kafka = ❤