เข้าสู่ระบบ

รู้จักกับ MySQL

โดย กลุ่มพัฒนาการบริหารข้อมูล ศูนย์เทคโนโลยีสารสนเทศและการสื่อสาร
สำนักงานปลัดกระทรวงสาธารณสุข

 

มาทำความรู้จักกับ MySQL

           

MySQL (อ่านว่ามาย-เอส-คิว-แอล”) จัดเป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS: Relational Database Management System) ตัวหนึ่ง ซึ่งเป็นที่นิยมกันมากในปัจจุบัน โดยเฉพาะอย่างยิ่งในโลกของอินเตอร์เน็ต สาเหตุเพราะว่า MySQL เป็นฟรีแวร์ทางด้านฐานข้อมูลที่มีประสิทธิภาพสูง เป็นทางเลือกใหม่จากผลิตภัณฑ์ระบบจัดการฐานข้อมูลในปัจจุบันที่มักจะเป็นการผูกขาดของผลิตภัณฑ์เพียงไม่กี่ตัว นักพัฒนาระบบฐานข้อมูลที่เคยใช้ MySQL ต่างยอมรับในความสามารถความรวดเร็ว การรองรับจำนวนผู้ใช้และขนาดของข้อมูลจำนวนมหาศาล ทั้งยังสนับสนุนการใช้งานบนระบบปฏิบัติการมากมาย ไม่ว่าจะเป็น Unix, OS/2, Mac OS หรือ Windows ก็ตาม นอกจากนี้ MySQL ยังสามารถใช้งานร่วมกับ Web Development Platform ทั้งหลาย ไม่ว่าจะเป็น C, C++, Java, Perl, PHP, Python, Tcl หรือ ASP ก็ตามที ดังนั้นจึงไม่เป็นที่น่าแปลกใจเลยว่า ทำไม MySQL จึงได้รับความนิยมอย่างมากในปัจจุบัน และมีแนวโน้มสูงยิ่งขึ้นต่อๆ ไปในอนาคต MySQL จัดเป็นซอฟต์แวร์ประเภท Open Source Software สามารถดาวน์โหลด Source Code ต้นฉบับ ได้จากอินเตอร์เน็ต โดยไม่เสียค่าใช้จ่ายใดๆ การแก้ใขก็สามารถกระทำได้ตามความต้องการ MySQL ยึดถือสิทธิบัตรตาม GPL (GNU General Public License) ซึ่งเป็นข้อกำหนดของซอฟต์แวร์ประเภทนี้ส่วนใหญ่ โดยจะเป็นการชี้แจงว่าสิ่งใดทำได้ หรือทำไม่ได้สำหรับการใช้งานในกรณีต่างๆ ทั้งนี้ถ้าต้องการข้อมูลเพิ่มเติม หรือรายละเอียดของ GPL สามารถหาข้อมูลได้จากเว็บไซต์ http://www.gnu.org/

 

MySQL ได้รับการยอมรับและทดสอบเรื่องของความรวดเร็วในการใช้งาน โดยจะมีการทดสอบและเปรียบเทียบกับผลิตภัณฑ์ทางด้านฐานข้อมูลอื่นอยู่เสมอ มีการพัฒนาอย่างต่อเนื่อง โดยเริ่มตั้งแต่เวอร์ชันแรกๆ ที่ยังไม่ค่อยมีความสามารถมากนัก มาจนถึงทุกวันนี้ MySQL ได้รับการพัฒนาให้มีความสามารถมากยิ่งขึ้น รองรับข้อมูลจำนวนมหาศาล สามารถใช้งานหลายผู้ใช้ได้พร้อมๆ กัน (Multi-user) มีการออกแบบให้สามารถแตกงานออก เพื่อช่วยการทำงานให้รวดเร็วยิ่งขึ้น (Multi-threaded) วิธีและการเชื่อมต่อที่ดีขึ้น การกำหนดสิทธิและการรักษาความปลอดภัยของข้อมูลมีความรัดกุมน่าเชื่อถือยิ่งขึ้นเครื่องมือหรือโปรแกรมสนับสนุนทั้งของตัวเองและของผู้พัฒนาอื่นๆ มีมากยิ่งขึ้น

นอกจากนี้สิ่งหนึ่งที่สำคัญคือ MySQL ได้รับการพัฒนาไปในแนวทางตามข้อกำหนดมาตรฐาน SQL ดังนั้น เราสามารถใช้คำสั่ง SQL ในการทำงาน MySQL ได้ นักพัฒนาที่ใช้ SQL มาตรฐานอยู่แล้ว ไม่ต้องศึกษาคำสั่งเพิ่มเติม แต่อาจจะต้องเรียนรู้ถึงรูปแบบและข้อจำกัดบางอย่างโดยเฉพาะ ทั้งนี้ทั้งนั้น ทางทีมงานผู้พัฒนา MySQL มีเป้าหมายอย่างชัดเจนที่จะพัฒนาให้ MySQL มีความสามารถสนับสนุนตามข้อกำหนด SQL92 มากที่สุด และจะพัฒนาให้เป็นไปตามข้อกำหนด SQL99 ต่อไป

(Real-world Application) ก็มักจะแยก Client และ Server ออกเป็นคนละเครื่องกัน และสามารถรองรับงานได้ดีมากกว่า ดังนั้น ผู้บริหารระบบหรือผู้กำหนดนโยบายสำหรับการทำงานเครือข่าย จะต้องคำนึงถึงเรื่องที่เกี่ยวข้องเหล่านี้ให้ดี เพื่อที่จะทำให้ระบบมีการทำงานรับการให้บริการแก่ผู้ใช้อย่างมีประสิทธิภาพและข้อมูลมีความปลอดภัยมากที่สุด

 

MySQL กับมาตราฐานภาษา SQL

