MySQL គឺជាប្រភេទនៃ RDBMS ដែលល្អបំផុតសំរាប់អភិវឌ្ឍន៍គេហទំព័រផ្តោតទៅលើ Software Development ។ ពាក្យពេញនៃ RDBMS គឺ Relational DataBase Management System ដែលជា Software មួយដែលអាចបង្កើតនូវ Database, table, និង indexes ។ យ៉ាងណាមិញ ក្នុងអត្ថបទនេះ នឹងបង្ហាញពីប្រភេទនៃទិន្នន័យដែលរក្សាទុកក្នុង MySQL ក្នុងនោះ ចែកជា ៣ ប្រភេទ គឺ numeric, date & time និង string ។
ស្វែងយល់ពីប្រភេទទិន្នន័យជា String ក្នុង MySQL
ប្រភេទ ទិន្នន័យជា STRING មកបង្ហាញ។ នៅក្នុងទិន្នន័យ ភាគច្រើនទិន្នន័យជាប្រភេទទិន្នន័យ string ដែលមាន ដូចជា VAR, VARCHAR, BINARY និង VARBINARY, BLOB ឬ TEXT, TINYBLOB ឬ TINYTEXT, MEDIUMBLOB ឬ MEDIUMTEXT, LONGBLOB ឬ LONGTEXT, SET និង ENUM ជាដើម។
ប្រភេទទិន្នន័យជា String រួមមាន៖
- VAR(M) : ជាប្រភេទទិន្នន័យដែលទំហំ STRING ដែលកំណត់តួអក្សរចន្លោះ ០ ទៅ ២៥៥ តួអក្សរ ដែល M ជាចំនួនតួអក្សរ ។ ជាឧទាហរណ៍ CHAR (៥) មានន័យថា ៥ តួអក្សរ នឹងរក្សាទុក ។ បើមិនផ្តល់តំលៃ M ទេ ជា Default គឺ ១តួអក្សរ ។
- VARCHAR(M) : ជាប្រភេទទិន្នន័យដែលទំហំ String ដែលកំណត់ជាអញ្ញត្តិ(Variable) ចន្លោះ ០ ទៅ ៦៥៥៣៥ តួអក្សរ ដែល M ជាចំនួនតួអក្សរ ។
- BINARY : រក្សាទុកនូវ Binary String ដែលមានទំហំកំណត់មួយ ។ តំលៃរបស់វា កំណត់ជា ០x០០
- VARBINARY : រក្សាទុកនូវតំលៃជា Binary String ដែលមានទំហំកំណត់ជា Variable ។
- BLOB or TEXT : BLOB ជាប្រភេទទិន្នន័យ binary string ដែលមានទំហំធំ ដូចជា រូបភាព(Images) ឬឯកសារ (Document)។ BLOB ចែកជា ៤ គឺ TINYBLOB, BLOB, MEDIUMBLOB និង LONGBLOB ។ TEXT ជាប្រភេទទិន្នន័យ ប្រើសំរាប់រក្សាទុក Text ដែលមានទំហំធំ ដូចជា អត្ថបទ Blog, Comment ជាដើម ។ ចំពោះ TEXT ចែកជា ៤ ដែរ គឺ TINYTEXT, TEXT, MEDIUMTEXT និង LONGTEXT ។
- TINYBLOB or TINYTEXT : ទំហំអប្បរមា ២៥៥ តួអក្សរ ។16777215
- MEDIUMBLOG or MEDIUMTEXT : ទំហំអប្បរមា ១៦៧៧៧២១៥ តួអក្សរ ។
- LONGBLOB or LONGTEXT : ទំហំអប្បរមា ៤២៩៤៩៦៧២៩៥ តួអក្សរ ។
- ENUM : ជាប្រភេទទិន្នន័យរក្សាទុកនូវ string object ដែលបានកំណត់តំលៃក្នង បញ្ជី(List) មួយ។ យើងអាចបញ្ចូលតំលៃឲ្យបាន។ ឧទាហរណ៍ mysql> CREATE TABLE SizeTable(Size ENUM(‘S’, ‘M’, ‘L’, ‘XL’, ‘XXL’));
- SET : ជាប្រភេទទិន្នន័យរក្សាទុកនូវ string object ដែលបានកំណត់តំលៃក្នង បញ្ជី(List) មួយ ដែលតំលៃរបស់វា អាចមានតំលៃ សូន្យ ឬ ច្រើន។ វាដូចទៅនឹង ENUM ដែរ ខុសគ្នាត្រង់ រក្សាតំលៃសូន្យ ឬច្រើន ក្នុងបញ្ជី(List) ដែលបានកំណត់ ។
ស្វែងយល់ពីប្រភេទទិន្នន័យជា Numeric ក្នុង MySQL
ប្រភេទទិន្នន័យ Numeric ចែកជា ២ផ្នែក គឺ ប្រភេទទិន្នន័យមានតំលៃជាក់ជាក់ (exact numeric data) និងប្រភេទទិន្នន័យ មានតំលៃប្រហាក់ប្រហែល (approximate numeric data) ។
ប្រភេទទិន្នន័យមានតំលៃជាក់ជាក់ (exact numeric data) រួមមាន៖
- TINYINT : ជាប្រភេទនៃ Integer (ចំនួនគត់) មានចំនួនតិចជាងគេបំផុត ដែលទំហំផ្ទុកតែ ១ Byte ប៉ុណ្ណោះ និង មានតំលៃ ចន្លោះ –១២៨ ទៅ ១២៧ ។ បើកំណត់ជា Unsigned គឺមានតំលៃចន្លោះពី ០ ទៅ ២៥៥ ។
- SMALLINT : ជាប្រភេទនៃ Integer (ចំនួនគត់) ដែលផ្ទុក ២ Byte ដែលមានតំលៃចន្លោះ -៣២៧៦៨ ទៅ ៣២៧៦៧ ។ បើជា Unsigned គឺមានតំលៃចន្លោះពី ០ ទៅ ៦៥៥៣៥ ។
- MEDIUMINT : ជាប្រភេទនៃ Integer (ចំនួនគត់) ដែលផ្ទុក ៣ Byte ដែលមានតំលៃចន្លោះ -៨៣៨៨៦០៨ ទៅ ៨៣៨៨៦០៧ ។ បើជា Unsigned គឺមានតំលៃចន្លោះពី ០ ទៅ ១៦៧៧៧២១៥ ។
- INT : ជាប្រភេទនៃ Integer (ចំនួនគត់) ដែលផ្ទុក ៤ Byte ដែលមានតំលៃចន្លោះ -២១៤៧៤៨៣៦៤៨ ទៅ ២១៤៧៤៨៣៦៤៧ ។ បើកំណត់ជា Unsigned គឺមានតំលៃចន្លោះពី ០ ទៅ ៤២៩៤៩៦៧២៩៥។
- BIGINT : ជាប្រភេទនៃ Integer (ចំនួនគត់) មានចំនួនច្រើនជាងគេបំផុត ដែលផ្ទុក ៨ Byte ដែលមានតំលៃចន្លោះ -៩២២៣៣៧២០៣៦៨៥៤៧៧៥៨០៨ ទៅ ៩២២៣៣៧២០៣៦៨៥៤៧៧៥៨០៧ ។ បើកំណត់ជា Unsigned គឺមានតំលៃចន្លោះពី ០ ទៅ ១៨៤៤៦៧៤៤០៧៣៧០៩៥៥១៦១៥។
បន្ថែមលើសពីនេះ ក៏មានប្រភេទទិន្នន័យមានតំលៃជាក់លាក់ ផ្សេងទៀតដែរ គឺ Decimal និង Numeric ។
- DECIMAL(M, D) : ជាប្រភេទទិន្នន័យចំនួនទសភាគ គោល ១០ ដែលមានក្បៀសពីក្រោយ ។ តំលៃ របស់ Decimal មិនត្រូវបាន Unsigned ឡើយ ពោលគឺ ចំនួនទសភាគវិជ្ជមាន ។ M ជាចំនួនទំហំ digit និង D ជាចំនួន digit ក្រោយក្បៀស ។
- Numeric ជាសទិសន័យ របស់ DECIMAL មានន័យថា ដូចគ្នានឹង DECIMAL ដែរ។
ប្រភេទទិន្នន័យ មានតំលៃប្រហាក់ប្រហែល (approximate numeric data) រួមមាន៖
- FLOAT(M, D) : ប្រភេទទិន្នន័យ ចំនួនទសភាគ ដែលមិនអាច Unsigned បាន មានន៏យថា ជាចំនួនទសភាគវិជ្ជមាន ។ M ជាចំនួនទំហំ digit និង D ជាចំនួន digit ក្រោយក្បៀស ។ បើមិនកំណត់ឲ្យទេ វាយក Default គឺ Float(១០,២) ។
- DOUBLE(M, D) : ប្រភេទទិន្នន័យ ចំនួនទសភាគ ធំទ្វេដង ដែលមិនអាច Unsigned បាន មានន៏យថា ជាចំនួនទសភាគវិជ្ជមាន ។ M ជាចំនួនទំហំ digit និង D ជាចំនួន digit ក្រោយក្បៀស ។ បើមិនកំណត់ឲ្យទេ វាយក Default គឺ Double(១៦,៤) ។
- REAL(m,d) ជាសទិសន័យ របស់ DOUBLE មានន័យថា ដូចគ្នានឹង DOUBLE ដែរ ។
ស្វែងយល់ពីប្រភេទទិន្នន័យជា Date/Time ក្នុង MySQL
ប្រភេទទិន្នន័យ Date/Time តំណាងឲ្យតំលៃបណ្តោះអាសន្ននៃ DATE, TIME, DATETIME, TIMESTAMP និង YEAR ដែលតំលៃទាំងនោះ ត្រូវតែស្ថិតនៅចន្លោះនៃតំលៃមានសុពលភាព ។ តំលៃសូន្យ (០) ត្រូវបានតំណាងឲ្យតំលៃមិនមានសុពលភាព (Invalid Value) នៅក្នុង MySQL ។
នៅក្នុង MySQL ប្រភេទទិន្នន័យជា Date/Time ទទួលយកទំរង់ Format ជាស្តង់ដានៃការបង្ហាញចេញមកក្រៅ ដោយផ្តោត ទៅលើការបញ្ចូលតំលៃ ។ យ៉ាងណាមិញ តំលៃ Date/Time នឹងត្រូវបានគេបកប្រែជា តំលៃមួយសមស្របតាមការកំណត់ (Format) ក្នុង MySQL ។
MySQL បានកំណត់ ២ digits នៃតំលៃរបស់ឆ្នាំ (year) ស្របទៅតាមការកំណត់ដូចខាងក្រោម៖
- នៅចន្លោះ ៧០ ទៅ ៩៩ នឹងត្រូវកំណត់ជាឆ្នាំ ក្នុងចន្លោះ ១៩៧០ ដល់ ១៩៩៩
- នៅចន្លោះ ០០ ទៅ ៦៩ នឹងត្រូវកំណត់ជាឆ្នាំ ក្នុងចន្លោះ ២០០០ ដល់ ២០៦៩
ប្រភេទទិន្នន័យ Date/Time មានដូចខាងក្រោម៖
- DATE : ទំរង់ Format ជា YYYY-MM-DD ស្ថិតនៅចន្លោះ ១០០០-០១-០១ ទៅ ៩៩៩៩-១២-៣១ ។ ជាឧទាហរណ៍ ថ្ងៃទី ០១ ខែមេសា ឆ្នាំ ១៩៨៩ នឹងត្រូវបំលែងទៅជា ១៩៨៩-០៤-០១ ។ តំលៃសូន្យ (០) ត្រូវបានកំណត់ជា ‘០០០០-០០-០០‘ ។
- TIME : ទំរង់ Format ជា HH:MM:SS ។ ជាឧទាហរណ៍ ម៉ោង ៦ និង ៥០នាទី ត្រូវកំណត់ជា ០៦:៥០:០០ ។ តំលៃសូន្យ (០) ត្រូវបានកំណត់ជា ‘០០:០០:០០‘ ។
- DATETIME : ទំរង់ Format ជា YYYY-MM-DD HH:SS:MM ស្ថិតនៅចន្លោះ ១០០០-០១-០១ ០០:០០:០០ ទៅ ៩៩៩៩-១២-៣១ ២៣:៥៩:៥៩ ។ ជាឧទាហរណ៍ ថ្ងៃទី ០១ ខែមេសា ឆ្នាំ ១៩៨៩ ម៉ោង ៦ និង ៥០នាទី ត្រូវកំណត់ជា ១៩៨៩-០៤-០១ ០៦:៥០:០០ ។ តំលៃសូន្យ (០) ត្រូវកំណត់ជា ‘០០០០-០០-០០ ០០:០០:០០’ ។
- TIMESTAMP : ទំរង់ Format ដូចទៅនឹង DATETIME ដែរ គ្រាន់តែវាស្ថិតនៅចន្លោះ ១៩៧០-០១-០១ ០០:០០:០១ UTC ទៅ ២០៣៨-០១-១៩ ០៣:១៤:០៧ UTC មានន័យថា MySQL នឹងបំលែងតំលៃ TIMESTAMP ពី Time Zone ទៅ UTC និងពី UTC មក Time Zone វិញ ។
- YEAR (M): កំណត់យក ២ ឬ ៤ digits នៃឆ្នាំ ។ បើ ២ digits ឆ្នាំអាចស្ថិតនៅចន្លោះ ១៩៧០ ដល់ ២០៦៩ ហើយបើ ៤ digits ឆ្នាំអាចស្ថិតនៅចន្លោះ ១៩០១ ដល់ ២១៥៥ ។
ស្វែងយល់ពីប្រភេទទិន្នន័យជា Spatial ក្នុង MySQL
នៅមានប្រភេទទិន្នន័យពិសេសមួយទៀត ក្នុង MySQL គឺ SPATIAL DATA TYPE ។ ប្រភេទទិន្នន័យនេះ ទាក់ទងទៅនឹង OpenGIS ដែលជាប្រភេទមានតំលៃជាធរណីមាត្រ ដូចជា GEOMETRY, POINT, LINESTRING, និង POLYGON ។
GEOMETRY អាចរក្សាទុកនូវប្រភេទជាច្រើននៃតំលៃជាធរណីមាត្រ ដែលប្រើក្នុងផែនទី ក្នុងពិភពលោក ៕ ចំណែកក្នុង MySQL គេអាចបង្កើត តារាង (table) ដែលរក្សាទុកទិន្នន័យជាប្រភេទ GEOMETRY បាន ។
ជាឧទាហរណ៍៖ CREATE TABLE tbl_geometry (code (5), description varchar(255), geomtry GEOMETRY)
POINT ជាប្រភេទទិន្នន័យកំណត់នូវភូមិសាស្ត្រ ដែលតំណាងឲ្យទីតាំងតែមួយគត់ នៅក្នុងលំហ ។ ភាគច្រើន គេប្រើ POINT ដើម្បីកំណត់ទីតាំង នៅក្នុងផែនទីទីក្រុងមួយ ឬតំបន់មួយ ឬទីកន្លែងមួយដូចជា ស្ថានីយ៍រថភ្លើង ឬអាកាសយានដ្ឋាន ជាដើម ។
ជាឧទាហរណ៍ក្នុង MySQL : SELECT Y(POINT(25, 56));
LINESTRING ជាប្រភេទទិន្នន័យមួយដែលកើតចេញពីចំនុចតូច (POINT) បង្កើតជាខ្សែកោងមួយ។ គេប្រើប្រាស់ LINESTRING Object ធ្វើជាខ្សែបន្ទាត់ នៅក្នុងផែនទីពិភពលោក តំណាងឲ្យទន្លេ នៅក្នុងផែនទីទីក្រុង តំណាងឲ្យ ផ្លូវ ។
POLYGON ជាផ្ទៃប្លង់ តំណាងឲ្យទីតាំងភូមិសាស្ត្ររួម ដែលកំណត់ដោយព្រំដែនផ្នែកខាងក្រៅតែមួយ ឬច្រើន ដែលគ្រប់ផ្នែកខាងក្រៅនិមួយៗ ភ្ជាប់គ្នាដោយប្រហោងមួយនៅក្នុង POLYGON ។ គេប្រើប្រាស់ POLYGON តំណាងឲ្យទន្លេមួួយ ក្នុងផែនទីប្រទេស ។
MULTIPOINT ជាបណ្តុំនៃ Geometry បង្កើតដោយចំនុចជាច្រើន ដែលមិនត្រូវបានភ្ជាប់គ្នា ។ គេប្រើប្រាស់វា តំណាងឲ្យខ្សែចង្វាក់នៃកោះតូចៗ នៅក្នុងផែនទីពិភពលោក ។
MULTILINESTRING ជាបណ្តុំនៃ ខ្សែកោង ភូមិសាស្ត្រ ដែលបង្កើតដោយ LINESTRING ជាច្រើន ។ គេប្រើប្រាស់វា តំណាងឲ្យ ប្រព័ន្ធនៃទន្លេ នៅក្នុងផែនទីតំបន់មួយ ។
MULTIPOLYGON ជាបណ្តុំនៃផ្ទៃប្លង់ ដែលបង្កើតដោយ POLYGON ។ គេប្រើប្រាស់វា តំណាងឲ្យប្រព័ន្ធនៃបឹងបួរ នៅក្នុងផែនទីតំបន់មួយ ។