MySQL MariaDB

MySQL Вмъкване на игнориране на дублиран ключ

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

Синтаксис:

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

>> INSERT IGNORE INTO table_name (col1, col2, col3) VALUES (value_list), (value_list), (value_list);

INSERT IGNORE чрез Workbench:

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

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

>> СЪЗДАВАНЕ НА ТАБЛИЦА Служител (ID int ПЪРВИЧЕН КЛЮЧ НЕ НУЛЕН, Име varchar (50) НЕ NULL, Възраст Varchar (50), Заплата varchar (50), УНИКАЛЕН (ID));

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

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

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

Както можете да видите, заявката е изпълнена успешно и записите се записват в базата данни и нейната таблица „Служител“. Щеше да генерира грешка, ако бяхме добавили дублирана стойност в колоната „ID“. Докоснете бутона „Finish“.

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

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

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

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

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

INSERT IGNORE чрез Shell на командния ред:

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

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

>> СЪЗДАЙТЕ ТАБЛИЦА данни.министър (в средата INT ОСНОВЕН КЛЮЧ УНИКАЛЕН НЕ НУЛЕН, Име VARCHAR (45), Град 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 от командния ред.

Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...
Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...
Най-добрите игри за игра с ръчно проследяване
Oculus Quest наскоро представи страхотната идея за ръчно проследяване без контролери. С непрекъснато нарастващия брой игри и дейности, които изпълнява...