6.5 ชนิดของข้อมูลในฐานข้อมูลมายเอสคิวแอล
ข้อมูลที่จัดเก็บในฐานข้อมูล แต่ละฟิลด์แต่ละคอลัมน์มีรูปแบบที่แตกต่างกัน เช่น ข้อมูลการสมัครสมาชิกประกอบไปด้วย ชื่อ นามสกุล ที่เป็นตัวอักษร เบอร์โทรศัพท์ที่เป็นตัวเลข วันเกิด ที่เป็นวันเดือนปี หรือ เพศที่เป็นตัวเลขที่มีความหมาย เช่นกําหนด 0 หมายถึงเพศชาย และ 1 หมายถึงเพศหญิง เป็นต้น ซึ่งการกําหนดค่าแต่ละฟิลด์ของข้อมูลจะต้องกําหนดให้ตรงกันกับข้อมูลที่จัดเก็บ หากไม่ตรงกัน อาจเกิดความผิดพลาดในการจัดเก็บข้อมูล เช่น ข้อมูลไม่ครบถ้วน หรือ เกิดข้อผิดพลาดระหว่างการ บันทึกข้อมูล เป็นต้น
นอกจากชนิดของข้อมูลแล้วการกําหนดขนาดของฟิลด์เพื่อจองพื้นที่ในการจัดเก็บข้อมูล เพื่อให้ข้อมูลครบถ้วน เช่น หากกําหนดชนิดของฟิลด์เป็นตัวเลขขนาด 3 ตัวอักษร จะไม่สามารถบันทึกข้อมูลที่มีตัวเลขเกิน 3 ตัวได้ทําให้ฟิลด์รองรับการกรอกข้อมูลระหว่าง 0 – 999 เท่านั้น เป็นต้น จะเห็นว่าชนิดของข้อมูลและขนาดของข้อมูลมีส่วนสําคัญในการกําหนดค่า ซึ่งชนิดของฐานข้อมูลมายเอสคิวแอล สามารถแบ่งออกเป็นหมวดหมู่ได้ ดังนี้
6.5.1 ชนิดตัวอักษร (Text)
ชนิดตัวอักษร (Text) เป็นการจัดเก็บข้อมูลที่เป็นตัวอักษรซึ่งแบ่งตามคุณลักษณะของ ตัวอักษร ดังตารางที่ 6.1
ตารางที่ 6.1 ชนิดของข้อมูลแบบตัวอักษร
ชนิดของข้อมูล | รายละอียด |
CHAR (size) | ใช้เก็บตัวอักษรสามารถระบุขนาดของตัวอักษร ตัวเลข สัญลักษณ์ต่างๆ (Size) ได้ไม่เกิน 255 ตัวอักษร |
VARCHAR (size) | นิยมใช้เก็บตัวอักษรสามารถระบุจํานวนขนาดของตัวอักษร (Size) ได้จํานวนไม่เกิน 65,535 ตัวอักษร (สําหรับ MySQL 5.0.3 ขึ้นไป) |
TINYTEXT | เก็บตัวอักษรได้ไม่ เกิน 255 ตัวอักษร |
TEXT | เก็บตัวอักษรได้ไม่ เกิน 65,535 ตัวอักษร |
BLOB | BLOB (Binary Large Object) เก็บข้อมูลได้ 65,535 ไบต์ |
MEDIUMTEXT | เก็บตัวอักษรได้สูงสุด 16,777,215 ตัวอักษร |
MEDIUMBLOB | เก็บข้อมูลได้สูงสุด 16,777,215 ไบต์ |
LONGTEXT | เก็บตัวอักษรได้สูงสุด 4,294,967,295 ตัวอักษร |
LONGBLOB | เก็บข้อมูลได้สูงสุด 4,294,967,295 ไบต์ |
ENUM | กลุ่มของข้อมูลตั้งแต่ 0,1,2,3, … 65535 |
SET | กลุ่มของข้อมูลตั้งแต่ 0,1,2,3, … 64 |
6.5.2 ชนิดตัวเลข (Number)
ชนิดตัวเลข (Number) การเก็บข้อมูลชนิดตัวเลขมีหลายชนิดขึ้นอยู่กับขนาดของตัวเลข ซึ่งสามารถกําหนดได้ว่าข้อมูลเป็นจํานวนบวกอย่างเดียว (Unsingned) หรือ ทั้งบวกและลบ (Normal) ดังตารางที่ 6.2
ตารางที่ 6.2 ชนิดของข้อมูลแบบตัวเลข
ชนิดของข้อมูล | รายละอียด |
TINYINT (size) | สามารถจัดเก็บตัวเลขได้ -128 to 127 แบบ normal และ 0 to 255 แบบ UNSIGNED สามารถกําหนดขนาด (Size) ของตัวเลขที่จัดเก็บได้ |
SMALLINT (size) | สามารถจัดเก็บตัวเลขได้ -32768 to 32767 แบบ normal และ 0 to 65535 แบบ UNSIGNED |
MEDIUMINT (size) | สามารถจัดเก็บตัวเลขได้ -8388608 to 8388607 แบบ normal และ 0 to 16777215 แบบ UNSIGNED |
INT (size) | สามารถจัดเก็บตัวเลขได้ -2147483648 to 2147483647 แบบ normal และ 0 to 4294967295 แบบ UNSIGNED |
BIGINT (size) | สามารถจัดเก็บตัวเลขได้ -9223372036854775808 to 9223372036854775807 แบบ normal และ 0 to 18446744073709551615 UNSIGNED |
FLOAT (size,d) | สามารถจัดเก็บตัวเลขและทศนิยมที่มีขนาดไม่ใหญ่มาก จํานวนสูงสุดสามารถกําหนดได้ที่ขนาดของตัวเลข และจํานวนที่กําหนดจะถูกแยกออกมาเป็น จํานวนทศนิยม สามารถกําหนดได้หลังขนาดของตัวเลข |
DOUBLE (size,d) | สามารถจัดเก็บตัวเลขและทศนิยมที่มีขนาดใหญ่ ซึ่งสามารถกําหนดขนาด ของตัวเลข และขนาดของทศนิยมที่ต้องการได้ |
DECIMAL (size,d) | สามารถจัดเก็บข้อมูลที่เป็นตัวเลขและทศนิยมได้ สามารถกําหนดขนาด ตัวเลขและขนาดของทศนิยมตามที่ต้องการได้ แต่คุณลักษณะของข้อมูลจะ เป็นตัวอักษร (String) |
6.5.3 ชนิดวันที่/เวลา (Date/Time)
ชนิดวันที่/เวลา (Date/Time) เป็นการเก็บข้อมูลที่เป็นวันที่และเวลา ซึ่งปกติรูปแบบ การจัดเก็บวันที่จะเป็น YYYY-MM-DD ซึ่งหมายถึง ปี-เดือน-วัน ซึ่งปีเก็บอยู่ในรูปแบบปี ค.ศ. จํานวน 4 ตัวอักษรเช่น 2016 ส่วนเดือนจะเก็บในรูปแบบของตัวเลข 2 ตัว เช่น เดือนมกราคมเก็บ 01 เดือน ธันวาคม เก็บ 12 เป็นตัน และวันที่เก็บเป็นตัวเลข 2 ตัวอักษร จาก 01-31 เช่น 2016-12-22 เป็นตัน รูปแบบวันที่ที่จัดเก็บดังตารางที่ 6.3
ตารางที่ 6.3 ชนิดของข้อมูลแบบวันที่/เวลา
ชนิดของข้อมูล | รายละอียด |
DATE() | เป็นข้อมูลเฉพาะ วัน/เดือน/ปี ระหว่าง 1000-01-01 ถึง 9999-12-31 |
DATETIME() | เป็นข้อมูล วัน/เดือน/ปี และ เวลา ระหว่าง 1000-01-01 00:00:00 ถึง 9999- 12-31 23:59:59 |
TIMESTAMP() | เป็นค่า TIMESTAMP ที่จัดเก็บจํานวนของวินาทีซึ่งเริ่มนับตั้งแต่ 1970-01-01 00:00:00 สามารถจัดเก็บข้อมูลระหว่าง 1970-01-01 00:00:01 UTC ถึง 2038-01-09 03:14:07 UTC |
TIME() | เป็นข้อมูล เวลา รูปแบบ HH:MI:SS ระหว่าง -838:59:59 ถึง 838:59:59 |
YEAR() | เป็นข้อมูล ปี ซึ่งสามารถเลือกเก็บ 2 หรือ 4 ตัวอักษร ซึ่งถ้าเป็น 4 ตัวอักษร จะสามารถเก็บข้อมูลได้ระหว่าง 1901 ถึง 2155 และหากเป็น 2 ตัวอักษรจะ เก็บข้อมูลระหว่าง 70 ถึง 69 ซึ่งหมายถึงช่วงปี 1970 ถึง 2069 |