Синтаксис:
Вот синтаксис запроса INSERT IGNORE.
>>ВСТАВИТЬ ИГНОРИРОВАТЬ В имя_таблицы(col1, col2, col3)ЦЕННОСТИ(список_значений),(список_значений),(список_значений);
ВСТАВИТЬ ИГНОРИРОВАНИЕ через Workbench:
Откройте MySQL Workbench 8.0 из вашей системы и подключите его к экземпляру базы данных.
В области команд вы должны создать таблицу «Сотрудник» с четырьмя столбцами, в которой один из них должен быть указан как УНИКАЛЬНЫЙ. Попробуйте выполнить приведенный ниже запрос в области запросов навигатора, чтобы создать эту таблицу. Выделите весь запрос и щелкните значок вспышки, чтобы выполнить его.
>>СОЗДАТЬ ТАБЛИЦУ сотрудника(ID int PRIMARY KEY NOT NULL, имя varchar(пятьдесят)НЕ NULL, возраст Варчар(пятьдесят), Заработная плата варчар(пятьдесят), УНИКАЛЬНЫЙ(Я БЫ));
После создания вы можете найти сотрудника таблицы в списке под опцией Таблицы под данными базы данных.
В представлении сетки вы можете вводить записи, не вводя никаких запросов. Итак, откройте сетку таблицы сотрудника и добавьте в нее несколько записей, как показано ниже. Мы ввели все уникальные записи без дубликатов. Нажмите кнопку «Применить», чтобы применить изменения.
Откроется новое окно с соответствующими запросами, относящимися к записям, которые мы ввели выше. Этот экран можно назвать экраном обзора. Если вы хотите что-то изменить, вы можете сделать это здесь. В противном случае нажмите кнопку «Применить», чтобы выполнить запросы.
Как видите, запрос был успешно выполнен, и записи сохранены в базе данных и ее таблице Employee. Если бы мы добавили какое-либо повторяющееся значение в идентификатор столбца, это привело бы к ошибке. Нажмите кнопку «Готово».
Все дело в сетке. Теперь мы будем вставлять записи через область запроса. Между тем, на этот раз мы вставляли повторяющиеся записи, чтобы проверить результат. Итак, мы попробовали следующий запрос INSERT, где у нас есть два списка значений. Оба списка значений имеют одно и то же значение в столбце «ID». Выберите запрос и нажмите значок вспышки, чтобы выполнить запрос.
Запрос не будет работать правильно и вызовет ошибку из-за дублирования значений в команде INSERT, как показано на изображении.
Теперь попробуйте тот же запрос выше с предложением INSERT IGNORE и выполните его, как представлено.
Вы можете видеть, что он не генерирует ошибку в области вывода, но выдает предупреждение о том, что команда содержит повторяющиеся значения.
Обновите сетку таблицы Employee. Запрос INSERT IGNORE сработал наполовину. Он вставил первый список значений в таблицу, но второй список значений был проигнорирован из-за повторяющегося значения 13.
ВСТАВИТЬ ИГНОРИРОВАНИЕ через оболочку командной строки:
Чтобы понять эту концепцию, давайте откроем клиентскую оболочку командной строки MySQL в вашей системе. По запросу введите свой пароль MySQL, чтобы начать работу над ним.
Пришло время создать таблицу. Для этого попробуйте следующую команду. Мы создали таблицу с именем «Minister», в то время как один из ее столбцов имеет ограничение UNIQUE. Понятно, что идентификатор столбца будет принимать только уникальные значения, а не повторяющиеся значения.
>>СОЗДАТЬ ТАБЛИЦУ data.minister(Mid INT PRIMARY KEY UNIQUE NOT NULL, имя VARCHAR(Четыре пять), Город VARCHAR(Четыре пять));
Запрос работает правильно, и таблица создана. Чтобы понять предложение INSERT IGNORE, вы должны сначала увидеть, как работает простая команда INSERT. Если вы используете команду INSERT для вставки нескольких информационных данных в таблицу, MySQL приостанавливает транзакцию и генерирует исключение, если ошибка происходит во время обработки. Как следствие, таблица не имеет добавленных строк. Давайте вставим первую запись в таблицу Minister, используя запрос, показанный ниже. Запрос будет работать успешно, потому что таблица в настоящее время пуста и нет записи для сопоставления.
Поскольку идентификатор столбца УНИКАЛЬНЫЙ, когда мы попробуем выполнить приведенную ниже инструкцию в оболочке командной строки, она выдаст ошибку. Это связано с тем, что мы добавили значение 11 в предыдущем запросе, и из-за ключа UNIQUE он не позволяет нам снова добавить повторяющееся значение.
Следовательно, при проверке таблицы мы видим, что в таблицу добавлена только 1 запись первым запросом INSERT.
>>ВЫБРАТЬ*ОТ data.minister;
И наоборот, если вы используете предложение INSERT IGNORE, неправильные строки данных, вызывающие ошибку, не будут учитываться и будут вводиться только точные. В приведенной ниже команде мы использовали команду INSERT IGNORE, чтобы избежать добавления повторяющихся значений в таблицу и пропустить ошибку. Как видите, первый список значений имеет повторяющееся значение 11, такое же, как и в предыдущем запросе. Хотя второй список значений уникален, он будет отображать 1 запись, вставленную в таблицу, которая является вторым списком значений. MySQL также указывает, что была вставлена только 1 запись, и в сообщении генерируется 1 предупреждение. Затем вы можете предположить, что если мы используем предложение INSERT IGNORE, MySQL выдает предупреждение.
Как видно из выходных данных ниже, у нас есть только две записи в этой таблице - первый список значений, представленный в приведенном выше запросе, который упускается из виду.
>>ВЫБРАТЬ*ОТ data.minister;
Заключение:
Мы сделали все необходимые примеры INSERT IGNORE для повторяющихся значений через MySQL Workbench и клиентскую оболочку командной строки MySQL.