ในการสร้าง table ให้กับ database นั้น ๆ เราจะต้องกำหนดโครงสร้าง field ต่าง ๆ ซึ่งแต่ละ field นั้นจะต้องกำหนด data type ให้กับมันด้วย ซึ่งในบทความนี้ผมจะแสดง data type ทั้งหมดของ MySQL เพื่อให้ผู้อ่านเลือกใช้ในการสร้าง table กันครับ
| Type | Size | การใช้งาน |
|---|---|---|
| TINYINT(M), BIT, BOOL, BOOLEAN มีความหมายเดียวกับ TINYINT(1) | 1 byte | ถ้าไม่กำหนดเครื่องหมาย (unsigned) มันจะเก็บค่าตั้งแต่ 0-255 แต่ถ้ากำหนดเครื่องหมายมันจะเก็บค่าได้ ตั้งแต่ -128-127 |
| SMALLINT(M) | 2 bytes | ถ้าไม่กำหนดเครื่องหมาย (unsigned) มันจะ เก็บค่าตั้งแต่ 0-65535 แต่ถ้ากำหนดเครื่องหมายันจะเก็บค่าตั้งแต่ -32768-32767 |
| MEDIUMINT(M) | 3 bytes | ถ้าไม่กำหนดเครื่องหมาย (unsigned) มัน จะเก็บค่าตั้งแต่ 0-16777215 แต่ถ้ากำหนดเครื่องหมายันจะเก็บค่าตั้งแต่ -8388608-8388607 |
| INT(M), INTEGER(M) | 4 bytes | ถ้าไม่กำหนดเครื่องหมาย (unsigned) มันจะเก็บค่าตั้งแต่ 0-4294967295 แต่ถ้ากำหนดเครื่องหมายันจะเก็บค่าตั้งแต่ -2147483648-2147483647 |
| BIGINT(M) | 8 bytes | ถ้าไม่กำหนดเครื่องหมาย (unsigned) มันจะเก็บ ค่าตั้งแต่ 0-18446744073709551615 แต่ถ้ากำหนดเครื่องหมายันจะเก็บค่าตั้งแต่ -9223372036854775-9223372036854775807 |
| FLOAT(precision) | 4 หรือ 8 bytes | โดยที่สามารถกำหนด precision ตั้งแต่ 0-53 แต่ถ้า precision <= 24 จะถูกแปลงเป็น FLOAT ถ้า precision > 24 และ <= 53 จะถูกแปลงเป็น DOUBLE |
| FLOAT(M, D) | 4 bytes | Single precision floating-point number |
| DOUBLE(M, D), DOUBLE PRECISION, REAL | 8 bytes | Double-precision floating-point number |
| DECIMAL(M,D), DEC, NUMERIC, FIXED | M+1 หรือ M+2 bytes | เป็นส่วนย่อยของ floating-point number โดยจะถูกเก็บเหมือนกับ CHAR ใช้สำหรับ small decimal เช่นการเก็บ money |
| DATE | 3 bytes | แสดงผลในรูปแบบ YYYY-MM-DD |
| DATETIME | 8 bytes | แสดงผลในรูปแบบ YYYY-MM-DD HH:MM:SS |
| TIMESTAMP | 4 bytes | เก็บค่าวันที่และเวลาในรูปแบบ timestamp |
| TIME | 3 bytes | แสดงผลในรูปแบบ HHH:MM:SS โดยที่ HHH จะคืน ค่าจาก -838 ถึง 838 |
| YEAR | 1 bytes | แสดงผลในรูปแบบ YYYY ซึ่งเป็นค่าตั้งแต่ 1901 - 2155 เท่านั้น |
| CHAR(M) | M bytes | กำหนดขนาด ถ้าอักขระของเรายาวไม่เท่ากับที่ กำหนดไว้ มันจะแทนที่ด้วยช่องว่าง โดยที่ M <= 255 |
| VARCHAR(M) | Up to M bytes | M <= 255 |
| TINYBLOB หรือ TINYTEXT | Up to 255 bytes | TINYBLOB เป็น case-sensitive สำหรับการเรียงและเปรียบเทียบ แต่ TINYTEXT เป็น case-insensitive |
| BLOB หรือ TEXT | Up to 65 KB | BLOB เป็น case-sensitive สำหรับ การเรียงและเปรียบเทียบ แต่ TEXT เป็น case-insensitive |
| MEDIUMBLOB หรือ MEDIUMTEXT | Up to 16MB | MEDIUMBLOB เป็น case-sensitive สำหรับการเรียงและเปรียบเทียบ แต่ MEDIUMTEXT เป็น case-insensitive |
| LONGBLOB หรือ LONGTEXT | Up 4 GB | LONGBLOB เป็น case- sensitive สำหรับการเรียงและเปรียบเทียบ แต่ LONGTEXT เป็น case-insensitive |
| ENUM(value1, ..., valueN) | 1 หรือ 2 bytes | Up to 65535 เป็นค่าที่ไม่ ซ้ำกัน |
| SET(value1, ..., valueN) | Up 8 bytes | Up to 64 เป็นค่าที่ไม่ซ้ำกัน |
ผู้สนับสนุน