MySQL MariaDB

MySQL Umetni zanemari duplicirani ključ

MySQL Umetni zanemari duplicirani ključ
U tablicama ili skupovima ishoda često postoje proturječni podaci. Također je dugotrajno ispravljanje, a često treba izbjegavati ponovljene zapise. Potrebno je identificirati duplikate zapisa i izbrisati ih iz bilo koje tablice. Ovaj će odjeljak detaljno objasniti kako izbjeći pojavljivanje dupliciranih podataka unutar tablice i kako ukloniti trenutne dvostruke zapise. U ovom ćete vodiču naučiti kako koristiti klauzulu INSERT IGNORE kako biste izbjegli pogrešku.

Sintaksa:

Evo sintakse za upit INSERT IGNORE.

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

INSERT IGNORE putem Workbencha:

Otvorite MySQL Workbench 8.0 iz svog sustava i spojite ga na instancu baze podataka.

U naredbenom području morate stvoriti tablicu "Zaposlenik" s četiri stupca, gdje jedan od njih mora biti naveden kao "JEDINSTVEN". Isprobajte upit u nastavku u području upita navigatora da biste stvorili ovu tablicu. Odaberite cijeli upit i kliknite znak flash da biste ga izvršili.

>> STVORI TABLICU Zaposlenik (ID int PRIMARNI KLJUČ NIJE NULL, ime varchar (50) NIJE NULL, dob Varchar (50), varchar na plaću (50), JEDINSTVEN (ID));

Nakon stvaranja, tablicu "zaposlenik" možete pronaći na popisu pod opcijom "Tablice" ispod baze podataka "podaci".

U mrežnom prikazu možete unositi zapise bez upisivanja upita. Dakle, otvorite mrežni prikaz tablice "zaposlenik" i dodajte neke zapise u nju kao što je prikazano u nastavku. Upisali smo sve jedinstvene zapise bez duplikata. Pritisnite gumb 'Primijeni' da biste primijenili promjene.

Otvorit će se novi prozor s relevantnim upitima vezanim za zapise koje smo gore unijeli. Ovaj se zaslon može nazvati zaslonom "Pregled". Ako želite nešto promijeniti, možete to učiniti ovdje. U suprotnom, pritisnite gumb Primijeni za izvršavanje upita.

Kao što vidite, upit je uspješno izveden i zapisi se spremaju u bazu podataka i njegovu tablicu "Zaposlenik". Generirala bi pogrešku da smo dodali bilo kakvu dupliciranu vrijednost u stupac "ID". Dodirnite gumb "Završi".

Ovdje se sve radilo na mrežnom prikazu. Sada ćemo umetati zapise putem područja upita. U međuvremenu, ovaj smo put ubacili dvostruke zapise kako bismo provjerili izlaz. Dakle, isprobali smo upit "INSERT" u nastavku, gdje imamo dva popisa vrijednosti. Oba popisa vrijednosti imaju istu vrijednost u stupcu 'ID'. Odaberite upit i pritisnite tipku flash da biste izvršili upit.

Upit neće raditi ispravno i generirat će pogrešku zbog dupliciranih vrijednosti u naredbi INSERT kao što je prikazano na slici.

Pokušajte isti gornji upit s klauzulom INSERT IGNORE i izvršite ga kako je prikazano.

Možete vidjeti da ne generira pogrešku u izlaznom području, ali daje upozorenje da naredba sadrži dvostruke vrijednosti.

Osvježite mrežni prikaz tablice "Zaposlenik". Upit INSERT IGNORE uspio je upola. Ubacio je prvi popis vrijednosti u tablicu, ali drugi popis vrijednosti zanemaren je zbog ponovljene vrijednosti "13".

INSERT IGNORE putem školjke naredbenog retka:

Da bismo razumjeli ovaj koncept, otvorimo MySQL klijentsku ljusku naredbenog retka u vašem sustavu. Na upit upišite svoju MySQL lozinku da biste počeli raditi na njoj.

Sada je vrijeme za stvaranje tablice. Pokušajte naredbu u nastavku da biste to učinili. Izradili smo tablicu koja se zove 'ministar', dok jedan od njezinih stupaca ima UNIKATNO ograničenje. Jasno je da će stupac "ID" prihvatiti samo jedinstvene vrijednosti, a ne dvostruke vrijednosti.

>> IZRADI podatke u TABELI.ministar (sredina INT PRIMARNI KLJUČ UNIQUE NOT NULL, Ime VARCHAR (45), Grad VARCHAR (45));

Upit djeluje na odgovarajući način, a tablica je stvorena. Da biste razumjeli klauzulu INSERT IGNORE, prvo morate vidjeti kako funkcionira jednostavna naredba INSERT. Ako koristite naredbu INSERT za umetanje nekoliko podataka podataka u tablicu, MySQL obustavlja transakciju i generira iznimku ako se tijekom obrade dogodi pogreška. Kao posljedica toga, tablica nema dodanih redova. Umetnimo prvi zapis u tablicu "ministar" pomoću dolje prikazanog upita. Upit će uspješno funkcionirati jer je tablica trenutno prazna i nema zapisa s kojim bi se mogao usporediti.

Kako je stupac "ID" JEDINSTVEN, kada isprobamo donju uputu na ljusci naredbenog retka, generirat će pogrešku. To je zato što smo u prethodni upit dodali vrijednost "11", a zbog UNIQUE ključa ne dopušta nam ponovno dodavanje ponovljene vrijednosti.

Stoga, provjerom tablice možemo vidjeti da tablica ima samo 1 zapis dodan prvim upitom INSERT.

>> ODABERI * IZ podataka.ministar;

Suprotno tome, ako koristite klauzulu INSERT IGNORE, previdjet će se netočni retci podataka koji pokreću pogrešku i unijet će samo one točne. U naredbi ispod koristili smo naredbu INSERT IGNORE kako bismo izbjegli dodavanje ponovljenih vrijednosti u tablicu i previdjeli pogrešku. Kao što vidite, prvi popis vrijednosti ima duplikat vrijednosti "11" isti kao u prethodnom upitu. Iako je drugi popis vrijednosti jedinstven, prikazat će se 1 zapis umetnut u tablicu, što je drugi popis vrijednosti. MySQL također pokazuje da je umetnut samo 1 zapis, a u poruci se generira 1 upozorenje. Tada možete pretpostaviti da ako koristimo klauzulu INSERT IGNORE, MySQL daje upozorenje.

Kao što možete vidjeti iz donjeg rezultata, u ovoj tablici imamo samo dva zapisa - prvi popis vrijednosti naveden u gornjem upitu, koji je previđen.

>> ODABERI * IZ podataka.ministar;

Zaključak:

Napravili smo sve potrebne primjere INSERT IGNORE na dupliciranim vrijednostima putem MySQL Workbencha i klijentske ljuske MySQL naredbenog retka.

Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...
Kako prikazati brojač FPS-a u Linux igrama
Linux gaming dobio je velik poticaj kada je Valve najavio Linux podršku za Steam klijent i njihove igre 2012. godine. Od tada su mnoge AAA i indie igr...
Kako preuzeti i igrati Sid Meier's Civilization VI na Linuxu
Uvod u igru Civilization 6 moderan je pogled na klasični koncept predstavljen u seriji igara Age of Empires. Ideja je bila prilično jednostavna; započ...