จุดมุ่งหมายหนึ่งของทีมผู้พัฒนา MySQL ต้องการทำให้ MySQL เป็น DB Server ตามข้อกำหนด ANSI SOL โดยในขั้นแรกนี้อ้างอิงตาม ANSI SQL92 เป็นหลัก ความสามารถต่างๆ โดยส่วนใหญ่ครอบคลุมการใช้งาน อาจจะมีบางสิ่งที่ยังไม่สามารถทำได้ในปัจจุบัน หรือบางสิ่งก็มีแผนจะเพิ่มเติมเข้าไป ซึ่งได้กล่าวถึงรายละเอียดไปแล้วข้างต้น แต่ในส่วนนี้เราจะมาดูสำหรับความสามารถบางอย่างที่ MySQL เพิ่มเติมเข้ามาสำหรับการทำงาน นอกเหนือจากข้อกำหนด ANSI SQL ดังนี้

  • ฟิลด์ประเภท MEDIUMINT, SET, ENUM และ BLOB รวมทั้ง TEXT ต่างๆ
  • การกำหนดคุณลักษณะของฟิลด์ เช่น AUTO_INCREMENT, BINARY, NULL, UNSIGNED และ ZEROFILL
  • การเปรียบเทียบสตริงเป็นแบบ Case Insensitive การจัดเรียงข้อมูลใช้รูปแบบภาษา ISO-8859-1 (Latin1) เป็นค่า default
  • ชื่อ database และชื่อตารางข้อมูลจะ Case Sensitive (โดยเฉพาะ Unix Platform)
  • สามารถใช้คำสั่งของระบบปฏิบัติในการสำรอง เปลี่ยนชื่อ ย้าย ลบ หรือคัดลอกตารางข้อมูลซึ่งเกี่ยวข้องกับไฟล์ .MYD, .MYI และ .frm ได้โดยตรง
  • MySQL ไม่สนับสนุน Tablespaces
  • โอเปอเรเตอร์ LIKE สามารถใช้กับ Numeric Columns ได้
  • การใช้ INTO OUTFILE และ STRAIGHT_JOIN ในคำสั่ง SELECT
  • สามารถใช้ SQL_SMALL_RESULT option ในคำสั่ง SELECT ได้
  • คำสั่ง EXPLAIN SELECT เพื่อให้แสดงรายละเอียดของการเชื่อมกันของตารางข้อมูล
  • สามารถใช้ TEMPORARY หรือ IF NOT EXISTS สำหรับการ CREATE TABLE ได้
  • สามารถทำการ CHANGE ชื่อคอลัมน์, DROP ชื่อคอลัมน์ หรือ DROP INDEX, IGNORE หรือ RENAME ในการใช้คำสั่ง ALTER TABLE ได้
  • สามารถทำการ RENAME TABLE ได้
  • สามารถ ADD, ALTER, DROP หรือ CHANGE clauses หลายครั้ง ในคำสั่ง ALTER TABLE ได้
  • สามารถทำการ DROP TABLE ด้วยคีย์เวิร์ด IF EXISTS
  • สามารถทำการดรอป (Drop) ตารางข้อมูลหลายๆ ตารางได้ด้วยคำสั่ง DROP TABLE เพียงครั้งเดียว
  • การใช้ LIMIT clause ในคำสั่ง DELETE
  • การใช้ DELAYED clause ในคำสั่ง INSERT และ REPLACE
  • การใช้ LOW_PRIORITY clause ในคำสั่ง INSERT, REPLACE, DELETE และ UPDATE
  • การใช้งาน LOAD DATA INFILE ซึ่งไวยากรณ์ใช้ได้กับรูปแบบการโหลดดาต้า (Load Data) ของ Oracle
  • คำสั่ง ANALYZE TABLE, CHECK RABLE, OPTIMIZE TABLE และ REPAIR TABLE
  • คำสั่ง SHOW
  • คำสั่ง SET OPTION
  • ฟังก์ชันหลายฟังก์ชันที่จำเป็น เช่น ฟังก์ชันสำหรับทำงานสตริง ซึ่งสามารถใช้ได้ทันที เนื่องจากมีชื่อและการทำงานที่เหมือนกันของ ANSI SQL และ ODBC
  • สามารถใช้ || แทน OR และ && แทน AND ซึ่งเหมือนกับในภาษา C แต่ไม่สามารถใช้ในการเชื่อมสตริงได้ ซึ่ง MySQL ให้ใช้ฟังก์ชัน CONCAT() แทน
  • คำสั่งในการ CREATE DATABASE หรือ DROP DATABASE
  • การใช้โอเปอเรเตอร์ % โดยจะให้ผลลัพธ์เดียวกันการใช้ฟังก์ชัน MOD() ตัวอย่าง เช่น M % N = MOD(M,N) เป็นต้น
  • โอเปอเรเตอร์ =, < >, <=, <, >=>, <<, >>, <=>, AND, OR หรือ LIKE สามารถใช้ในการเปรียบเทียบคอลัมน์ในการใช้คำสั่ง SELECT ได้ ทั้งนี้จะอยู่ทางด้านหน้า FROM ดังตัวอย่างเช่น SELECT id = 12345 AND name=’somchai’ FROM person;
  • ฟังก์ชัน LAST_INSERT_ID()
  • ฟังก์ชัน BIT_COUNT(), CASE, ELT(), FROM_DATS(), FORMAT(), IF(), PASSWORD(),ENCRYPT(), md5(), ENCODE(), DECODE(), PERIOD_ADD(), PERIOD_DIFF(),TO_DAYS(), หรือ WEEKDAY()
  • ฟังก์ชัน TRIM() เพื่อการตัดส่วนของสตริง ซึ่งใน ANSI SQL จะตัดได้เพียงหนึ่งตัวอักษรเท่านั้น
  • GROUP BY function STD(), BIT_OR() และ BIT_AND()
  • การใช้คำสั่ง REPLACE แทนการใช้คำสั่ง DELETE ตามด้วยคำสั่ง INSERT
  • คำสั่ง FLUSH flush_option
  • การใช้ตัวแปร sql statement ด้วย := ตัวอย่างเช่น SELECT @asum:=SUM (total), @cnt:=COUNT(*), @asum/@cnt AS avg FROM person;


ประเภทข้อมูล MySQL

 

ในส่วนนี้จะกล่าวถึงรายละเอียดของประเภทข้อมูลที่สามารถกำหนดให้แต่ล่ะฟิลด์ ซึ่งสำหรับระบบฐานข้อมูล MySQL จะมีส่วนที่สนับสนุนกับมาตรฐาน และส่วนที่แตกต่าง เพิ่มเติมจากมาตรฐาน และประเภทตารางข้อมูลที่สามารถเลือกใช้ได้ใน MySQL การศึกษาเรียนรู้ถึงประเภทข้อมูลใน MySQL จะทำให้เราเข้าใจ และสามารถทำการกำหนดประเภทของ ข้อมูลให้ถูกต้องเหมาะสมตามจุดประสงค์ หรือตามนโยบายการทำงานของเรา มิฉะนั้นแล้วอาจก่อให้เกิดความเสียหาย หรือทำให้เกิดข้อจำกัดในเรื่องข้อมูลของการทำงานได้ การศึกษาในเรื่องของประเภทข้อมูลใน MySQL ก็มีจุดประสงค์เช่นเดียวกัน ซึ่งจะได้ศึกษาในรายละเอียดต่อไป

