Источник: Nuances of Programming
Команда вставки данных в таблицу востребована во всех реляционных базах данных. В руководстве рассмотрим разные способы вставки данных в таблицу через систему управления базами данных 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.
Читайте также:
Перевод статьи Bravezombie: Ultimate Guide to MySQL INSERT Command