የ MySQL ጥያቄ የተባዛ ውሂብን እንዴት ይቆጣጠራል?የተባዛ የውሂብ መግለጫን ለማስወገድ አጣራ

MySQLመጠይቆች የተባዛ ውሂብን እንዴት ይይዛሉ?የተባዛ የውሂብ መግለጫን ለማስወገድ አጣራ

MySQL የተባዛ ውሂብ አያያዝ

በአንዳንድ MySQL ዳታ ሰንጠረዦች ውስጥ የተባዙ መዝገቦች ሊኖሩ ይችላሉ።በአንዳንድ አጋጣሚዎች የተባዛ ውሂብ እንዲኖር እንፈቅዳለን፣ነገር ግን አንዳንድ ጊዜ እነዚህን የተባዙ መረጃዎች መሰረዝ አለብን።

በዚህ ምእራፍ ውስጥ በመረጃ ሠንጠረዥ ውስጥ የተባዙ መረጃዎችን እንዴት መከላከል እንደሚቻል እና በመረጃ ሠንጠረዥ ውስጥ የተባዙ መረጃዎችን እንዴት መሰረዝ እንደሚችሉ እናስተዋውቃለን።


በሰንጠረዦች ውስጥ የተባዛ ውሂብን ይከላከሉ

የተገለጸውን መስክ በ MySQL ውሂብ ሰንጠረዥ ውስጥ እንደ ማቀናበር ይችላሉ ዋና ቁልፍ ወይም ልዩ (ልዩ) የመረጃውን ልዩነት ለማረጋገጥ ጠቋሚ።

አንድ ምሳሌ እንሞክር፡ ከታች ባለው ሠንጠረዥ ውስጥ ምንም ኢንዴክሶች እና ዋና ቁልፎች የሉም፣ ስለዚህ ሠንጠረዡ ብዙ የተባዙ መዝገቦችን ይፈቅዳል።

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

መስኮቹን በሰንጠረዡ ውስጥ የመጀመሪያ ስም እና የአያት ስም ማዘጋጀት ከፈለጉ ውሂቡ ሊደገም አይችልም፣የመረጃውን ልዩነት ለማዘጋጀት ድርብ ዋና ቁልፍ ሁነታን ማቀናበር ይችላሉ። ባዶ ሊሆን አይችልም፣ ነገር ግን ወደ NOT ሊዋቀር ይችላል።እንደሚከተለው:

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)

ችላ በል ወደ ውስጥ አስገባ መረጃን በሚያስገቡበት ጊዜ የመዝገቡ ልዩነት ከተዘጋጀ በኋላ የተባዛ ውሂብ ከገባ ምንም ስህተት አይመለስም ነገር ግን ማስጠንቀቂያ ብቻ ይመለሳል።እና ዋና ወይም ልዩ መዝገብ ካለ ወደ ውስጥ ይተኩ፣ መጀመሪያ ይሰርዙት።አዲስ መዝገብ አስገባ።

የውሂብዎን ልዩነት የሚያቀናብሩበት ሌላው መንገድ እንደዚህ ያለ ልዩ መረጃ ጠቋሚ ማከል ነው።

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 BY አንቀጽ ውስጥ የተዘረዘሩ አምዶች።
  • የ 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 (index) እና PRIMAY KEY (ዋና ቁልፍ) ማከል ይችላሉ።እንደሚከተለው ዘዴዎች:

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

ተስፋ Chen Weiliang ብሎግ ( https://www.chenweiliang.com/ ) የተጋራ "የ MySQL ጥያቄ እንዴት ነው የተባዛ ውሂብን የሚይዘው?የማጣራት እና የማባዛት መግለጫዎች" ይረዱዎታል።

እንኳን በደህና መጡ የዚህን ጽሁፍ ማገናኛ ለማጋራት፡-https://www.chenweiliang.com/cwl-499.html

አዳዲስ መረጃዎችን ለማግኘት ወደ የቼን ዌይሊያንግ ብሎግ የቴሌግራም ቻናል እንኳን በደህና መጡ።

🔔 ጠቃሚ የሆነውን "ChatGPT Content Marketing AI Tool Usage Guide" በቻናል ከፍተኛ ማውጫ ውስጥ ለማግኘት የመጀመሪያው ይሁኑ! 🌟
📚 ይህ መመሪያ ትልቅ ዋጋ አለው፣ 🌟ይህ ያልተለመደ እድል ነው፣ እንዳያመልጥዎ! ⏰⌛💨
ከወደዳችሁት ሼር እና ላይክ አድርጉ!
የእርስዎ ማጋራት እና መውደዶች ቀጣይ ማበረታቻዎቻችን ናቸው!

 

评论ሺ评论评论评论 ፡፡

የኢሜል አድራሻዎ አይታተምም ፡፡ 项 已 用 ፡፡ * 标注

ወደ ላይ ይሸብልሉ