MySQL විමසුම අනුපිටපත් දත්ත හසුරුවන්නේ කෙසේද?අනුපිටපත් දත්ත ප්‍රකාශය ඉවත් කිරීමට පෙරහන් කරන්න

MySQLවිමසුම් අනුපිටපත් දත්ත හසුරුවන්නේ කෙසේද?අනුපිටපත් දත්ත ප්‍රකාශය ඉවත් කිරීමට පෙරහන් කරන්න

MySQL අනුපිටපත් දත්ත හැසිරවීම

සමහර MySQL දත්ත වගු වල අනුපිටපත් වාර්තා තිබිය හැක.සමහර අවස්ථාවලදී, අපි අනුපිටපත් දත්ත පැවතීමට ඉඩ සලසයි, නමුත් සමහර විට අපට මෙම අනුපිටපත් දත්ත මකා දැමීමටද අවශ්‍ය වේ.

මෙම පරිච්ඡේදයේදී, දත්ත වගුවේ අනුපිටපත් දත්ත වළක්වා ගන්නේ කෙසේද සහ දත්ත වගුවේ අනුපිටපත් දත්ත මකා දැමිය යුතු ආකාරය අපි හඳුන්වා දෙන්නෙමු.


වගු වල අනුපිටපත් දත්ත වලක්වන්න

ඔබට MySQL දත්ත වගුවේ සඳහන් ක්ෂේත්‍රය මෙසේ සැකසිය හැක ප්රාථමික යතුර හෝ UNIQUE (අද්විතීය) දත්තවල සුවිශේෂත්වය සහතික කිරීම සඳහා දර්ශකය.

අපි උදාහරණයක් උත්සාහ කරමු: පහත වගුවේ දර්ශක සහ ප්‍රාථමික යතුරු නොමැත, එබැවින් වගුව බහු අනුපිටපත් වාර්තා වලට ඉඩ දෙයි.

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

ඔබට වගුවේ ඇති ක්ෂේත්‍ර මුල්_නම සහ අවසාන_නම සැකසීමට අවශ්‍ය නම්, දත්ත නැවත නැවත සිදු කළ නොහැක, ඔබට දත්තවල සුවිශේෂත්වය සැකසීමට ද්විත්ව ප්‍රාථමික යතුරු මාදිලිය සැකසිය හැක. ඔබ ද්විත්ව ප්‍රාථමික යතුර සකසන්නේ නම්, එම යතුරේ පෙරනිමි අගය NULL විය නොහැක, නමුත් NOT NULL ලෙස සැකසිය හැක.පහත පරිදි:

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

අපි අනන්‍ය දර්ශකයක් සකසන්නේ නම්, අනුපිටපත් දත්ත ඇතුළත් කිරීමේදී, SQL ප්‍රකාශය සාර්ථකව ක්‍රියාත්මක කිරීමට අසමත් වන අතර දෝෂයක් ඇති කරයි.

INSERT IGNORE INTO සහ INSERT INTO අතර වෙනස නම්, INSERT IGNORE මඟින් දැනටමත් දත්ත ගබඩාවේ පවතින දත්ත නොසලකා හැරීමයි. දත්ත ගබඩාවේ දත්ත නොමැති නම්, එය නව දත්ත ඇතුළත් කරයි, දත්ත තිබේ නම්, එය මෙම දත්ත මඟ හරිනු ඇත.මේ ආකාරයෙන්, දත්ත සමුදායේ පවතින දත්ත සංරක්ෂණය කළ හැකි අතර, පරතරය තුළ දත්ත ඇතුළත් කිරීමේ අරමුණ සාක්ෂාත් කර ගත හැකිය.

පහත උදාහරණය INSERT IGNORE INTO භාවිතා කරයි, එය දෝෂයකින් තොරව සහ දත්ත වගුවට අනුපිටපත් දත්ත ඇතුලත් නොකර ක්‍රියාත්මක කරයි:

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 දත්ත ඇතුළත් කිරීමේදී, වාර්තාවේ සුවිශේෂත්වය සැකසූ පසු, අනුපිටපත් දත්ත ඇතුළත් කළහොත්, කිසිදු දෝෂයක් ලබා නොදෙනු ඇත, නමුත් අනතුරු ඇඟවීමක් පමණක් ලබා දෙනු ඇත.ප්‍රාථමික හෝ අද්විතීය වාර්තාවක් තිබේ නම්, එය ප්‍රථමයෙන් මකනු ලැබේ.නව වාර්තාවක් ඇතුළත් කරන්න.

