ประเภทข้อมูลใน MySQL

Data Types ใน MySQL คือชนิดของข้อมูลที่ใช้กำหนดให้กับคอลัมน์ในตาราง เพื่อระบุว่าข้อมูลในคอลัมน์นั้นควรเป็นประเภทใด เช่น ตัวเลข ตัวอักษร วันที่ หรือค่าตรรกะ การกำหนดชนิดข้อมูลที่เหมาะสมช่วยให้ฐานข้อมูลมีความแม่นยำ ประหยัดพื้นที่ และเพิ่มประสิทธิภาพในการประมวลผล โดย MySQL แบ่งประเภทข้อมูลหลัก ๆ ออกเป็น 4 กลุ่มใหญ่: Numeric, String (Text), Date and Time, และ Spatial

Numeric Data Types (ข้อมูลตัวเลข)

ใช้เก็บค่าตัวเลข เช่น จำนวน, รหัส, ราคาสินค้า

  • TINYINT – จำนวนเต็มขนาดเล็ก (1 ไบต์) เช่น อายุ (ช่วง -128 ถึง 127 หรือ 0 ถึง 255 แบบ unsigned)
  • SMALLINT – จำนวนเต็มขนาดเล็กกว่าปกติ
  • INT หรือ INTEGER – จำนวนเต็มทั่วไป ใช้บ่อยสุด
  • BIGINT – จำนวนเต็มขนาดใหญ่ เหมาะกับรหัสที่มีตัวเลขยาว ๆ
  • DECIMAL(m, d) – ตัวเลขทศนิยมที่แม่นยำ เช่น ราคาสินค้า (DECIMAL(10,2))
  • FLOAT, DOUBLE – ทศนิยมแบบจุดลอย (เร็ว แต่ไม่แม่นยำเท่า DECIMAL)
  • BIT(n) – เก็บค่าทางตรรกะหรือเลขฐานสอง

String Data Types (ข้อมูลตัวอักษร)

ใช้เก็บข้อความ เช่น ชื่อ, ที่อยู่, เบอร์โทรศัพท์

  • CHAR(n) – ข้อความความยาวคงที่ เช่น รหัสประเทศ (TH, US)
  • VARCHAR(n) – ข้อความความยาวแปรผัน เหมาะกับชื่อ, อีเมล, ชื่อสินค้า ฯลฯ
  • TEXT – เก็บข้อความยาว เช่น บทความ, รายละเอียดสินค้า
  • TINYTEXT, MEDIUMTEXT, LONGTEXT – TEXT ขนาดต่าง ๆ (เล็กถึงใหญ่มาก)
  • ENUM('A','B',...) – ข้อความที่จำกัดเฉพาะกลุ่ม เช่น ENUM('ชาย','หญิง')
  • SET(...) – เก็บค่าหลายค่าจากชุดที่กำหนดไว้ เช่น SET('อ่าน','เขียน','ลบ')

Date and Time Data Types (ข้อมูลวันที่และเวลา)

ใช้เก็บข้อมูลเกี่ยวกับวัน เวลา และช่วงเวลา

  • DATE – วันที่ (รูปแบบ YYYY-MM-DD) เช่น 2025-04-02
  • DATETIME – วันและเวลา เช่น 2025-04-02 14:30:00
  • TIMESTAMP – เหมือน DATETIME แต่อิงเวลาจากระบบ (UNIX time)
  • TIME – เวลาอย่างเดียว เช่น 14:30:00
  • YEAR – ปี (รูปแบบ YYYY) เช่น 2025

Spatial Data Types (ข้อมูลเชิงพื้นที่ – ใช้น้อย)

ใช้ในระบบ GIS หรือข้อมูลพิกัดทางภูมิศาสตร์ เช่น แผนที่

  • GEOMETRY, POINT, LINESTRING, POLYGON ใช้เก็บข้อมูลพิกัดตำแหน่งหรือพื้นที่

ข้อควรระวังในการเลือก Data Type

  • เลือกชนิดข้อมูลให้ตรงกับลักษณะของข้อมูล เพื่อประหยัดพื้นที่และทำงานเร็วขึ้น
  • หลีกเลี่ยงการใช้ TEXT หากข้อมูลมีความยาวไม่มาก ควรใช้ VARCHAR แทน
  • ใช้ DECIMAL แทน FLOAT หากต้องการความแม่นยำ (เช่น บัญชี, ราคาสินค้า)
  • สำหรับ ENUM หรือ SET ควรใช้กับค่าที่จำกัด ไม่เปลี่ยนแปลงบ่อย
แชร์เรื่องนี้