MySQL Insert Ignore Duplicate Key

Mysql Insert Ignore Duplicate Key



Често има противоречиви данни в таблици или набори от резултати. Поправянето отнема много време и често трябва да се избягват повтарящи се записи. Идентифицирането на дублиращи се записи и изтриването им от всяка таблица е необходимо. Този раздел ще опише как да се избегне появата на дублиращи се данни в таблица и как да се премахнат текущите дублиращи се записи. В това ръководство ще научите как да използвате клаузата INSERT IGNORE, за да избегнете грешката.

Синтаксис:

Ето синтаксиса за заявката INSERT IGNORE.







>>ВМЕСТВАНЕ НА ИГНОРЕТЕ В ИМЕ на таблица(col1, col2, col3)СТОЙНОСТИ(value_list),(value_list),(value_list);

ВМЕСТВАНЕ НА IGNORE чрез Workbench:

Отворете MySQL Workbench 8.0 от вашата система и го свържете към екземпляра на базата данни.





В командната област трябва да създадете таблица Employee с четири колони, където една от тях трябва да бъде посочена като UNIQUE. Опитайте заявката по -долу в областта за заявки на навигатора, за да създадете тази таблица. Изберете цялата заявка и щракнете върху флаш знака, за да я изпълните.





>>CREATE TABLE Служител(ID int ПРЕДВАРИТЕЛЕН КЛЮЧ НЕ Е НУЛ, Име varchar(петдесет)NOT NULL, Age Varchar(петдесет), Заплата varchar(петдесет), ЕДИНСТВЕН ПО РОДА СИ(документ за самоличност));

При създаването можете да намерите служителя на таблицата в списъка под опцията Таблици под данните в базата данни.



В изгледа на мрежа можете да въвеждате записите, без да въвеждате никаква заявка. Така че, отворете мрежовия изглед на служител на таблицата и добавете някои записи в него, както е показано по -долу. Въведохме всички уникални записи без дубликати. Натиснете бутона „Приложи“, за да приложите промените.

Ще се отвори нов прозорец със съответните заявки, свързани с записите, които сме въвели по -горе. Този екран може да се нарече екран за преглед. Ако искате да промените нещо, можете да го направите тук. В противен случай натиснете бутона Приложи, за да изпълните заявките.

Както можете да видите, заявката е изпълнена успешно и записите са записани в базата данни и нейната таблица Employee. Щеше да генерира грешка, ако бяхме добавили дублирана стойност в идентификатора на колоната. Докоснете бутона Готово.

Това беше всичко за изгледа на мрежата. Сега ще вмъкваме записи чрез областта за заявки. Междувременно този път вмъкваме дублирани записи, за да проверим изхода. И така, опитахме по -долу INSERT заявката, където имаме два списъка със стойности. И двата списъка със стойности имат една и съща стойност в колоната „ID“. Изберете заявката и натиснете флаш знака, за да изпълните заявката.

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

Сега опитайте същата заявка по -горе с клаузата INSERT IGNORE и я изпълнете, както е представено.

Можете да видите, че не генерира грешка в изходната област, но дава предупреждение, че командата съдържа дублирани стойности.

Опреснете изгледа на мрежата на служител на таблицата. Заявката INSERT IGNORE е работила наполовина. Той вмъкна първия списък със стойности в таблицата, но вторият списък със стойности беше игнориран поради повтарящата се стойност 13.

ВМЕСТВАНЕ НА IGNORE чрез командния ред:

За да разберем тази концепция, нека отворим клиентската обвивка на командния ред MySQL във вашата система. При поискване въведете паролата си за MySQL, за да започнете да работите по нея.

Сега е време да създадете таблица. Опитайте командата по -долу, за да направите това. Създадохме таблица, наречена „министър“, докато една от колоните й има УНИКАЛНО ограничение. Ясно е, че идентификаторът на колоната ще приема само уникалните стойности, но не и дублиращите се стойности.

>>CREATE TABLE data.minister(В средата INT ОСНОВЕН КЛЮЧ УНИКАЛЕН НЕ НУЛ, Име VARCHAR(Четири пет), Град ВАРЧАР(Четири пет));

Заявката работи по подходящ начин и таблицата е създадена. За да разберете клаузата INSERT IGNORE, първо трябва да видите как работи простата команда INSERT. Ако използвате командата INSERT, за да вмъкнете няколко информационни данни в таблица, MySQL спира транзакцията и генерира изключение, ако възникне грешка по време на обработката. В резултат на това в таблицата няма добавени редове. Нека вмъкнем първия запис в министъра на таблицата, използвайки показаната по-долу заявка. Заявката ще работи успешно, тъй като понастоящем таблицата е празна и няма запис, с който да се сравнява.

Тъй като идентификаторът на колоната е UNIQUE, когато опитаме инструкцията по-долу на обвивката на командния ред, тя ще генерира грешка. Това е така, защото сме добавили стойността 11 в предишната заявка и поради ключа UNIQUE не ни позволява да добавим отново повтарящата се стойност.

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

>>SELECT*ОТ data.minister;

И обратно, ако използвате клаузата INSERT IGNORE, неправилните редове с данни, които задействат грешката, ще бъдат пренебрегнати и ще влязат само в точните. В командата по -долу използвахме командата INSERT IGNORE, за да избегнем добавянето на повтарящи се стойности в таблицата и да пренебрегнем грешката. Както можете да видите, първият списък със стойности има дублирана стойност 11, същата като в предишната заявка. Докато вторият списък със стойности е уникален, той ще покаже 1 запис, вмъкнат в таблицата, което е вторият списък със стойности. MySQL също така показва, че е вмъкнат само 1 запис и в съобщението се генерира 1 предупреждение. След това можете да приемете, че ако използваме клаузата INSERT IGNORE, MySQL предоставя предупреждение.

Както можете да видите от изхода по -долу, имаме само два записа в тази таблица - първият списък със стойности, предоставен в горната заявка, който се пренебрегва.

>>SELECT*ОТ data.minister;

Заключение:

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