ก่อนที่เราจะใช้งาน SQL ในการจัดการฐานข้อมูล มาดูกันก่อนเลยครับว่า SQL นั้นมีชนิดข้อมูลแบบไหนบ้าง แต่ละประเภทเก็บข้อมูลได้เยอะขนาดไหน เมื่อเรามีข้อมูลที่เตรียมจะนำเข้าไปเก็บในฐานข้อมูลจะได้เลือกชนิดและประเภทของข้อมูลได้ถูกต้องนั่นเอง
ชนิดข้อมูลที่ MySQL สนับสนุนแบ่งเป็นสามประเภทหลักใหญ่ๆ
ชนิดข้อมูลที่เป็นตัวเลข
BIT (มีใช้ได้กับ MyISAM, InnoDB, Memory)
TINYINT
SMALLINT
MEDIUMINT
INT
BIGINT
Float
ชนิดข้อมูลที่เกี่ยวกับวันที่และเวลา
DATETIME
DATE
TIMESTAMP
TIME
YEAR
ชนิดข้อมูลที่เกี่ยวกับตัวอักษร
CHAR
VARCHAR
BINARY
VARBINARY
BLOB
TEXT
ENUM
SET
——————————————————————————————————-
TINYINT ขนาดที่เก็บ 1 ไบต์
UNSIGNED เก็บค่าจำนวนเต็ม 0 ถึง 255
SIGNED เก็บค่าจำนวนเต็ม -128 ถึง 127
SMALLINT ขนาดที่เก็บ 2 ไบต์
UNSIGNED เก็บค่าจำนวนเต็ม 0 ถึง 65535
SIGNED เก็บค่าจำนวนเต็ม -32768 ถึง 32767
MEDIUMINT ขนาดที่เก็บ 3 ไบต์
UNSIGNED เก็บค่าจำนวนเต็ม 0 ถึง 16777215
SIGNED เก็บค่าจำนวนเต็ม -8388608 ถึง 8388607
INT หรือ INTEGER ขนาดที่เก็บ 4 ไบต์
UNSIGNED เก็บค่าจำนวนเต็ม 0 ถึง 4294967295
SIGNED เก็บค่าจำนวนเต็ม -2147483648 ถึง 2147483647
BIGINT หรือ INTEGER ขนาดที่เก็บ 8 ไบต์
UNSIGNED เก็บค่าจำนวนเต็ม 0 ถึง 18446744073709551615
SIGNED เก็บค่าจำนวนเต็ม -9223372036854775808 ถึง 9223372036854775807
(ขนาดที่เก็บของ INTEGER จะแปรตามค่าที่บันทึก)
FLOAT(x) ถ้า 0 <= x <= 24 ขนาดที่เก็บ 4 ไบต์ (ดู FLOAT)
ถ้า 25 <= x <= 53 ขนาดที่เก็บ 8 ไบต์ (ดู DOUBLE)
เก็บค่าจำนวนจริงแบบ IEEE 754
FLOAT ขนาดที่เก็บ 4 ไบต์
เก็บค่าจำนวนจริงแบบ IEEE 754
ตั้งแต่ -3.402823466E+38 ถึง -1.175494351E-38
และ 0
และ 1.175494351E-38 ถึง 3.402823466E+38
DOUBLE หรือ REAL ขนาดที่เก็บ 8 ไบต์
เก็บค่าจำนวนจริงแบบ IEEE 754
ตั้งแต่ -1.7976931348623157E+308 ถึง -2.2250738585072014E-308
และ 0
และ 2.2250738585072014E-308 ถึง 1.7976931348623157E+308
DECIMAL(m,d) หรือ NUMERIC(m,d) ถ้า d = 0 ขนาดที่เก็บคือ m+1 ไบต์ ถ้า d > 0 ขนาดที่เก็บคือ m+2 ไบต์
เก็นค่าเลขทศนิยมแบบระบุจำนวนหลัก m ทุกหลักรวมจุดทศนิยม และ d หลักหลังทศนิยม
เช่นถ้าต้องการเก็บค่าให้ได้มากที่สุดเพียง 9999.99 ให้กำหนดเป็น DECIMAL(7,2)
DATE ขนาดที่เก็บ 3 ไบต์
เก็บค่าวันที่ในรูปแบบ YYYY-MM-DD
โดยมีค่าตั้งแต่ 1000-01-01 ถึง 9999-12-31
DATETIME ขนาดที่เก็บ 8 ไบต์
เก็บค่าวันที่และเวลาในรูปแบบ YYYY-MM-DD HH:mm:SS
โดยมีค่าตั้งแต่ 1000-01-01 00:00:00 ถึง 9999-12-31 23:59:59
TIMESTAMP[(m)] ขนาดที่เก็บ 4 ไบต์
เก็บวันที่และเวลาในรูปแบบ String Timestamp
m = 14 หรือไม่กำหนด -> YYYYMMDDHHmmSS
m = 12 -> YYMMDDHHmmSS
m = 10 -> YYMMDDHHmm
m = 8 -> YYYYMMDD
m = 6 -> YYMMDD
m = 4 -> YYMM
m = 2 -> YY
โดยมีค่าตั้งแต่ 1970-01-01 00:00:00 ถึง 2037
TIME ขนาดที่เก็บ 3 ไบต์
เก็บค่าเวลาในรูปแบบ HH:mm:SS
โดยมีค่าตั้งแต่ 00:00:00 ถึง 23:59:59
YEAR[(2 หรือ 4)] ขนาดที่เก็บ 1 ไบต์
เก็บค่าปี 2 หรือ 4 หลัก
หากระบุเป็น 2 จะเก็บค่า 70 ถึง 69 หมายถึงปี 1970 ถึง 2069
หากระบุเป็น 4 จะเก็บค่า 1901 ถึง 2155
CHAR(m) ขนาดที่เก็บ m ไบต์ แต่ไม่เกิน 255 ไบต์
เก็บค่าอักษรตามรหัส ASCII หรือ encoding ที่ใช้อยู่
VARCHAR(m) ขนาดที่เก็บตามข้อมูลจริง มากที่สุด m ไบต์ แต่ไม่เกิน 255 ไบต์
เก็บค่าอักษรตามรหัส ASCII หรือ encoding ที่ใช้อยู่
CHAR จะเก็บขนาดตายตัว ส่วน VARCHAR จะเก็บตามขนาดของข้อมูลตัวอักษร
TINYBLOB หรือ TINYTEXT
ขนาดที่เก็บตามข้อมูลจริง +1 ไบต์ แต่ไม่เกิน 255 ไบต์
เก็บค่าอักษรตามรหัส ASCII หรือข้อมูล BINARY
BLOB หรือ TEXT
ขนาดที่เก็บตามข้อมูลจริง +2 ไบต์ แต่ไม่เกิน 65535 ไบต์
เก็บค่าอักษรตามรหัส ASCII หรือข้อมูล BINARY
MEDIUMBLOB หรือ MEDIUMTEXT
ขนาดที่เก็บตามข้อมูลจริง +3 ไบต์ แต่ไม่เกิน 16777215 ไบต์
เก็บค่าอักษรตามรหัส ASCII หรือข้อมูล BINARY
LONGBLOB หรือ LONGTEXT
ขนาดที่เก็บตามข้อมูลจริง +4 ไบต์ แต่ไม่เกิน 4294967295 ไบต์
เก็บค่าอักษรตามรหัส ASCII หรือข้อมูล BINARY
ENUM(‘value1′,’value2’,…)
ขนาดที่เก็บ 1 หรือ 2 ไบต์ ตามจำนวนค่า value ซึ่งกำหนดได้มากที่สุด 65535 ค่า
เก็บค่าตาม value ที่กำหนด
SET(‘value1′,’value2’,…)
ขนาดที่เก็บ 1, 2, 3, 4 หรือ 8 ไบต์ ตามจำนวนค่า value ซึ่งกำหนดได้มากที่สุด 64 ค่า
เก็บค่าตาม value ที่กำหนด
ENUM เก็บค่า value เพียงค่าเดียวต่อหนึ่งแถว
ส่วน SET สามารถเก็บ value ได้หลายๆ ค่าต่อหนึ่งแถว