Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Добавление новых данных. Команда INSERT

Добавление одной записи

Для добавления одной записи в таблицу в MySQL используется команда INSERT. У нее есть две основные формы записи:

  1. 1-я форма записи

    INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

    [INTO] имя_таблицы [ (поле1,поле2...) ]

    VALUES (значение_поля1, значение_поля2...);

  2. 2-я форма записи

    INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

    [INTO] имя_таблицы

    SET поле1=значение_поля1, поле2=значение_поля2, ...

Перед использованием команды INSERT следует убедиться, что таблица, в которую нужно вставлять данные, уже существует.

  • Инструкция LOW_PRIORITY позволяет отложить вставку новой записи до того момента, пока другие пользователи не завершат чтение таблицы.
  • Инструкция DELAYED используется только с таблицами типа MyISAM. Если данная инструкция присутствует, то после выполнения команды INSERT СУБД сразу же вернет ответ об успешном добавлении новой записи. При этом запись будет вставлена только после завершения чтения таблицы другими пользователями.
  • Инструкция IGNORE срабатывает при попытке вставить запись с дублирующим значением первичного ключа или уникального индекса. Она позволяет продолжить без прерывания вставку записей, пропуская записи с дубликатами. Если инструкция IGNORE отсутствует, то при появлении дубликата произойдет прерывание с сообщением об ошибке..
Пример 1

Рассмотрим таблицу Tovar со следующей структурой:

Добавление новых данных. Команда INSERT. Автор24 — интернет-биржа заказчиков и авторов

Необходимо добавить новый товар «Профнастил», который относится к категории 1. Цена на новый товар пока неизвестна.

Следующие четыре запроса решают данную задачу с одинаковым результатом:

  1. INSERT tovar (tovar_name,categ) VALUES ("Профнастил",1);
  2. INSERT INTO tovar (tovar_name,categ) VALUES ("Профнастил",1);
  3. INSERT INTO tovar (idtovar, tovar_name,categ) VALUES (NULL,"Профнастил",1);
  4. INSERT INTO tovar SET tovar_name="Профнастил", categ=1;

Добавление новых данных. Команда INSERT. Автор24 — интернет-биржа заказчиков и авторов

В приведенном примере первичный ключ idtovar имеет по умолчанию значение AUTO_INCREMENT. Это означает, что при вставке записи СУБД сама заботится о правильном значении этого поля, а пользователь может вообще не упоминать его имя в команде INSERT. Именно так построены запросы 1,2,4.

В запросе 3 поле idtovar указано явно. В случае явного указания поля с автоинкрементом ему следует присвоить значение NULL.

«Добавление новых данных. Команда INSERT» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Поле price не используется ни в одном из четырех запросов. Такой вариант допустим, если либо поле имеет значение по умолчанию, либо в него разрешается вставлять NULL. Если поле не имеет значения по умолчанию, а значение NULL для него запрещено, то поле следует явно указывать в команде INSERT. Иначе последует сообщение об ошибке.

Значения, перечисленные в разделе values должны строго соответствовать типу соответствующих полей.

Вставка нескольких записей

Для вставки нескольких записей сразу используется несколько другая форма команды INSERT:

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] имя_талицы [(поле1,поле2...)]

SELECT ..

Место раздела VALUE занимает вложенный запрос SELECT, который возвращает те записи, которые нужно вставить.

Замечание 1

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

Пример 2

Магазин получает от поставщиков прайс-лист следующего содержания:

Добавление новых данных. Команда INSERT. Автор24 — интернет-биржа заказчиков и авторов

Два товара из этого прайс-листа уже присутствуют в таблице tovar, а другие два товара отсутствуют. Требуется построить команду INSERT таким образом, чтобы данные имеющихся товаров не изменились, а два новых товара добавились с их ценами.

INSERT IGNORE INTO tovar (tovar.idtovar, tovar.tovar_name,price) SELECT idtovar,price_list.tovar_name, price_list.price FROM price_list;

Запрос SELECT вернет четыре записи. При попытке вставить эти четыре записи инструкция IGNORE позволит оставить товары «Лак водостойкий» и «Краска интерьерная» без изменений, а две другие записи успешно вставить.

Добавление новых данных. Команда INSERT. Автор24 — интернет-биржа заказчиков и авторов

Дата написания статьи: 18.08.2016
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot