ស្វែងយល់ពីប្រភេទទិន្នន័យជា String, Numeric និង Data/Time ក្នុង MySQL
22 March 2019

ស្វែងយល់ពីប្រភេទទិន្នន័យជា String, Numeric និង Data/Time ក្នុង MySQL

By

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 និង LONGBLOBTEXT ជាប្រភេទទិន្នន័យ ប្រើសំរាប់រក្សាទុក 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 ។ គេប្រើប្រាស់វា តំណាងឲ្យប្រព័ន្ធនៃបឹងបួរ នៅក្នុងផែនទីតំបន់មួយ ។

Prev Post

វិធីងាយៗ Easily កម្មវិធីបំលែង ប្រភេទ file…

Next Post

របៀបភ្ជាប់ទៅកាន់ Database តាមរយៈ PDO ជាមួយនឹង…

post-bars