หลักการพิจารณาเลือกใช้ประเภทข้อมูล ดังนี้

1. ประเภทข้อมูลหลัก ได้แก่ ตัวเลข, ตัวอักษร, วันที่และเวลา, ข้อมูลไบนารี และอื่นๆ

2. ในแต่ละประเภทข้อมูล จะมีประเภทย่อยๆ ลงไปอีก เพื่อให้ผู้ใช้เลือกใช้ประเภทข้อมูลที่เหมาะสม เพราะนอกจากจะทำงานได้ถูกต้องแล้ว ยังเป็นการช่วยประหยัดเนื้อที่การเก็บข้อมูลอีกด้วย ซึ่งต่อไปเราจะได้ศึกษาเพิ่มเติมว่าในแต่ละประเภทข้อมูลเป็นอย่างไร มีขอบเขตข้อมูลอะไรบ้าง ใช้เนื้อที่ในการเก็บข้อมูลเท่าไร

3. การเลือกใช้ประเภทข้อมูล หากมีความต้องการที่จะสนับสนุนหรือใช้มาตรฐาน เช่น ODBC หรือ ต้องการ port ข้อมูลไปใช้ในระบบอื่น ควรเลือกใช้ประเภทข้อมูลที่สนับสนุนกับมาตรฐานเท่านั้น เพื่อป้องกันความผิดพลาดที่อาจจะเกิดขึ้นต่อไปในอนาคต

4. ฟิลด์ใดที่ไม่มีการคำนวณ หรือไม่มีแนวโน้มจะเกี่ยวข้องกับการคำนวณเลย ควรเลือกใช้ข้อมูลประเภทตัวอักษร เพราะจะประหยัดเนื้อที่ในการจัดเก็บจริง

5. การเลือกใช้ประเภทของข้อมูลในแต่ละฟิลด์ นอกจากจะดูความเป็นไปได้ในปัจจุบันแล้ว จะต้องคำนึงและดูแนวโน้มความเป็นไปของข้อมูล หรือปริมาณของข้อมูลต่อไปในอนาคตด้วย เพื่อป้องกันข้อจำกัดของข้อมูลเมื่อมีการขยายตัวเพิ่มขึ้น

6. การเลือกใช้ข้อมูลประเภทวันที่และเวลาใน MySQL จะต้องเลือกใช้อย่างระมัดระวัง เนื่องจากมีข้อจำกัดและรายละเอียดที่แตกต่างไปจากมาตรฐาน เช่น จะสามารถใช้ข้อมูลเริ่มต้นได้ที่ปี ค.. 1000 เท่านั้น เป็นต้น

ประเภทข้อมูลใน MySQL แบ่งออกเป็นกลุ่มได้ ดังนี้

1. ประเภทข้อมูลสำหรับตัวเลข
ไว้สำหรับเก็บข้อมูลตัวเลข ซึ่งอาจจะใช้ในการคำนวณ หรือการจัดเรียงข้อมูลเปรียบเทียบกันในฟิลด์นั้นๆ ประกอบด้วยประเภทข้อมูลย่อยๆ ได้แก่ จำนวนเต็ม
, จำนวนทศนิยม, จำนวนจริง

i. TINYINT[(M)] [UNSIGNED] [ZEROFILL]
ข้อมูลชนิดตัวเลขแบบคิดเครื่องหมาย จะใช้ได้ตั้งแต่ –128 ถึง 127 แต่ถ้าแบบไม่คิดเครื่องหมาย จะใช้ได้ ตั้งแต่ 0 ถึง 255 ข้อมูลชนิดที่ใช้เนื้อที่เก็บข้อมูลขนาด 1 ไบต์

ii. SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
ข้อมูลชนิดตัวเลขแบบคิดเครื่องหมาย จะใช้ได้ตั้งแต่ –32768 ถึง 32767 แต่ถ้าแบบไม่คิดเครื่องหมาย จะใช้ได้ตั้งแต่ 0 ถึง 65535 ข้อมูลชนิดนี้ใช้เนื้อที่เก็บข้อมูลขนาด 2 ไบต์

iii. MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
ข้อมูลชนิดตัวเลขแบบคิดเครื่องหมาย จะใช้ได้ตั้งแต่ –8388608 ถึง 8388607 แต่ถ้าแบบไม่คิด เครื่องหมาย จะใช้ได้ตั้งแต่ 0 ถึง 16777215 ข้อมูลชนิดนี้ใช้เนื้อที่เก็บข้อมูลขนาด 3 ไบต์

