MySQL ievietošana Ignorēt dublikāta atslēgu

Mysql Insert Ignore Duplicate Key



Tabulās vai rezultātu kopās bieži ir pretrunīgi dati. Labot ir arī laikietilpīgi, un bieži vien jāizvairās no atkārtotiem ierakstiem. Ir nepieciešams identificēt dublētus ierakstus un dzēst tos no jebkuras tabulas. Šajā sadaļā tiks paskaidrots, kā izvairīties no datu dublēšanās tabulā un kā novērst pašreizējos dublētos ierakstus. Šajā rokasgrāmatā jūs uzzināsit, kā izmantot klauzulu INSERT IGNORE, lai izvairītos no kļūdas.

Sintakse:

Šeit ir vaicājuma INSERT IGNORE sintakse.







>>INSERT IGNORE INTO table_name(col1, col2, col3)VĒRTĪBAS(vērtību_saraksts),(vērtību_saraksts),(vērtību_saraksts);

IEVIETOT IGNORU, izmantojot darbgaldu:

Atveriet MySQL Workbench 8.0 no savas sistēmas un savienojiet to ar datu bāzes instanci.





Komandu apgabalā jāizveido tabula Darbinieks ar četrām kolonnām, kur viena no tām jānorāda kā UNIKĀLA. Izmēģiniet zemāk esošo vaicājumu navigatora vaicājuma apgabalā, lai izveidotu šo tabulu. Atlasiet visu vaicājumu un noklikšķiniet uz zibspuldzes zīmes, lai to izpildītu.





>>CREATE TABLE Darbinieks(ID int PRIMARY KEY NOT NULL, nosaukums varchar(piecdesmit)NOT NULL, vecums Varchar(piecdesmit), Algu varchar(piecdesmit), UNIKĀLI(ID));

Pēc izveides tabulas darbinieku var atrast sarakstā zem tabulas datu opcijas Tabulas.



Režģa skatā ierakstus varat ievadīt, neievadot nevienu vaicājumu. Tātad, atveriet tabulas darbinieka režģa skatu un pievienojiet tajā dažus ierakstus, kā parādīts zemāk. Mēs esam ievadījuši visus unikālos ierakstus bez dublikātiem. Lai piemērotu izmaiņas, noklikšķiniet uz pogas “Lietot”.

Tiks atvērts jauns logs ar atbilstošiem vaicājumiem, kas saistīti ar iepriekš ievadītajiem ierakstiem. Šo ekrānu var saukt par pārskatīšanas ekrānu. Ja vēlaties kaut ko mainīt, to varat izdarīt šeit. Pretējā gadījumā nospiediet pogu Lietot, lai izpildītu vaicājumus.

Kā redzat, vaicājums ir veiksmīgi izpildīts, un ieraksti tiek saglabāti datu bāzē un tās tabulā Darbinieks. Tas būtu radījis kļūdu, ja slejas ID būtu pievienots jebkāds dublikāts. Pieskarieties pogai Pabeigt.

Tas viss bija par režģa skatu. Tagad mēs ievietosim ierakstus, izmantojot vaicājuma apgabalu. Tikmēr mēs šoreiz ievietojām ierakstu dublikātus, lai pārbaudītu izvadi. Tātad, mēs esam izmēģinājuši zemāk esošo INSERT vaicājumu, kur mums ir divi vērtību saraksti. Abiem vērtību sarakstiem slejā “ID” ir vienāda vērtība. Atlasiet vaicājumu un nospiediet zibspuldzes zīmi, lai izpildītu vaicājumu.

Vaicājums nedarbosies pareizi, un tas radīs kļūdu, jo INSERT komandas dublētās vērtības ir parādītas attēlā.

Tagad izmēģiniet to pašu iepriekš minēto vaicājumu ar klauzulu INSERT IGNORE un izpildiet to, kā parādīts.

Var redzēt, ka tas nerada kļūdu izvades apgabalā, taču tas brīdina, ka komandā ir dublētas vērtības.

