MySQL

Home

MySQL Tutorial
Knowledge Developer Database Internet Resource
การสร้างฐานข้อมูลเว็บ
1.สร้างฐานข้อมูล
2.แนะนำระบบสิทธิของ MySQL
3.การกำหนดผู้ใช้สำหรับเว็บ
4.การใช้ฐานข้อมูลที่ถูกต้อง
5. Identifiers และประเภทข้อมูล
 
MySQL
1. การออกแบบฐานข้อมูลเว็บ
2. การสร้างฐานข้อมูลเว็บ
 

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

คอลัมน์ประเภทนี้สามารถเก็บชุดของค่าที่ระบุ หรือค่าว่าง

 

  

สงวนลิขสิทธิ (C) widebase