iv. INT[(M)] [UNSIGNED] [ZEROFILL] หรือ INTEGER[(M)] [UNSIGNED] [ZEROFILL]
ข้อมูลชนิดตัวเลขแบบคิดเครื่องหมาย จะใช้ได้ตั้งแต่ –2147483648 ถึง 2147483647 แต่ถ้าแบบไม่คิดเครื่องหมาย จะใช้ได้ตั้งแต่ 0 ถึง 4294967295 ข้อมูลชนิดนี้ใช้เนื้อที่เก็บข้อมูลขนาด 4 ไบต์

v. BIGINT[(M)] [UNSIGNED] [ZEROFILL]
ข้อมูลชนิดตัวเลขแบบคิดเครื่องหมาย จะใช้ได้ตั้งแต่ –9223372036854775808 ถึง 9223372036854775807 แต่ถ้าแบบไม่คิดเครื่องหมาย จะใช้ได้ตั้งแต่ 0 ถึง 18446744073709551615 ข้อมูลชนิดนี้ ใช้เนื้อที่เก็บข้อมูลขนาด 8 ไบต์

vi. FLOAT(precision) [ZEROFILL]
ข้อมูลชนิดตัวเลขแบบคิดเครื่องหมาย precision เป็นค่าความละเอียดทศนิยม ซึ่งแบ่งเป็นชนิด single (มี ค่าตั้งแต่ 0-24) และแบบ double (ตั้งแต่ 25-53) ข้อมูลชนิดนี้ใช้เนื้อที่เก็บข้อมูลขนาด 4 หรือ 8 ไบต์ โดยแบบsingle จะใช้ 4 ไบต์ และแบบ double จะใช้ 8 ไบต์ ชนิดข้อมูลประเภทนี้สำหรับกรณีใช้กับ ODBC มาตรฐาน

vii. FLOAT[(M,D)] [ZEROFILL]
ข้อมูลชนิดตัวเลขแบบคิดเครื่องหมาย จะใช้ได้ตั้งแต่ -3.402823466E+38 ถึง -1.175494351E -38,0 และ 1.175494351E-39 ถึง 3.402823466E+38 ค่า M เป็นจำนวนหลักที่ต้องการแสดงผล และ D เป็นจำนวนจุดทศนิยม ข้อมูลชนิดนี้ใช้เนื้อที่เก็บข้อมูลขนาด 4 ไบต์

viii. DOUBLE[(M,D)] [ZEROFILL] หรือ DOUBLE PRECISION[(M,D)] [ZEROFILL] หรือ REAL[(M,D)] [ZEROFILL]
ข้อมูลชนิดตัวเลขแบบคิดเครื่องหมาย จะใช้ได้ตั้งแต่
–1.7976931348623157E+308 ถึง -2.2250738585072014E-308, 0 และ 2.2250738585072014E-308 ถึง 1.7976931348623157E+308 ค่า M เป็นจำนวนหลักที่ต้องการแสดงผล และ D เป็นจำนวนจุดทศนิยม ข้อมูลชนิดนี้ใช้เนื้อที่เก็บข้อมูล ขนาด 8 ไบต์

ix. DECIMAL[(M[,D])] [ZEROFILL] หรือ NUMERIC[M,D] [ZEROFILL]
ข้อมูลชนิดตัวเลขชนิด unpacked คืออนุญาตให้สามารถเก็บข้อมูลตัวอักษรเข้าไปด้วย โดยตัวอักษรหนึ่ง ตัวแทนแต่ละหลัก สามารถใช้ตัวเลขได้เท่ากับแบบ DOUBLE ใช้เนื้อที่เก็บข้อมูลเท่ากับ M ไบต์ (D+2, ถ้า M < D)

2. ประเภทข้อมูลสำหรับวันที่และเวลา

i. DATE
ข้อมูลชนิดวันที่ ตั้งแต่วันที่ 1 มกราคม ค.. 1000 ถึง 31 ธันวาคม ค.. 9999 การแสดงผลวันที่อยู่ใน รูปแบบ ‘YYYY-MM-DD’ ข้อมูลชนิดนี้ใช้เนื้อที่เก็บข้อมูลขนาด 3 ไบต์

