Identifiers และประเภทข้อมูล
Identifiers ใน MySQL มี 4 ชนิด คือ ฐานข้อมูล ตารางข้อมูล คอลัมน์ และ alias
ฐานข้อมูลใน MySQL ตรงกับไดเรคทอรีในโครงสร้างไฟล์ และตารางข้อมูลตรงกับไฟล์ สิ่งนี้มีผลโดยตรงกับการตั้งชื่อ รวมถึงมีผลกับตัวพิมพ์เล็กหรือใหญ่ (case sensitive) ของชื่อเหล่านี้ ถ้าไดเรคทอรีและชื่อไฟล์เป็น case sensitive ในระบบปฎิบัติการ ชื่อฐานข้อมูลและตารางข้อมูลจะเป็น case sensitive ( ตัวอย่างเช่น UNIX) กรณีอื่นไม่ ( ตัวอย่างเช่น Windows) ชื่อคอลัมน์ และ alias ไม่เป็น case sensitivity แต่ไม่สามารถใช้ตัวอักษรต่างเวอร์ชันในประโยคคำสั่ง SQL เดียวกัน
หมายเหตุ ตำแหน่งของ ไดเรคทอรี่ และไฟล์ เก็บข้อมูลตามการตั้งค่าคอนฟิก สามารถตรวจตำแหน่งของระบบ โดยการใช้ mysqladmin
mysqladmin variables
identifier ได้รับการสรุป ในตาราง 8.4 ข้อยกเว้นเฉพาะ คือ ไม่สามารถใช้ ASCLL(0) หรือ ASCLL(255) ใน identifier
ตาราง 8.4 identifier
ประเภท |
ความยาวสูงสุด |
Case sensitive |
ตัวอักษรอนุญาต |
ฐานข้อมูล |
64 |
เหมือนกับระบบปฏิบัติการ |
ใช้ได้ทั้งหมดในชื่อไดเรคทอรีในระบบปฎิบัติการ ยกเว้น / |
ตารางข้อมูล |
64 |
เหมือนกับระบบปฏิบัติการ |
ใช้ได้ทั้งหมดในชื่อไฟล์ ในระบบปฎิบัติการ ยกเว้น / และ . |
คอลัมน์ |
64 |
ไม่ |
ใช้ได้ทั้งหมด |
alias |
255 |
ไม่ |
ใช้ได้ทั้งหมด |
ประเภทข้อมูล
ประเภทข้อมูลพื้นฐานใน MySQL คือ ตัวเลข วันที่ และข้อความ ภายในแต่ละกลุ่มยังแบ่งเป็นหลายประเภท
แต่ละประเภทมี การจัดเก็บหลายขนาด เมื่อเลือกประเภทข้อมูล หลักการโดยทั่วไป คือ เลือกประเภทเล็กที่สุด ที่เหมาะสมกับข้อมูล
สำหรับหลายประเภทข้อมูล เมื่อกำลังสร้างคอลัมน์จะสามารถระบุช่วงความยาวสูงสุด โดยได้รับการแสดง ในตารางประเภทข้อมูลด้วย M ถ้าประเภทนั้นให้เป็นตัวเลือก ได้รับการแสดงในวงเล็บสี่เหลี่ยม ค่าสูงสุดที่สามารถระบุได้ คือ 255
ประเภทข้อมูลตัวเลข
ประเภทข้อมูลตัวเลขเป็นทั้งเลขจำนวนเต็มและทศนิยม สำหรับเลขทศนิยมสามารถระบุจำนวนตำแหน่งหลังจุดทศนิยม ค่านี้แสดงด้วย D ค่าสูงสุดสามารถระบุ D เป็น 30 หรือ M-2 ( นั่นเป็นความยาวสูงสุดในการแสดงลบสอง หนึ่งตัวอักษร สำหรับจุดทศนิยม และหนึ่งสำหรับส่วนจำนวนเต็มของตัวเลขนั้น ) ขึ้นกับว่าค่าใดน้อยกว่า
สำหรับส่วนจำนวนเต็มสามารถระบุได้เช่นกัน ถ้าต้องการให้เป็นค่าไม่มีเครื่องหมาย (unsigned) ตามการแสดงในรายการคำสั่ง 8.1
สำหรับประเภทข้อมูลตัวเลขทั้งหมด สามารถระบุ คุณลักษณะ ZEROFILL เมื่อค่าจากคอลัมน์ ZEROFILL ได้รับการแสดง ค่าเหล่านี้จะมีการเติมศูนย์ข้างหน้า
ประเภทจำนวนเต็ม ได้รับการแสดงในตาราง 8.5 หมายเหตุ ช่วงข้อมูลในตารางนี้แสดงด้วยช่วงข้อมูลมีเครื่องหมายบนแถวหนึ่ง และช่วงข้อมูลไม่มีเครื่องหมาย บนบรรทัดต่อไป
ตาราง 8.5 ประเภทข้อมูลจำนวนเต็ม
ประเภท |
ช่วงข้อมูล |
การเก็บ (ไบต์) |
คำอธิบาย |
TINYINT [(M)] |
-127..128
หรือ 0..255
|
1 |
จำนวนเต็มขนาดเล็กมาก |
SMALLINT [(M)] |
-32768..32767
หรือ 0..65535
|
2 |
จำนวนเต็มขนาดเล็ก |
MEDIUMINT [(M)] |
-8388608.. 8388607
หรือ 0.. 16777215
|
3 |
จำนวนเต็มขนาดกลาง |
INT [(M)] |
-2 31 .. 2 31 -1
หรือ 0.. 2 32 -1
|
4 |
จำนวนเต็มปกติ |
INTEGER [(M)] |
|
|
ชื่อเดียวกับ INT |
BIGINT [(M)] |
-2 63 .. 2 63 -1
หรือ 0.. 2 64 -1
|
8 |
จำนวนเต็มปกติ |
ตาราง 8.6 ประเภทข้อมูลทศนิยม
ประเภท |
ช่วงข้อมูล |
การเก็บ (ไบต์) |
คำอธิบาย |
FLOAT ( precision ) |
ขึ้นกับ precision |
แปรผัน |
สามารถระบุเป็น Single หรือ Double |
FLOAT [(M,D)] |
?1.175494351E-38
?3.402823466E+38
|
4 |
ขนาด Single เทียบเท่ากับ FLOAT (4) แต่ระบุการแสดงความกว้างและจำนวนทศนิยม |
DOUBLE [(M,D)] |
?1.7976931348623157E+308
?2.2250738585072014E-308
|
8 |
ขนาด Double เทียบเท่ากับ FLOAT (8) แต่ระบุการแสดงความกว้างและจำนวนทศนิยม |
DOUBLE PRECISION [(M,D)] |
เท่ากับ DOUBLE |
|
ชื่อเดียวกับ DOUBLE [(M,D)] |
REAL [(M,D)] |
เท่ากับ DOUBLE |
|
ชื่อเดียวกับ DOUBLE [(M,D)] |
DECIMAL[(M [,D])] |
แปรผัน |
M+2 |
จำนวนทศนิยมที่จัดเก็บเป็น char ช่วงข้อมูลขึ้นกับ M และแสดงความกว้าง |
NUMERIC [(M,D)] |
เท่ากับ NUMERIC |
|
ชื่อเดียวกับ NUMERIC |
ประเภทข้อมูล วันที่ และเวลา
MySQL สนับสนุนประเภทข้อมูล วันที่ และเวลา ตามการแสดงในตาราง 8.7 ทุกประเภทเหล่านี้ สามารถป้อนข้อมูลทั้งรูปแบบข้อความ และตัวเลข คอลัมน์ TIMESTAMP ในแถวเฉพาะใช้ประโยชน์ไม่ได้ เมื่อตั้งค่าวันที่ และเวลา ของปฏิบัติการล่าสุดบนแถว ถ้าไม่ได้จัดการเอง แต่ใช้ประโยชน์สำหรับการบันทึกทรานแซคชัน
ตาราง 8.7 ประเภทข้อมูลวันที่และเวลา
ประเภท |
ช่วงข้อมูล |
คำอธิบาย |
DATE |
1000-01-01
9999-12-31 |
วันที่ แสดงเป็น YYYY-MM-DD (ปี เดือน วัน) |
TIME |
-838 :59:59
838 :59:59 |
เวลา แสดงเป็น HH:MM:SS (ชั่วโมง นาที วินาที)
หมายเหตุ ช่วงข้อมูลกว้างกว่าความต้องการใช้ |
DATETIME |
1000-01-01 00 :00:00
9999-12-31 23:59:59 |
วันที่และเวลา แสดงเป็น YYYY-MM-DD HH:MM:SS (ปี เดือน วัน ชั่วโมง นาที วินาที) |
TIMESTAMP [(M)] |
1970-01-01 00:00:00
บางกรณีเป็น 2037 timestamp |
timestamp ใช้กับรายงานทรานแซคชัน รูปแบบการแสดงขึ้นกับค่าของ M
ช่วงข้อมูลด้านบน ขึ้นกับ UNIX |
YEAR |
70 69 (1970 2069)
1901 - 2155 |
ปี สามารถระบุเป็นรูปแบบ 2 หรือ 4 ตำแหน่ง แต่ละรูปแบบมีช่วงข้อมูลต่างกัน |
ตาราง 8.8 ประเภทการแสดง TIMESTAMP
ประเภทการระบุ |
การแสดง |
TIMESTAMP |
YYYYMMDDHHMMSS |
TIMESTAMP (14) |
YYYYMMDDHHMMSS |
TIMESTAMP (12) |
YYMMDDHHMMSS |
TIMESTAMP (10) |
YYMMDDHHMM |
TIMESTAMP (8) |
YYYYMMDD |
TIMESTAMP (6) |
YYMMDD |
TIMESTAMP (4) |
YYMM |
TIMESTAMP (2) |
YY |
ประเภทข้อมูลข้อความ
ประเภทข้อมูลข้อความ แบ่งออกเป็น 3 กลุ่ม
กลุ่มแรก ประเภทข้อความธรรมดา ที่เป็นข้อความขนาดสั้น ได้แก่ CHAR ( ตัวอักษรความยาวคงที่ ) และ VARCHAR ( ตัวอักษรความยาวแปรผัน ) และสามารถกำหนดความกว้างได้ คอลัมน์ของ CHAR จะได้รับการเติมด้วยช่องว่างจนเต็มความกว้างสูงสุดจากขนาดของข้อมูล ขณะที่ คอลัมน์ VARCHAR มีความยาวแปรผันในความกว้างตามข้อมูล ( หมายเหตุ MySQL ตัดช่องว่างต่อท้ายจาก CHAR เมื่อดึงข้อมูล และตัดช่องว่างจาก VARCHAR เมื่อเก็บข้อมูล ) จึงเป็นการเลือกระหว่างช่องว่างกับความเร็วด้วยข้อมูล 2 ประเภทนี้
กลุ่มที่ 2 คือ ประเภท TEXT และ BLOB โดยมีขนาดหลากหลาย สำหรับข้อความยาวหรือข้อมูลไบนารี่ BLOB ย่อมาจาก binary large object สามารถเก็บข้อมูลตามตัวอย่าง เช่น ข้อมูลภาพ และเสียง
ในการปฏิบัติ คอลัมน์ BLOB และ TEXT มีข้อยกเว้นเหมือนกันโดย TEXT เป็น case sensitive และ BLOB ไม่ เนื่องจากประเภทข้อมูลเหล่านี้สามารถเก็บข้อมูลขนาดใหญ่ ทำให้ต้องการพิจารณาพิเศษ
กลุ่มที่ 3 เป็น 2 ประเภทพิเศษ SET และ ENUM ประเภทข้อมูล SET ได้รับการใช้เฉพาะกับค่าในคอลัมน์นี้ต้องมาจากชุดค่าเฉพาะ ค่าในคอลัมน์สามารถเก็บมากว่า 1 ค่าจากชุดข้อมูล โดยสามารถเก็บ 64 อย่าง ในชุดพิเศษ
ENUM คือ enumeration และคล้ายกับ SET มาก ยกเว้น คอลัมน์ของประเภทข้อมูลนี้สามารถ มี 1 ค่า ของค่าเฉพาะ หรือ ค่าว่าง และสามารถมีค่ามากที่สุด 68535 อย่างใน enumerate
ประเภทข้อมูลข้อความ ได้สรุปในตาราง 8.9, 8.10 และ 8.11
ตาราง 8.9 ประเภทข้อความธรรมดา
ประเภท |
ช่วงข้อมูล |
คำอธิบาย |
[NATIONAL]
CHAR (M) [BINARY] |
1 ถึง 255 ตัวอักษร |
ความยาวตายตัวตาม M โดย M อยู่ระหว่าง 1 ถึง 255 คีย์เวิร์ด NATIONAL ระบุชุดตัวอักษรเริ่มต้น นี่เป็นค่าเริ่มต้นใน MySQL แต่รวมอยู่ในมาตรฐาน ANSI SQL คีย์เวิร์ด BINARY ระบุข้อมูลต้องได้รับการปฏิบัติเป็นไม่ใช่ case sensitive (ค่าเริ่มต้นเป็น case sensitive ) |
[NATIONAL]
VARCHAR (M) [BINARY] |
1 ถึง 255 ตัวอักษร |
เหมือนกับ CHAR ยกเว้นความยาวแปรผัน |
ตาราง 8.10 แสดงประเภทข้อมูล TEXT และ BLOB ค่ายาวที่สุดของฟิลด์ TEXT เป็นขนาดไบต์มากที่สุดของไฟล์ที่สามารถเก็บในฟิลด์นั้น
ประเภท |
ช่วงความยาวมากที่สุด (ตัวอักษร) |
คำอธิบาย |
TINYBLOB |
2 8 -1 (คือ 255) |
ฟิลด์ BLOB ขนาดเล็ก |
TINYTEXT |
2 8 -1 (คือ 255) |
ฟิลด์ TEXT ขนาดเล็ก |
BLOB |
2 16 -1 (คือ 65,535) |
ฟิลด์ BLOB ขนาดปกติ |
TEXT |
2 16 -1 (คือ 65,535) |
ฟิลด์ TEXT ขนาดปกติ |
MEDIUMBLOB |
2 24 -1 (คือ 16,777,215) |
ฟิลด์ BLOB ขนาดกลาง |
MEDIUMTEXT |
2 24 -1 (คือ 16,777,215) |
ฟิลด์ TEXT ขนาดกลาง |
LONGBLOB |
2 32 -1 (คือ 4,294,967,295) |
ฟิลด์ BLOB ขนาดใหญ่ |
LONGTEXT |
2 32 -1 (คือ 4,294,967,295) |
ฟิลด์ TEXT ขนาดใหญ่ |
ตาราง 8.11 แสดงประเภทข้อมูล ENUM และ SET
ประเภท |
ช่วงค่ามากที่สุดในชุด |
คำอธิบาย |
ENUM (value1', value2',
) |
65,535 |
คอลัมน์ประเภทนี้สามารถเก็บเพียงค่าเดียวของรายการ หรือค่าว่าง |
SET (value1', value2',
) |
64 |
คอลัมน์ประเภทนี้สามารถเก็บชุดของค่าที่ระบุ หรือค่าว่าง |
|