Atsvaidziniet tabulas Darbinieks režģa skatu. Vaicājums INSERT IGNORE ir strādājis uz pusi. Tabulā tika ievietots pirmais vērtību saraksts, bet otrais vērtību saraksts tika ignorēts atkārtotās vērtības 13 dēļ.

IEVIETOT IGNORE, izmantojot komandrindas čaulu:

Lai saprastu šo jēdzienu, atveriet MySQL komandrindas klienta apvalku savā sistēmā. Pēc jautājuma ierakstiet savu MySQL paroli, lai sāktu darbu pie tās.

Tagad ir pienācis laiks izveidot tabulu. Lai to izdarītu, izmēģiniet zemāk esošo komandu. Mēs esam izveidojuši tabulu ar nosaukumu “ministrs”, savukārt vienā no tās kolonnām ir unikāls ierobežojums. Ir skaidrs, ka kolonnas ID pieņems tikai unikālas vērtības, nevis atkārtotas vērtības.

>>CREATE TABLE data.minister(Mid INT PRIMARY KEY UNIQUE NOT NULL, Name VARCHAR(Četri, pieci), Pilsēta VARCHAR(Četri, pieci));

Vaicājums darbojas atbilstoši, un tabula ir izveidota. Lai saprastu klauzulu INSERT IGNORE, vispirms jāredz vienkāršās INSERT komandas darbība. Ja izmantojat komandu INSERT, lai tabulā ievietotu vairākus informācijas datus, MySQL aptur darījumu un ģenerē izņēmumu, ja apstrādes laikā rodas kļūda. Līdz ar to tabulai nav pievienotas nevienas rindas. Ievadīsim pirmo ierakstu tabulas ministrā, izmantojot zemāk redzamo vaicājumu. Vaicājums darbosies veiksmīgi, jo tabula pašlaik ir tukša, un nav ieraksta, ar ko salīdzināt.

Tā kā kolonnas ID ir unikāls, komandrindas čaulā izmēģinot tālāk sniegto instrukciju, tā radīs kļūdu. Tas ir tāpēc, ka iepriekšējā vaicājumā esam pievienojuši vērtību 11, un UNIQUE atslēgas dēļ tas neļauj mums vēlreiz pievienot atkārtoto vērtību.

Tādējādi, pārbaudot tabulu, mēs redzam, ka tabulai ir tikai 1 ieraksts, ko pievienojis pirmais INSERT vaicājums.

>>SELECT*NO data.minister;

Un otrādi, ja izmantojat klauzulu INSERT IGNORE, nepareizās datu rindas, kas izraisa kļūdu, tiks ignorētas un tiks ievadītas tikai precīzās. Zemāk esošajā komandā mēs esam izmantojuši komandu INSERT IGNORE, lai tabulā nepievienotu atkārtotas vērtības un nepamanītu kļūdu. Kā redzat, pirmajam vērtību sarakstam ir dublikāta vērtība 11 tāda pati kā iepriekšējā vaicājumā. Lai gan otrais vērtību saraksts ir unikāls, tajā tiks parādīts 1 tabulā ievietots ieraksts, kas ir otrais vērtību saraksts. MySQL arī norāda, ka ir ievietots tikai 1 ieraksts un ziņojumā tiek ģenerēts 1 brīdinājums. Pēc tam jūs varat pieņemt, ka, ja mēs izmantojam klauzulu INSERT IGNORE, MySQL sniedz brīdinājumu.

Kā redzams zemāk redzamajā iznākumā, šajā tabulā ir tikai divi ieraksti - pirmais vērtību saraksts, kas sniegts iepriekš minētajā vaicājumā, kas tiek ignorēts.

>>SELECT*NO data.minister;

Secinājums:

Mēs esam veikuši visus nepieciešamos INSERT IGNORE piemērus par dublētām vērtībām, izmantojot MySQL Workbench un MySQL komandrindas klienta apvalku.