ඔබගේ දත්තවල සුවිශේෂත්වය සැකසීමට තවත් ක්‍රමයක් නම් මෙවැනි UNIQUE දර්ශකයක් එක් කිරීමයි:

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

සංඛ්යාලේඛන අනුපිටපත් දත්ත

පහතින් අපි වගුවේ ඇති පළමු_නම සහ අවසාන_නම අනුපිටපත් වාර්තා ගණන ගණන් කරන්නෙමු:

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

ඉහත විමසුම් ප්‍රකාශය පුද්ගලයා_tbl වගුවේ ඇති අනුපිටපත් වාර්තා ගණන ආපසු ලබා දෙනු ඇත.සාමාන්‍යයෙන්, අනුපිටපත් අගයන් විමසීමට, පහත දේ කරන්න:

  • විය හැකි අනුපිටපත් අගයන් අඩංගු තීරුව තීරණය කරන්න.
  • එම තීරු ලැයිස්තුගත කිරීමට තීරු තේරීම් ලැයිස්තුවේ COUNT(*) භාවිතා කරන්න.
  • GROUP හි වගන්තියෙන් ලැයිස්තුගත කර ඇති තීරු.
  • HAVING වගන්තිය 1 ට වඩා වැඩි පුනරාවර්තන ගණන සකසයි.

අනුපිටපත් දත්ත පෙරහන් කරන්න

ඔබට අනන්‍ය දත්ත කියවීමට අවශ්‍ය නම්, ඔබට SELECT ප්‍රකාශයේ ඇති DISTINCT මූල පදය අනුපිටපත් දත්ත පෙරීමට භාවිතා කළ හැක.

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

ඔබට වගුවකින් අද්විතීය දත්ත කියවීමට GROUP BY භාවිතා කළ හැක:

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

අනුපිටපත් දත්ත

ඔබට දත්ත වගුවේ ඇති අනුපිටපත් දත්ත මකා දැමීමට අවශ්‍ය නම්, ඔබට පහත 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;

ඇත්ත වශයෙන්ම, ඔබට වගුවේ ඇති අනුපිටපත් වාර්තා මකා දැමීමට දත්ත වගුවේ INDEX (දර්ශකය) සහ PRIMAY KEY (ප්‍රාථමික යතුර) එකතු කළ හැකිය.පහත දැක්වෙන ක්රම:

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

Hope Chen Weiliang බ්ලොග් ( https://www.chenweiliang.com/ ) බෙදාගත් "MySQL අනුපිටපත් දත්ත විමසා හසුරුවන්නේ කෙසේද?ප්‍රකාශන පෙරීම සහ අනුපිටපත් කිරීම" ඔබට උපකාර වනු ඇත.

මෙම ලිපියේ සබැඳිය බෙදා ගැනීමට සාදරයෙන් පිළිගනිමු:https://www.chenweiliang.com/cwl-499.html

නවතම යාවත්කාලීන ලබා ගැනීමට Chen Weiliang ගේ බ්ලොගයේ Telegram නාලිකාව වෙත සාදරයෙන් පිළිගනිමු!

🔔 නාලිකා ඉහළ නාමාවලියෙහි වටිනා "ChatGPT අන්තර්ගත අලෙවිකරණ AI මෙවලම් භාවිත මාර්ගෝපදේශය" ලබා ගත් පළමු පුද්ගලයා වන්න! 🌟
📚 මෙම මාර්ගෝපදේශයෙහි විශාල වටිනාකමක් ඇත, 🌟මෙය දුර්ලභ අවස්ථාවක්, එය අතපසු නොකරන්න! ⏰⌛💨
ඔබ කැමති නම් Share කර Like කරන්න!
ඔබගේ බෙදාගැනීම් සහ කැමැත්ත අපගේ අඛණ්ඩ අභිප්‍රේරණයයි!

 

发表

ඔබගේ විද්‍යුත් තැපැල් ලිපිනය ප්‍රකාශයට පත් නොකෙරේ. අවශ්‍ය ක්ෂේත්‍ර භාවිතා වේ * ලේබලය

ඉහළට අනුචලනය කරන්න