ii. DATETIME
ข้อมูลชนิดวันที่และเวลา ตั้งแต่วันที่ 1 มกราคม ค.. 1000 เวลา 00:00:00 ถึง 31 ธันวาคม ค.. 9999 เวลา 23:59:59 การแสดงผลวันที่และเวลาอยู่ในรูปแบบ ‘YYYY-MM-DD HH:MM:SS’ ข้อมูลชนิดนี้ใช้เนื้อที่เก็บ ข้อมูลขนาด 8 ไบต์

iii. TIMESTAMP[(M)]
ค่า timestamp เป็นค่าตัวเลขที่นับจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม ค.. 1000 เวลา 00:00:00 เป็นต้นมา โดยมีจุดสิ้นสุดประมาณ ค.. 2037 การแสดงผลค่า timestamp อยู่ในรูปแบบ YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD หรือ YYMMDD ค่า M คือจำนวนตัวเลขที่บรรจุ ซึ่งอาจจะเป็น 14, 12, 8 หรือ 6 ข้อมูลชนิดนี้ใช้เนื้อที่เก็บข้อมูลขนาด 4 ไบต์

iv. TIME
ข้อมูลประเภทเวลา สามารถเป็นได้ตั้งแต่ ‘-838:59:59’ ถึง ‘838:59:59’ แสดงผลในรูปแบบ HH:MM:SS ข้อมูลชนิดนี้ใช้เนื้อที่เก็บข้อมูลขนาด 3 ไบต์

v. YEAR[(2/4)]
ข้อมูลประเภทปี ค.. โดยสามารถเลือกว่าจะใช้แบบ 2 หรือ 4 หลัก (ค่าโดยปริยายจะเป็น 4 หลัก) ถ้าเลือกใช้แบบ 4 หลัก จะใช้ได้ตั้งแต่ ปี ค.. 1901 ถึง 2155 ถ้าเลือกใช้แบบ 2 หลัก จะใช้ได้ตั้งแต่ ปี ค.. 1970 ถึง 2069 แสดงในรูปแบบ 70 ถึง 69 ข้อมูลชนิดนี้ใช้เนื้อที่เก็บข้อมูลขนาด 1 ไบต์

3. ประเภทข้อมูลสำหรับตัวอักษร
ข้อมูลประเภทตัวอักษรถือว่าเป็นสิ่งที่ใช้กันมากที่สุด เพราะแทบจะครอบคลุมข้อมูลที่เป็นไปได้ทั้งหมด การจัดเรียงข้อมูลจะเป็นในลักษณะไม่คำนึงตัวใหญ่ตัวเล็ก
(case-insensitive) ซึ่งเมื่อเปรียบเทียบกับข้อมูล ประเภทไบนารี (BLOB) แล้วจะพบว่าคล้ายกันมาก จะแตกต่างกันที่ BLOB จะมีการจัดเรียงข้อมูลเป็น case-insensitive เท่านั้น แต่ข้อมูลประเภทตัวอักษรก็มีรายละเอียดเพิ่มเติมไปอีก โดยมีรายละเอียดดังนี้

i. [NATIONAL] CHAR(M) [BINARY]
ข้อมูลประเภทสตริงที่จำกัดขนาดความกว้าง (ไม่สามารถปรับขนาดได้) โดยขนาดความกว้างเป็นได้ ตั้งแต่ 1 ถึง 255 ตัวอักษร ตามปกติเมื่อมีการเรียงข้อมูล จะเป็นลักษณะ case-sensitive คือคำนึงถึงตัวเล็กตัวใหญ่ การระบุชนิดข้อมูลย่อยว่าเป็น BINARY จะเป็นลักษณะไม่คำนึงตัวเล็กตัวใหญ่ ดังนั้นเมื่อมีการเรียงข้อมูลก็จะให้ผลต่างจาก CHAR ธรรมดา การเก็บข้อมูลก็ใช้ไบต์ตามจำนวนตัวอักษรที่ระบุ

ii. [NATIONAL] VARCHAR(M) [BINARY]
ข้อมูลประเภทนี้ก็คล้ายกับแบบ CHAR ต่างกันตรงที่ VARCHAR จะสามารถปรับขนาดตามข้อมูลที่เก็บในฟิลด์ ขนาดความกว้างอยู่ตั้งแต่ 1 ถึง 255 การเก็บข้อมูลจะเท่ากับของข้อมูลจริงในฟิลด์ๆ + 1 ไบต์

