Cyfeiriadur Erthygl
MySQLSut mae ymholiadau yn trin data dyblyg?Hidlo i ddileu datganiad data dyblyg
MySQL Trin data dyblyg
Efallai y bydd cofnodion dyblyg mewn rhai tablau data MySQL.Mewn rhai achosion, rydym yn caniatáu bodolaeth data dyblyg, ond weithiau mae angen i ni ddileu'r data dyblyg hyn hefyd.
Yn y bennod hon, byddwn yn cyflwyno sut i atal data dyblyg yn y tabl data a sut i ddileu'r data dyblyg yn y tabl data.
Atal data dyblyg mewn tablau
Gallwch chi osod y maes penodedig yn y tabl data MySQL fel ALLWEDD CYNRADD neu UNIGRYW (unigryw) Mynegai i sicrhau unigrywiaeth data.
Gadewch i ni roi cynnig ar enghraifft: Nid oes mynegeion ac allweddi cynradd yn y tabl isod, felly mae'r tabl yn caniatáu cofnodion dyblyg lluosog.
CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20), sex CHAR(10) );
Os ydych am osod y meysydd first_name ac last_name yn y tabl, ni ellir ailadrodd y data, gallwch osod y modd bysell gynradd ddwbl i osod unigrywiaeth y data. Os ydych yn gosod yr allwedd gynradd ddwbl, gwerth rhagosodedig yr allwedd honno Ni all fod yn NULL, ond gellir ei osod i NOT NULL.Fel a ganlyn:
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) );
Os byddwn yn gosod mynegai unigryw, yna wrth fewnosod data dyblyg, bydd y datganiad SQL yn methu â gweithredu'n llwyddiannus a thaflu gwall.
Y gwahaniaeth rhwng INSERT IGNORE INTO ac INSERT INTO yw bod INSERT IGNORE yn anwybyddu'r data sydd eisoes yn bodoli yn y gronfa ddata. Os nad oes data yn y gronfa ddata, bydd yn mewnosod data newydd, ac os oes data, bydd yn hepgor y data hwn.Yn y modd hwn, gellir cadw'r data presennol yn y gronfa ddata, a gellir cyflawni pwrpas mewnosod data yn y bwlch.
Mae'r enghraifft ganlynol yn defnyddio INSERT IGNORE INTO, sy'n gweithredu heb wall ac nid yw'n mewnosod data dyblyg yn y tabl data:
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)
RHOWCH IGNORE I MEWN Wrth fewnosod data, ar ôl i unigrywiaeth y cofnod gael ei osod, os caiff data dyblyg ei fewnosod, ni fydd gwall yn cael ei ddychwelyd, ond dim ond rhybudd fydd yn cael ei ddychwelyd.Ac AMNEWID I MEWN os oes cofnod cynradd neu unigryw, dilëwch ef yn gyntaf.Mewnosod cofnod newydd.
Ffordd arall o osod unigrywiaeth eich data yw ychwanegu mynegai UNIGRYW fel hyn:
CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10) UNIQUE (last_name, first_name) );
Mae ystadegau'n dyblygu data
Isod byddwn yn cyfrif nifer y cofnodion dyblyg o enw_cyntaf ac enw_olaf yn y tabl:
mysql> SELECT COUNT(*) as repetitions, last_name, first_name -> FROM person_tbl -> GROUP BY last_name, first_name -> HAVING repetitions > 1;
Bydd y datganiad ymholiad uchod yn dychwelyd nifer y cofnodion dyblyg yn y tabl person_tbl.Yn gyffredinol, i ymholi am werthoedd dyblyg, gwnewch y canlynol:
- Darganfyddwch pa golofn sy'n cynnwys gwerthoedd dyblyg posibl.
- Defnyddiwch COUNT(*) yn rhestr dewis y golofn i restru'r colofnau hynny.
- Colofnau a restrir yn y cymal GRŴP GAN .
- Mae'r cymal HAVING yn gosod nifer yr ailadroddiadau sy'n fwy nag 1.
hidlo data dyblyg
Os oes angen i chi ddarllen data unigryw, gallwch ddefnyddio'r allweddair DISTINCT yn y datganiad SELECT i hidlo data dyblyg.
mysql> SELECT DISTINCT last_name, first_name -> FROM person_tbl;
Gallwch hefyd ddefnyddio GRWP BY i ddarllen data unigryw o dabl:
mysql> SELECT last_name, first_name -> FROM person_tbl -> GROUP BY (last_name, first_name);
data dad-ddyblyg
Os ydych chi am ddileu data dyblyg yn y tabl data, gallwch ddefnyddio'r datganiad SQL canlynol:
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;
Wrth gwrs, gallwch hefyd ychwanegu MYNEGAI (mynegai) a PRIMAY ALLWEDDOL (allwedd gynradd) yn y tabl data i ddileu cofnodion dyblyg yn y tabl.Dulliau fel isod:
mysql> ALTER IGNORE TABLE person_tbl -> ADD PRIMARY KEY (last_name, first_name);
Blog Chen Weiliang Gobeithio ( https://www.chenweiliang.com/ ) a rennir "Sut mae MySQL yn ymholi ac yn trin data dyblyg?Bydd Hidlo a Datganiadau Dad-ddyblygu" yn eich helpu.
Croeso i chi rannu dolen yr erthygl hon:https://www.chenweiliang.com/cwl-499.html
Croeso i sianel Telegram o blog Chen Weiliang i gael y diweddariadau diweddaraf!
📚 Mae'r canllaw hwn yn cynnwys gwerth enfawr, 🌟Mae hwn yn gyfle prin, peidiwch â'i golli! ⏰⌛💨
Rhannwch a hoffwch os hoffech chi!
Eich rhannu a'ch hoff bethau yw ein cymhelliant parhaus!