តើសំណួរ MySQL ដោះស្រាយទិន្នន័យស្ទួនដោយរបៀបណា?តម្រងដើម្បីលុបសេចក្តីថ្លែងការណ៍ទិន្នន័យស្ទួន

MySQLតើសំណួរដោះស្រាយទិន្នន័យស្ទួនដោយរបៀបណា?តម្រងដើម្បីលុបសេចក្តីថ្លែងការណ៍ទិន្នន័យស្ទួន

MySQL គ្រប់គ្រងទិន្នន័យស្ទួន

ប្រហែលជាមានកំណត់ត្រាស្ទួននៅក្នុងតារាងទិន្នន័យ MySQL មួយចំនួន។ ក្នុងករណីខ្លះ យើងអនុញ្ញាតឱ្យមានទិន្នន័យស្ទួន ប៉ុន្តែពេលខ្លះយើងក៏ត្រូវលុបទិន្នន័យស្ទួនទាំងនេះផងដែរ។

នៅក្នុងជំពូកនេះ យើងនឹងណែនាំពីរបៀបការពារទិន្នន័យស្ទួនក្នុងតារាងទិន្នន័យ និងរបៀបលុបទិន្នន័យស្ទួនក្នុងតារាងទិន្នន័យ។


ទប់ស្កាត់ទិន្នន័យស្ទួនក្នុងតារាង

អ្នកអាចកំណត់វាលដែលបានបញ្ជាក់នៅក្នុងតារាងទិន្នន័យ MySQL ជា គន្លឹះសំខាន់  UNIQUE (ប្លែក) លិបិក្រមដើម្បីធានានូវភាពប្លែកនៃទិន្នន័យ។

តោះសាកល្បងឧទាហរណ៍៖ មិនមានលិបិក្រម និងកូនសោចម្បងនៅក្នុងតារាងខាងក្រោមទេ ដូច្នេះតារាងអនុញ្ញាតឱ្យមានកំណត់ត្រាស្ទួនច្រើន។

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

ប្រសិនបើ​អ្នក​ចង់​កំណត់​វាល first_name និង last_name ក្នុង​តារាង ទិន្នន័យ​មិន​អាច​ធ្វើ​ឡើង​វិញ​បាន​ទេ អ្នក​អាច​កំណត់​ទម្រង់​គន្លឹះ​សំខាន់​ទ្វេ​ដើម្បី​កំណត់​ភាព​ប្លែក​គ្នា​នៃ​ទិន្នន័យ។ ប្រសិនបើអ្នក​កំណត់​កូនសោ​សំខាន់​ទ្វេ តម្លៃ​លំនាំដើម​នៃ​សោនោះ។ មិន​អាច​ជា 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 មិនអើពើនឹងទិន្នន័យដែលមានរួចហើយនៅក្នុង database។ ប្រសិនបើមិនមានទិន្នន័យនៅក្នុង database ទេ វានឹងបញ្ចូលទិន្នន័យថ្មី ហើយប្រសិនបើមានទិន្នន័យ វានឹងរំលងទិន្នន័យនេះ។តាមរបៀបនេះ ទិន្នន័យដែលមានស្រាប់នៅក្នុងមូលដ្ឋានទិន្នន័យអាចត្រូវបានរក្សាទុក ហើយគោលបំណងនៃការបញ្ចូលទិន្នន័យក្នុងគម្លាតអាចសម្រេចបាន។

ឧទាហរណ៍ខាងក្រោមប្រើ 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)

