MySQL MariaDB

MySQL Insert Ignore Duplicate Key

MySQL Insert Ignore Duplicate Key
В таблицах или наборах результатов часто встречаются противоречивые данные. Кроме того, исправление занимает много времени, и часто следует избегать повторяющихся записей. Необходимо выявить повторяющиеся записи и удалить их из любой таблицы. В этом разделе подробно рассказывается о том, как избежать появления повторяющихся данных внутри таблицы и как удалить текущие повторяющиеся записи. В этом руководстве вы узнаете, как использовать предложение INSERT IGNORE, чтобы избежать ошибки.

Синтаксис:

Вот синтаксис запроса INSERT IGNORE.

>> INSERT IGNORE INTO имя_таблицы (col1, col2, col3) VALUES (список_значений), (список_значений), (список_значений);

ВСТАВИТЬ ИГНОРИРОВАНИЕ через Workbench:

Откройте свой MySQL Workbench 8.0 из вашей системы и подключите его к экземпляру базы данных.

В области команд вы должны создать таблицу «Сотрудник» с четырьмя столбцами, в которой один из них должен быть указан как «УНИКАЛЬНЫЙ». Попробуйте выполнить приведенный ниже запрос в области запроса навигатора, чтобы создать эту таблицу. Выберите весь запрос и щелкните значок вспышки, чтобы выполнить его.

>> СОЗДАТЬ ТАБЛИЦУ Сотрудник (ID int PRIMARY KEY NOT NULL, имя varchar (50) NOT NULL, Age Varchar (50), Salary varchar (50), UNIQUE (ID));

После создания вы можете найти таблицу «сотрудник» в списке под опцией «Таблицы» под базой данных «данные».

В представлении сетки вы можете вводить записи, не вводя никаких запросов. Итак, откройте сетку таблицы «employee» и добавьте в нее несколько записей, как показано ниже. Мы ввели все уникальные записи без дубликатов. Нажмите кнопку «Применить», чтобы применить изменения.

Откроется новое окно с соответствующими запросами, связанными с записями, которые мы ввели выше. Этот экран можно назвать экраном «Обзор». Если вы хотите что-то изменить, вы можете сделать это здесь. В противном случае нажмите кнопку Применить, чтобы выполнить запросы.

Как видите, запрос выполнен успешно и записи сохранены в базе данных и ее таблице «Сотрудник». Если бы мы добавили какое-либо повторяющееся значение в столбец «ID», это привело бы к ошибке. Нажмите кнопку «Готово».

Все дело в сетке. Теперь мы будем вставлять записи через область запроса. Между тем, на этот раз мы вставляли повторяющиеся записи, чтобы проверить вывод. Итак, мы попробовали следующий запрос «INSERT», где у нас есть два списка значений. Оба списка значений имеют одинаковое значение в столбце "ID". Выберите запрос и нажмите значок вспышки, чтобы выполнить запрос.

Запрос не будет работать правильно и вызовет ошибку из-за дублирования значений в команде INSERT, как показано на изображении.

Теперь попробуйте тот же запрос выше с предложением INSERT IGNORE и выполните его, как представлено.

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

Обновите сетку таблицы «Сотрудник». Запрос INSERT IGNORE отработал наполовину. Он вставил первый список значений в таблицу, но второй список значений был проигнорирован из-за повторяющегося значения «13».

ВСТАВИТЬ ИГНОРИРОВАНИЕ через оболочку командной строки:

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

Пришло время создать таблицу. Попробуйте для этого команду ниже. Мы создали таблицу с именем «Minister», в то время как один из ее столбцов имеет ограничение UNIQUE. Понятно, что столбец «ID» будет принимать только уникальные значения, а не повторяющиеся значения.

>> СОЗДАТЬ ТАБЛИЦУ данные.министр (Mid INT PRIMARY KEY UNIQUE NOT NULL, имя VARCHAR (45), City VARCHAR (45));

Запрос работает корректно, и таблица создана. Чтобы понять предложение INSERT IGNORE, вы должны сначала увидеть, как работает простая команда INSERT. Если вы используете команду INSERT для вставки нескольких информационных данных в таблицу, MySQL приостанавливает транзакцию и генерирует исключение, если ошибка происходит во время обработки. Как следствие, таблица не имеет добавленных строк. Давайте вставим первую запись в таблицу «министр», используя показанный ниже запрос. Запрос будет работать успешно, потому что таблица в настоящее время пуста, и нет записи для сопоставления с.

Поскольку столбец «ID» является УНИКАЛЬНЫМ, когда мы попробуем выполнить приведенную ниже инструкцию в оболочке командной строки, она выдаст ошибку. Это связано с тем, что мы добавили значение «11» в предыдущем запросе, и из-за ключа UNIQUE он не позволяет нам снова добавить повторяющееся значение.

Следовательно, при проверке таблицы мы видим, что в таблице есть только 1 запись, добавленная первым запросом INSERT.

>> ВЫБРАТЬ * ИЗ данных.министр;

И наоборот, если вы используете предложение INSERT IGNORE, неправильные строки данных, которые вызывают ошибку, будут упущены из виду и будут вводить только точные. В приведенной ниже команде мы использовали команду INSERT IGNORE, чтобы не добавлять повторяющиеся значения в таблицу и не обращать внимания на ошибку. Как видите, первый список значений имеет повторяющееся значение «11», такое же, как и в предыдущем запросе. Хотя второй список значений уникален, он будет отображать 1 запись, вставленную в таблицу, которая является вторым списком значений. MySQL также указывает, что была вставлена ​​только 1 запись, и в сообщении генерируется 1 предупреждение. Затем вы можете предположить, что если мы используем предложение INSERT IGNORE, MySQL выдает предупреждение.

Как видно из выходных данных ниже, у нас есть только две записи в этой таблице - первый список значений, представленный в приведенном выше запросе, который упускается из виду.

>> ВЫБРАТЬ * ИЗ данных.министр;

Заключение:

Мы сделали все необходимые примеры INSERT IGNORE для повторяющихся значений через MySQL Workbench и клиентскую оболочку командной строки MySQL.

Shadow of the Tomb Raider для Linux Учебное пособие
Shadow of the Tomb Raider - двенадцатое дополнение к серии Tomb Raider - франшизе приключенческой игры, созданной Eidos Montreal. Игра была очень хоро...
Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...
Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...