Si i trajton pyetja MySQL të dhënat e kopjuara?Filtro për të hequr deklaratën e të dhënave të kopjuara

MySQLSi i trajtojnë pyetjet të dhënat e kopjuara?Filtro për të hequr deklaratën e të dhënave të kopjuara

MySQL Trajtimi i të dhënave të dyfishta

Mund të ketë regjistrime të dyfishta në disa tabela të të dhënave MySQL. Në disa raste, ne lejojmë ekzistencën e të dhënave të dyfishta, por ndonjëherë duhet t'i fshijmë edhe këto të dhëna dublikate.

Në këtë kapitull, ne do të prezantojmë se si të parandalohen të dhënat e dyfishta në tabelën e të dhënave dhe si të fshihen të dhënat e kopjuara në tabelën e të dhënave.


Parandaloni të dhënat e kopjuara në tabela

Ju mund të vendosni fushën e specifikuar në tabelën e të dhënave MySQL si ÇELESI PRIMAR ose UNIKE (unike) Indeksi për të siguruar veçantinë e të dhënave.

Le të provojmë një shembull: Nuk ka indekse dhe çelësa kryesorë në tabelën e mëposhtme, kështu që tabela lejon shumë regjistrime të kopjuara.

CREATE TABLE person_tbl
(
    first_name CHAR(20),
    last_name CHAR(20),
    sex CHAR(10)
);

Nëse dëshironi të vendosni fushat first_name dhe last_name në tabelë, të dhënat nuk mund të përsëriten, mund të vendosni modalitetin e çelësit primar të dyfishtë për të vendosur uniken e të dhënave. Nëse vendosni çelësin primar të dyfishtë, vlera e paracaktuar e atij çelësi nuk mund të jetë NULL, por mund të vendoset në NOT NULL.Si vijon:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);

Nëse vendosim një indeks unik, atëherë kur futni të dhëna të dyfishta, deklarata SQL do të dështojë të ekzekutohet me sukses dhe do të shkaktojë një gabim.

Dallimi midis INSERT IGNORE INTO dhe INSERT INTO është se INSERT IGNORE injoron të dhënat që ekzistojnë tashmë në bazën e të dhënave.Në këtë mënyrë mund të ruhen të dhënat ekzistuese në bazën e të dhënave dhe të arrihet qëllimi i futjes së të dhënave në boshllëk.

Shembulli i mëposhtëm përdor INSERT IGNORE INTO, i cili ekzekutohet pa gabime dhe nuk fut të dhëna të dyfishta në tabelën e të dhënave:

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

INSERT IGNORE INTO Kur futni të dhëna, pasi të vendoset veçantia e rekordit, nëse futen të dhëna dublikate, nuk do të kthehet asnjë gabim, por do të kthehet vetëm një paralajmërim.Dhe REPLACE INTO nëse ka një rekord primar ose unik, fshijeni atë së pari.Fut një rekord të ri.

Një mënyrë tjetër për të vendosur veçantinë e të dhënave tuaja është të shtoni një indeks UNIK si ky:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

Statistikat dyfishojnë të dhëna

Më poshtë do të numërojmë numrin e regjistrimeve të kopjuara të emrit dhe mbiemrit në tabelë:

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;

Deklarata e mësipërme e pyetjes do të kthejë numrin e regjistrimeve të kopjuara në tabelën person_tbl.Në përgjithësi, për të kërkuar vlera të dyfishta, bëni sa më poshtë:

  • Përcaktoni se cila kolonë përmban vlera të mundshme të dyfishta.
  • Përdorni COUNT(*) në ​​listën e përzgjedhjes së kolonës për të renditur ato kolona.
  • Kolonat e renditura në klauzolën GROUP BY.
  • Klauzola HAVING vendos numrin e përsëritjeve më të madh se 1.

filtro të dhënat e kopjuara

Nëse keni nevojë të lexoni të dhëna unike, mund të përdorni fjalën kyçe DISTINCT në deklaratën SELECT për të filtruar të dhënat e dyfishta.

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl;

Ju gjithashtu mund të përdorni GROUP BY për të lexuar të dhëna unike nga një tabelë:

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

kopjoni të dhënat

Nëse dëshironi të fshini të dhëna të kopjuara në tabelën e të dhënave, mund të përdorni deklaratën e mëposhtme SQL:

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
    ->                  FROM person_tbl;
    ->                  GROUP BY (last_name, first_name, sex);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

Sigurisht, mund të shtoni edhe INDEX (indeks) dhe PRIMAY KEY (çelës primar) në tabelën e të dhënave për të fshirë të dhënat e dyfishta në tabelë.Metodat si më poshtë:

mysql> ALTER IGNORE TABLE person_tbl
    -> ADD PRIMARY KEY (last_name, first_name);

Blogu Hope Chen Weiliang ( https://www.chenweiliang.com/ ) shared "Si kërkon dhe trajton MySQL të dhënat e kopjuara?Deklaratat e filtrimit dhe deduplikimi" do t'ju ndihmojë.

Mirë se vini të shpërndani lidhjen e këtij artikulli:https://www.chenweiliang.com/cwl-499.html

Mirësevini në kanalin Telegram të blogut të Chen Weiliang për të marrë përditësimet më të fundit!

🔔 Bëhu i pari që merr "Udhëzuesin e përdorimit të mjeteve të marketingut të përmbajtjes AI" me vlerë "ChatGPT Content Marketing AI" në drejtorinë kryesore të kanalit! 🌟
📚 Ky udhëzues përmban vlera të mëdha, 🌟Ky është një mundësi e rrallë, mos e humbisni! ⏰⌛💨
Shpërndaje dhe like nëse të pëlqen!
Ndarjet dhe pëlqimet tuaja janë motivimi ynë i vazhdueshëm!

 

发表 评论

Adresa juaj e emailit nuk do të publikohet. Përdoren fushat e kërkuara * Etiketa

lëvizni në krye