Bawo ni ibeere MySQL ṣe n ṣakoso data ẹda-ẹda?Àlẹmọ lati yọ àdáwòkọ gbólóhùn

MySQLBawo ni awọn ibeere ṣe n ṣakoso data ẹda-ẹda?Àlẹmọ lati yọ àdáwòkọ gbólóhùn

MySQL Mimu àdáwòkọ data

Awọn igbasilẹ ẹda-ẹda le wa ni diẹ ninu awọn tabili data MySQL Ni awọn igba miiran, a gba laaye data ẹda-ẹda, ṣugbọn nigbami a tun nilo lati pa awọn data ẹda-ẹda rẹ rẹ.

Ninu ori iwe yii, a yoo ṣafihan bi o ṣe le ṣe idiwọ data ẹda-iwe ninu tabili data ati bii o ṣe le pa data ẹda-iwe rẹ ni tabili data.


Ṣe idiwọ data ẹda-iwe ni awọn tabili

O le ṣeto aaye pàtó kan ninu tabili data MySQL bi KỌKỌRIN ALÁKÙNRIN tabi PATAKI (oto) Atọka lati rii daju iyasọtọ ti data.

Jẹ ki a gbiyanju apẹẹrẹ: Ko si awọn atọka ati awọn bọtini akọkọ ninu tabili ni isalẹ, nitorinaa tabili gba awọn igbasilẹ ẹda-iwe lọpọlọpọ.

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

Ti o ba fẹ ṣeto awọn aaye first_name ati last_name ninu tabili, data naa ko le tun ṣe, o le ṣeto ipo bọtini akọkọ ilọpo meji lati ṣeto iyasọtọ ti data naa Ti o ba ṣeto bọtini akọkọ ilọpo meji, iye aiyipada ti bọtini yẹn ko le jẹ NULL, ṣugbọn o le ṣeto si NOT NULL.Ni atẹle:

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)
);

Ti a ba ṣeto atọka alailẹgbẹ, lẹhinna nigba fifi data ẹda-iwe sii, alaye SQL yoo kuna lati ṣiṣẹ ni aṣeyọri ati jabọ aṣiṣe kan.

Iyato laarin INSERT IGNORE INTO ati INSERT INTO ni wipe INSERT IGNORE foju pata data to wa ninu database, ti ko ba si data ninu database, yoo fi data titun sii, ti data ba wa, yoo fo data yii.Ni ọna yii, data ti o wa ninu ibi ipamọ data le wa ni ipamọ, ati pe idi ti fifi data sii ni aafo le ṣee ṣe.

Apẹẹrẹ atẹle naa nlo INSERT IGNORE INTO, eyiti o ṣiṣẹ laisi aṣiṣe ati pe ko fi data ẹda-iwe sii sinu tabili 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)

FI AFOJUDI SINU Nigbati o ba nfi data sii, lẹhin ti o ti ṣeto iyasọtọ ti igbasilẹ, ti o ba ti fi data ẹda-iwe sii, ko si aṣiṣe ti yoo da pada, ṣugbọn ikilọ nikan ni yoo pada.Ati Rọpo sinu ti o ba jẹ igbasilẹ akọkọ tabi alailẹgbẹ, paarẹ ni akọkọ.Fi igbasilẹ tuntun sii.

Ọna miiran lati ṣeto iyasọtọ ti data rẹ ni lati ṣafikun atọka UNIQUE bii eyi:

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

Statistics pidánpidán data

Ni isalẹ a yoo ka nọmba awọn igbasilẹ ẹda-akọkọ ti orukọ_akọkọ ati orukọ idile ninu tabili:

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

Alaye ibeere ti o wa loke yoo da nọmba awọn igbasilẹ ẹda-iwe pada ninu tabili person_tbl.Ni gbogbogbo, lati beere fun awọn iye ẹda-ẹda, ṣe atẹle:

  • Pinnu iwe ti o ni awọn iye ẹda-ẹda ti o ṣeeṣe.
  • Lo COUNT(*) ninu iwe yan akojọ lati ṣe atokọ awọn ọwọn yẹn.
  • Awọn ọwọn ti a ṣe akojọ si ni GROUP BY gbolohun ọrọ.
  • Abala HAVING ṣeto nọmba awọn atunwi ti o tobi ju 1 lọ.

àlẹmọ àdáwòkọ data

Ti o ba nilo lati ka data alailẹgbẹ, o le lo koko-ọrọ DISTINCT ninu alaye YAN lati ṣe àlẹmọ data ẹda-iwe.

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

O tun le lo GROUP BY lati ka data alailẹgbẹ lati tabili kan:

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

deduplicate data

Ti o ba fẹ paarẹ data ẹda-iwe rẹ ninu tabili data, o le lo alaye SQL atẹle yii:

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;

Nitoribẹẹ, o tun le ṣafikun INDEX ( atọka) ati PRIMAY KEY (bọtini akọkọ) ninu tabili data lati pa awọn igbasilẹ ẹda-iwe rẹ kuro ninu tabili.Awọn ọna bi isalẹ:

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

Ireti Chen Weiliang Blog ( https://www.chenweiliang.com/ ) pín "Bawo ni MySQL ṣe n ṣe ibeere ati mu data ẹda-ẹda?Sisẹ ati Awọn Gbólóhùn Iyọkuro" yoo ran ọ lọwọ.

Kaabo lati pin ọna asopọ ti nkan yii:https://www.chenweiliang.com/cwl-499.html

Kaabọ si ikanni Telegram ti bulọọgi Chen Weiliang lati gba awọn imudojuiwọn tuntun!

🔔 Jẹ ẹni akọkọ lati gba “ChatGPT Akoonu Titaja AI Itọsọna Lilo Ọpa” ti o niyelori ni itọsọna oke ikanni! 🌟
📚 Itọsọna yii ni iye nla, 🌟Eyi jẹ aye to ṣọwọn, maṣe padanu rẹ! ⏰⌛💨
Pin ati fẹran ti o ba fẹ!
Pinpin rẹ ati awọn ayanfẹ jẹ iwuri wa lemọlemọfún!

 

发表 评论

Adirẹsi imeeli rẹ kii yoo ṣe atẹjade. Awọn aaye ti o nilo ni a lo * 标注

yi lọ si oke