បញ្ចូលការមិនអើពើទៅក្នុង ពេលបញ្ចូលទិន្នន័យ បន្ទាប់ពីភាពឯកកោនៃកំណត់ត្រាត្រូវបានកំណត់ ប្រសិនបើទិន្នន័យស្ទួនត្រូវបានបញ្ចូល នោះគ្មានកំហុសណាមួយនឹងត្រលប់មកវិញទេ ប៉ុន្តែមានតែការព្រមានមួយប៉ុណ្ណោះដែលនឹងត្រលប់មកវិញ។ហើយ​បញ្ចូល​ទៅក្នុង​ប្រសិនបើ​មាន​កំណត់ត្រា​ចម្បង ឬ​តែមួយគត់ សូម​លុប​វា​ជាមុន​សិន។បញ្ចូលកំណត់ត្រាថ្មី។

វិធីមួយទៀតដើម្បីកំណត់ភាពប្លែកនៃទិន្នន័យរបស់អ្នកគឺត្រូវបន្ថែមសន្ទស្សន៍ 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)
);

ស្ថិតិស្ទួនទិន្នន័យ

ខាងក្រោមនេះ យើងនឹងរាប់ចំនួនកំណត់ត្រាស្ទួននៃ first_name និង last_name នៅក្នុងតារាង៖

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

សេចក្តីថ្លែងការណ៍សំណួរខាងលើនឹងត្រឡប់ចំនួនកំណត់ត្រាស្ទួននៅក្នុងតារាង person_tbl ។ជាទូទៅ ដើម្បីសាកសួរតម្លៃស្ទួន សូមធ្វើដូចខាងក្រោម៖

  • កំណត់​ជួរ​ឈរ​មួយ​ណា​ដែល​មាន​តម្លៃ​ស្ទួន​ដែល​អាច​ធ្វើ​បាន។
  • ប្រើ COUNT(*) ក្នុងបញ្ជីជ្រើសរើសជួរឈរ ដើម្បីរាយបញ្ជីជួរឈរទាំងនោះ។
  • ជួរឈរដែលបានរាយក្នុងឃ្លា GROUP BY ។
  • ឃ្លា HAVING កំណត់ចំនួនពាក្យដដែលៗធំជាង 1 ។

ត្រងទិន្នន័យស្ទួន

ប្រសិនបើអ្នកត្រូវការអានទិន្នន័យតែមួយគត់ អ្នកអាចប្រើពាក្យគន្លឹះ DISTINCT នៅក្នុងសេចក្តីថ្លែងការណ៍ SELECT ដើម្បីត្រងទិន្នន័យស្ទួន។

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 Blog ( https://www.chenweiliang.com/ ) shared "តើ MySQL សួរ និងដោះស្រាយទិន្នន័យស្ទួនដោយរបៀបណា?ការត្រងនិងសេចក្តីថ្លែងការដកស្ទួន" នឹងជួយអ្នក។

សូមស្វាគមន៍ចំពោះការចែករំលែកតំណភ្ជាប់នៃអត្ថបទនេះ៖https://www.chenweiliang.com/cwl-499.html

សូមស្វាគមន៍មកកាន់ឆានែល Telegram នៃប្លុករបស់ Chen Weiliang ដើម្បីទទួលបានព័ត៌មានថ្មីៗចុងក្រោយបង្អស់!

🔔 ក្លាយជាអ្នកដំបូងដែលទទួលបាន "ការណែនាំអំពីការប្រើប្រាស់ឧបករណ៍ AI ទីផ្សារមាតិកា ChatGPT" ដ៏មានតម្លៃនៅក្នុងបញ្ជីកំពូលរបស់ប៉ុស្តិ៍! 🌟
📚 មគ្គុទ្ទេសក៍នេះមានតម្លៃមហាសាល 🌟នេះជាឱកាសដ៏កម្រ សូមកុំអូសរំលង! ⏰⌛💨
Share និង Like ប្រសិនបើអ្នកចូលចិត្ត!
ការចែករំលែក និងការចូលចិត្តរបស់អ្នកគឺជាការលើកទឹកចិត្តបន្តរបស់យើង!

 

发表评论។

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានផ្សព្វផ្សាយទេ។ 必填项已用។ * 标注។

រំកិលទៅកំពូល