Duomenų bazės projektavimo geriausia praktika rekomenduoja naudoti UNIQUE apribojimą, kad būtų išvengta duomenų dublikatų. Tačiau dirbant su prastai sukurta duomenų baze ar nešvariais duomenimis, gali tekti patiems susirasti dublikatus ir juos ištrinti rankiniu būdu.
Skaitykite toliau, kad sužinotumėte, kaip rasti dublikatus SQL duomenų bazėje ir kaip juos ištrinti.
Sukurkite pavyzdinę duomenų bazę
Demonstravimo tikslais sukurkite lentelę pavadinimu Vartotojai su vardo ir balo stulpeliu, vykdydami šią SQL užklausą.
NULEISTILENTELĖJEIYRAVartotojai;
KURTILENTELĖVartotojai (
pk_id tarpt PIRMINIS RAKTAS,
vardas VARCHAR (16),
rezultatas INT,
);
Įveskite keletą pavyzdinių reikšmių vykdydami šią užklausą:
ĮDĖTIĮ
Vartotojai (pk_id, vardas, rezultatas)
VERTYBĖS
(1, 'Jane', 20),
(2, "Jonas", 13),
(3, "Aleksas", 32),
(4, "Jonas", 46),
(5, 'Jane', 20),
(6, 'Marija', 34),
(7, 'Jane', 20),
(8, "Jonas", 13)
Atminkite, kad kai kuriose iš šių eilučių yra pasikartojančios pavadinimo stulpelio reikšmės.
Nedvejodami peržiūrėkite šiuos dalykus SQL komandos ir užklausos jei reikia išsamesnio paaiškinimo, kaip valdyti duomenų bazes naudojant SQL.
GROUP BY naudojimas pasikartojančioms reikšmėms rasti
Tu gali naudokite teiginį GROUP BY, kad sutvarkytumėte reikšmes kurios atitinka tam tikras sąlygas toje pačioje grupėje.
Tarkime, pavadinimai pavyzdinėje lentelėje turi būti unikalūs. Galite naudoti GROUP BY norėdami sugrupuoti tuos pačius pavadinimus turinčias eilutes.
PASIRINKTIvardas, COUNT(vardas)
IŠ vartotojų
GRUPĖ PAGAL vardą
TURIMAS SKAIČIUS (vardas) > 1
COUNT leidžia pasirinkti eilutes, kuriose yra daugiau nei vienas naudotojas tuo pačiu vardu.
Kai vykdote šią užklausą, duomenų bazė pateiks eilutes su John ir Jane kaip dublikatus.
Dublikatų ištrynimas iš duomenų bazės
Suradę dublikatus, galbūt norėsite juos ištrinti naudodami teiginį DELETE.
Šiame pavyzdyje paleiskite šią užklausą:
SU cte AS (
PASIRINKTI *
ROW_NUMBER() PABAIGTA (
SKYRIUS
vardas, balas
RŪŠIUOTI PAGAL
vardas, balas
) R
NUO
Vartotojai
)
IŠTRINTINUO cte
KUR R > 1;
Ši užklausa naudoja CTE išraišką, kad surastų dublikatus ir ištrina juos visus, išskyrus vieną.
Kodėl turėtumėte ištrinti pasikartojančius duomenis
Pasikartojančių duomenų ištrinti nebūtina. Tačiau tai leidžia atlaisvinti vietos, kurią naudoja pasikartojančios eilutės.
Mažiau eilučių taip pat reiškia, kad užklausos gali būti vykdomos daug greičiau, todėl padidėja našumas. Naudokite šioje mokymo programoje pateiktas užklausas, kad padėtų rasti ir pašalinti SQL duomenų bazės dublikatus.