Команда вставки данных в таблицу востребована во всех реляционных базах данных. В руководстве рассмотрим разные способы вставки данных в таблицу через систему управления базами данных MYSQL.
Содержание:
- Простая команда INSERT INTO.
- Список столбцов таблицы.
- Одновременная вставка нескольких записей.
- Ключевое слово SET.
- Комбинация команд INSERT и SELECT.
- Связка команд INSERT и IGNORE.
- Загрузка записей из текстового файла.
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");
Из-за синтаксиса команды учитывайте следующее.
- Помните порядок столбцов, потому что значения для столбцов указываются по порядку.
- Определите значения для всех столбцов.
2. Список столбцов таблицы
Указание названий столбцов перед значениями — настоятельно рекомендуемый, но необязательный способом вставки записи в таблицу. Рассмотрим пример:
INSERT INTO users(name, age, contact) VALUES("Brave Zombie", 18, "987654321");
Преимущества команды INSERT с явно указанными столбцами таблицы:
- Больше не нужно помнить порядок столбцов.
- Не нужно каждый раз предоставлять значения для всех столбцов. Теперь вы можете предоставлять значения только для указанных в запросе столбцов.
Добавлять по нескольку значений одновременно в разные столбцы таблицы базы данных 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.
Читайте также:
- Какую СУБД начать изучать в первую очередь?
- Запросы сразу к нескольким базам данных MySQL
- 6 SQL-запросов, о которых должен знать каждый дата-инженер
Читайте нас в Telegram, VK и Дзен
Перевод статьи Bravezombie: Ultimate Guide to MySQL INSERT Command