VAR CHAR : สำหรับเก็บข้อมูลประเภทตัวอักษร จะต้องมีการกำหนดความยาวของข้อมูลลงไปด้วย ซึ่งสามารถกำหนดค่าได้ตั้งแต่ 1 - 255 ฟิลด์ชนิดนี้ เหมาะสำหรับการเก็บข้อมูลสั้นๆ เช่น ชื่อ นามสกุล หรือหัวข้อต่างๆ เป็นต้นในส่วนฟิลด์ประเภทนี้ จะสามารถเลือก "แอตทริบิวต์" เป็น BINARY ได้ โดยปกติแล้วการจัดเรียงข้อมูลเวลาสืบค้น (query) สำหรับ VAR CHAR จะเป็นแบบ case-sensitive (ตัวอักษรใหญ่ และเล็กมีความหมายแตกต่างกัน) แต่หากระบุ "แอตทริบิวต์" เป็น BINARY การสืบค้นจะไม่คำนึงตัวอักษรว่าจะเป็นตัวใหญ่ หรือตัวเล็ก
CHAR
: สำหรับเก็บข้อมูลประเภทตัวอักษร แบบที่ถูกจำกัดความกว้างเอาไว้คือ
255 ตัวอักษร ไม่สามารถปรับเปลี่ยนได้เหมือนกับ VAR CHAR หากทำการสืบค้นโดยเรียงตามลำดับ ก็จะเรียงข้อมูลแบบ case-sensitive
เว้นแต่จะกำหนดแอตทริบิวต์เป็น BINARY ที่จะทำให้การเรียงข้อมูลเป็นแบบ
non case-sensitive เช่นเดียวกับ VAR CHAR
TINY TEXT:
ในกรณีที่ข้อความยาวๆ หรือต้องการที่จะค้นหาข้อความ โดยอาศัยฟีเจอร์
FULL TEXT SEARCH ของ MySQL เราอาจจะเลือกที่จะไม่เก็บข้อมูลลงในฟิลด์ประเภท VAR CHAR ที่มีข้อจำกัดแค่ 256 ตัวอักษร
แต่เราจะเก็บลงฟิลด์ประเภท TEXT แทน โดย TINY TEXT นี้ จะสามารถเก็บข้อมูลได้ 256 ตัวอักษร
ซึ่งมองเผินๆ ก็ไม่ต่างกับเก็บลงฟิลด์ประเภท CHAR หรือ VAR CHAR (255) เลย แต่จริงๆ มันต่างกันตรงที่ มันทำ FULL TEXT SEARCH
ได้
TEXT
: สำหรับเก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINY TEXT แต่สามารถเก็บได้มากขึ้น โดยสูงสุดคือ 65,535
ตัวอักษร หรือ 64KB เหมาะสำหรับเก็บข้อมูลพวกเนื้อหาต่างๆ
ที่ยาวๆ
MEDIUM TEXT : เก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINY TEXT แต่เก็บข้อมูลได้ 16,777,215 ตัวอักษร
LONG TEXT : เก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINY TEXT แต่เก็บข้อมูลได้ 4,294,967,295 ตัวอักษร
TINY INT : สำหรับเก็บข้อมูลชนิดตัวเลขที่มีขนาด 8 บิต
ข้อมูลประเภทนี้เราสามารถกำหนดเพิ่มเติมในส่วนของ "แอตทริบิวต์"
ได้ว่าจะเลือกเป็น UNSIGNED หรือ UNSIGNED ZERO FILL โดยจะมีความแตกต่างดังนี้
UNSIGNED
: จะหมายถึงเก็บค่าตัวเลขแบบไม่มีเครื่องหมาย
แบบนี้จะทำให้สามารถเก็บค่าได้ตั้งแต่ 0 - 255
UNSIGNED ZERO FILL : เหมือนข้างต้น
แต่ว่าหากข้อมูลที่กรอกเข้ามาไม่ครบตามจำนวนหลักที่เรากำหนด ตัว MySQL จะทำการเติม 0 ให้ครบหลักเอง เช่น ถ้ากำหนดให้ใส่ได้
3 หลัก แล้วทำการเก็บข้อมูล 25 เข้าไป
เวลาที่สืบค้นดู เราจะได้ค่าออกมาเป็น 025 หากไม่เลือก
"แอตทริบิวต์" สิ่งที่เราจะได้ก็คือ SIGNED นั่นก็คือต้องเสียบิตนึงไปเก็บเครื่องหมาย บวก/ลบ
ทำให้สามารถเก็บข้อมูลได้อยู่ในช่วง -128 ถึง 127 เท่านั้น
SMALL INT : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 16
บิต จึงสามารถเก็บค่าได้ตั้งแต่ -32768 ถึง 32767
(ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 65535 (ในกรณี UNSIGNED หรือไม่คิดเครื่องหมาย)
ซึ่งสามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZERO FILL ได้เช่นเดียวกับ TINY INT
MEDIUM INT : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 24
บิต นั่นก็หมายความว่าสามารถเก็บข้อมูลตัวเลขได้ตั้งแต่ -8388608 ไปจนถึง 8388607 (ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 16777215 (ในกรณีที่เป็น UNSIGNED หรือไม่คิดเครื่องหมาย) ซึ่งสามารถเลือก Attribute เป็น
UNSIGNED และ UNSIGNED ZERO FILL ได้เช่นเดียวกับ TINY INT
INT
: สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 32
บิต หรือสามารถเก็บข้อมูลได้ตั้งแต่ -2147483648 ไปจนถึง 2147483647 ครับ (ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 4294967295
(ในกรณีที่เป็น UNSIGNED หรือไม่คิดเครื่องหมาย)
ซึ่งสามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZERO FILL ได้เช่นเดียวกับ TINY INT
BITING : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 64
บิต สามารถเก็บข้อมูลได้ตั้งแต่ -9223372036854775808
ไปจนถึง 9223372036854775807 เลยทีเดียว (แบบคิดเครื่องหมาย)
หรือ 0 ถึง 18446744073709551615 (ในกรณีที่เป็น
UNSIGNED หรือไม่คิดเครื่องหมาย) ซึ่งสามารถเลือก Attribute
เป็น UNSIGNED และ UNSIGNED ZERO FILL ได้เช่นเดียวกับ TINY INT
FLOAT[(M,D)]
: ที่กล่าวถึงไปทั้งหมด ในตระกูล INT นั้นจะเป็นเลขจำนวนเต็ม
หากเราบันทึกข้อมูลที่มีเศษทศนิยม มันจะถูกปัดทันที
ดังนั้นหากต้องการจะเก็บค่าที่เป็นเลขทศนิยม ต้องเลือกชนิดขอฟิลด์เป็น FLOAT
โดยจะเก็บข้อมูลแบบ 32 บิต คือมีค่าตั้งแต่ -3.402823466E+38 ไปจนถึง -1.175494351E-38, 0 และ 1.175494351E-38 ถึง 3.402823466E+38
DOUBLE[(M,D)]
: สำหรับเก็บข้อมูลประเภทตัวเลขทศนิยม เช่นเดียวกับ FLOAT แต่มีขนาดเป็น 64 บิต สามารถเก็บได้ตั้งแต่ -1.7976931348623157E+308 ถึง -2.2250738585072014E-308, 0 และ 2.2250738585072014E-308 ถึง 1.7976931348623157E+308
DECIMAL[(M,D)]
: สำหรับเก็บข้อมูลประเภทตัวเลขทศนิยม เช่นเดียวกับ FLOAT แต่ใช้กับข้อมูลที่ต้องการความละเอียดและถูกต้องของข้อมูลสูง
ข้อสังเกต
เกี่ยวกับข้อมูลประเภท FLOAT, DOUBLE และ DECIMAL
ก็คือ เวลากำหนดความยาวของข้อมูลในฟิลด์ จะถูกกำหนดอยู่ในรูปแบบ (M,D)
ซึ่งหมายความว่า ต้องมีการระบุว่า
จะให้มีตัวเลขส่วนที่เป็นจำนวนเต็มกี่หลัก และมีเลขทศนิยมกี่หลัก เช่น
ถ้าเรากำหนดว่า FLOAT(5,2) จะหมายความว่า
เราจะเก็บข้อมูลเป็นตัวเลขจำนวนเต็ม 5 หลัก และทศนิยม 2 หลัก ดังนั้นหากทำการใส่ข้อมูล 12345.6789 เข้าไป
สิ่งที่จะเข้าไปอยู่ในข้อมูลจริงๆ ก็คือ 12345.68 (ปัดเศษให้มีจำนวนหลักตามที่กำหนดไว้)
DATE
: สำหรับเก็บข้อมูลประเภทวันที่ โดยเก็บได้จาก 1 มกราคม ค.ศ. 1000 ถึง 31
ธันวาคม ค.ศ. 9999 โดยจะแสดงผลในรูปแบบ YYYY-MM-DD
DATETIME
: สำหรับเก็บข้อมูลประเภทวันที่ และเวลา โดยจะเก็บได้ตั้งแต่ 1 มกราคม ค.ศ. 1000 เวลา 00:00:00 ไปจนถึง 31 ธันวาคม ค.ศ. 9999
เวลา 23:59:59 โดยรูปแบบการแสดงผล เวลาที่ทำการสืบค้น (query)
ออกมา จะเป็น YYYY-MM-DD HH:MM:SS
TIMESTAMP[(M)]
: สำหรับเก็บข้อมูลประเภทวันที่ และเวลาเช่นกัน
แต่จะเก็บในรูปแบบของ
YYYYMMDDHHMMSS หรือ YYMMDDHHMMSS
หรือ YYYYMMDD หรือ YYMMDD แล้วแต่ว่าจะระบุค่า M เป็น 14, 12, 8 หรือ 6 ตามลำดับ สามารถเก็บได้ตั้งแต่วันที่ 1 มกราคม ค.ศ. 1000 ไปจนถึงประมาณปี ค.ศ. 2037
TIME
: สำหรับเก็บข้อมูลประเภทเวลา มีค่าได้ตั้งแต่ -838:59:59 ไปจนถึง 838:59:59 โดยจะแสดงผลออกมาในรูปแบบ HH:MM:SS
YEAR[(2/4)]
: สำหรับเก็บข้อมูลประเภทปี ในรูปแบบ YYYY หรือ
YY แล้วแต่ว่าจะเลือก 2 หรือ 4
(หากไม่ระบุ จะถือว่าเป็น 4 หลัก) โดยหากเลือกเป็น
4 หลัก จะเก็บค่าได้ตั้งแต่ ค.ศ. 1901 ถึง
2155 แต่หากเป็น 2 หลัก จะเก็บตั้งแต่
ค.ศ. 1970 ถึง 2069