iii. TINYTEXT
ข้อมูลประเภทนี้สามารถใช้ความกว้างข้อมูลได้สูงสุด 255 ตัวอักษร และใช้เนื้อที่เก็บข้อมูลเท่ากับ จำนวนข้อมูลจริง + 1 ไบต์

iv. TEXT
ข้อมูลประเภทนี้สามารถใช้ความกว้างข้อมูลได้สูงสุด 65,535 ตัวอักษร และใช้เนื้อที่เก็บข้อมูลเท่ากับ จำนวนข้อมูลจริง + 2 ไบต์

v. MEDIUMTEXT
ข้อมูลประเภทนี้สามารถใช้ความกว้างข้อมูลได้สูงสุด 16,777,215 ตัวอักษร และใช้เนื้อที่เก็บข้อมูล เท่ากับจำนวนข้อมูลจริง + 3 ไบต์

vi. LONGTEXT
ข้อมูลประเภทนี้สามารถใช้ความกว้างข้อมูลได้สูงสุด 4,294,967,295 ตัวอักษร และใช้เนื้อที่เก็บข้อมูล เท่ากับจำนวนข้อมูลจริง + 4 ไบต์

vii. ENUM(‘value1’,’value2’,…)
ข้อมูลประเภทระบุเฉพาะค่าที่ต้องการ หรือถ้าไม่มีจะให้ค่า NULL สามารถกำหนดค่าได้ถึง 65,535 ค่าและใช้เนื้อที่เก็บข้อมูลตามจำนวนค่าที่ระบุ

viii. SET(‘value1’,’value2’,…)
ข้อมูลประเภทเซต ประกอบด้วยข้อมูลตั้งแต่ไม่มีค่า หรือมีค่าตามสมาชิกที่กำหนด สามารถมีจำนวนสมาชิกในเซตได้ทั้งสิ้น 64 ตัว และใช้เนื้อที่เก็บข้อมูลตามจำนวนสมาชิกที่ระบุ

4. ประเภทข้อมูลสำหรับไบนารี (BLOB:Binary Large Object) จากที่กล่าวไปแล้วถึงความคล้ายกันของแต่ล่ะข้อมูลประเภทตัวอักษรและข้อมูลประ เภทไบนารี ดังนั้น ประเภทข้อมูลย่อยและการเก็บข้อมูลจึงไม่แตกต่างกัน แต่ตามปกติเรามักใช้ BLOB สำหรับเก็บข้อมูลที่ไม่เป็นภาษามนุษย์ ข้อมูลไบนารี ได้แก่ รูปภาพ, ไฟล์ข้อมูล หรือข้อมูลที่ประกอบด้วยตัวอักษรพิเศษ ข้อมูลที่กำหนด ด้วยรหัสควบคุม เป็นต้น

i. TINYBLOB
สำหรับข้อมูลไบนารี สามารถใช้ความกว้างข้อมูลได้สูงสุด 255 ตัวอักษร และใช้เนื้อที่เก็บข้อมูลเท่ากับ จำนวนข้อมูลจริง + 1 ไบต์

ii. BLOB
สำหรับข้อมูลไบนารี สามารถใช้ความกว้างข้อมูลได้สูงสุด 65,535 ตัวอักษร และใช้เนื้อที่เก็บข้อมูล เท่ากับจำนวนข้อมูลจริง + 2 ไบต์

iii. MEDIUMBLOB
สำหรับข้อมูลไบนารี สามารถใช้ความกว้างข้อมูลได้สูงสุด 16,777,215 ตัวอักษร และใช้เนื้อที่เก็บข้อมูลเท่ากับจำนวนข้อมูลจริง + 3 ไบต์

iv. LONGBLOB
สำหรับข้อมูลไบนารี สามารถใช้ความกว้างข้อมูลได้สูงสุด 4,294,967,295 ตัวอักษร และใช้เนื้อที่เก็บข้อมูลเท่ากับจำนวนข้อมูลจริง + 4 ไบต์

Search


เงื่อนไขการให้บริการเว็บไซต์ : Website Policy : Privacy Policy Website Security Policy
Copyright© 2012 KmOps. design by กลุ่มบริหารเทคโนโลยีสารสนเทศเพื่อการจัดการ
ศูนย์เทคโนโลยีสารสนเทศและการสื่อสาร สำนักงานปลัดกระทรวงสาธารณสุข