បញ្ជីអត្ថបទ
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 ដើម្បីទទួលបានព័ត៌មានថ្មីៗចុងក្រោយបង្អស់!
📚 មគ្គុទ្ទេសក៍នេះមានតម្លៃមហាសាល 🌟នេះជាឱកាសដ៏កម្រ សូមកុំអូសរំលង! ⏰⌛💨
Share និង Like ប្រសិនបើអ្នកចូលចិត្ត!
ការចែករំលែក និងការចូលចិត្តរបស់អ្នកគឺជាការលើកទឹកចិត្តបន្តរបស់យើង!