วันอังคารที่ 29 มกราคม พ.ศ. 2556

Docsis กับ ADSL ต่างกันอย่างไรแล้วที่บ้านจะติดอะไรดี ???

สวัสดีครับวันนี้ไปอ่านเจอบทความที่น่าสนใจมาสองบทความครับ  เลยขออนุญาตนำมา Share ให้ผู้อ่านได้เรียนรู้กันไว้

บทความแรก  :  Docsis กับ ADSL ต่างกันอย่างไรแล้วที่บ้านจะติดอะไรดี ???

บทความสอง : ทำความรู้จักกับระบบ Speedboost ใน Docsis ของ True Internet



ที่มา : เว็บ freeware.in.th โดย อ.ศุภเดช แห่งรายการแบไต๋ไฮเทค นั่นเองครับ

วันศุกร์ที่ 4 มกราคม พ.ศ. 2556

MySQL Data Type คืออะไร ???

สวัสดีครับทุกท่านที่แวะมาเยี่ยมชม

วันนี้เรามาเรียนรู้เรื่อง MySQL Data Type กันว่ามีอะไรบ้างและแต่ละอย่างแตกต่างกันอย่างไร เพื่อที่จะได้เลือก Data Type [ชนิดของข้อมูล] ได้อย่างถูกต้องและเหมาะสมเวลาที่เราทำการออกแบบฐานข้อมูลครับ

บทความชิ้นนี้เขียนขึ้นมาเพราะต้องทำการบ้านส่งอาจารย์ครับ 555+ ก็เลยรวบรวมเอาข้อมูลจากหลาย ๆ เว็บมาปรับปรุงขึ้นใหม่  พร้อมแล้วเราไปดูกันเลยครับว่า Data Type ใน MySQL นั้นมีอะไรบ้าง

Data Type ใน MySQL เราแบ่งหลักๆได้เป็น 3 ประเภท คือ

  1. Numeric เอาไว้จัดเก็บตัวเลข
  2. Date and Time เอาไว้จัดเก็บ วัน , เวลา
  3. String เอาไว้จัดเก็บ ตัวหนังสือ ตัวอักษรต่างๆ

ประเภท Numeric มีดังนี้

Type

คำอธิบาย

ขนาดพื้นที่
ที่ใช้เก็บ

TINYINT(M) สำหรับเก็บข้อมูลชนิดตัวเลข จำนวนเต็มไม่มีทศนิยม
signed คือ  -128 ถึง 127
unsigned คือ 0 ถึง 255
1 bytes
SMALLINT(M) สำหรับเก็บข้อมูลชนิดตัวเลข จำนวนเต็มไม่มีทศนิยม
signed คือ -32768 ถึง 32767
unsigned คือ 0 ถึง 65535
2 bytes
MEDIUMINT(M) สำหรับเก็บข้อมูลชนิดตัวเลข จำนวนเต็มไม่มีทศนิยม
signed คือ -8388608 ถึง 8388607
unsigned คือ 0 ถึง 16777215
3 bytes
INT(M) สำหรับเก็บข้อมูลชนิดตัวเลข จำนวนเต็มไม่มีทศนิยม
signed คือ -2147483648 ถึง 2147483647
unsigned คือ 0 ถึง 4294967295
4 bytes
BIGINT(M) สำหรับเก็บข้อมูลชนิดตัวเลข จำนวนเต็มไม่มีทศนิยม
signed คือ -9223372036854775808 ถึง 9223372036854775807
unsigned คือ 0 ถึง 18446744073709551615
8 bytes
FLOAT(M,D) สำหรับเก็บข้อมูลชนิดตัวเลขมีทศนิยม
signed คือ -3.402823466E+38 ถึง -1.175494351E-38, 0
unsigned คือ 1.175494351E-38 ถึง 3.402823466E+38
4 bytes
DOUBLE(M,D) สำหรับเก็บข้อมูลชนิดตัวเลขมีทศนิยม
signed คือ -1.7976931348623157E+308 ถึง -2.2250738585072014E-308, 0
unsigned คือ 2.2250738585072014E-308 ถึง 1.7976931348623157E+308
8 bytes
DECIMAL(M,D) เปลี่ยนแปลงได้ ขึ้นอยู่กับความยาวของตัวเลข (M) ค่าที่ระบุจำนวนตัวเลขที่ต้องการเก็บ เช่น (M) คือ 30 ก็เก็บเลขได้ 30 หลัก (ตั้งแต่ MySQL 5.0.3) สูงสุดที่ 30 หลัก (M+7)/8
BIT (M) ใส่ค่า bit ใส่ได้ ตั้งแต่ 1 ถึง 64 (ตั้งแต่ MySQL 5.0.3)  

สำหรับค่าตัวเลขสามารถกำหนดความยาวของตัวเลขและจำนวนหลังจุดทศนิยมได้ ขึ้นอยู่กับเป็นข้อมูลชนิดใด ในที่นี้จะแทนด้วยตัว

M คือ ค่าความยาวของตัวเลขรวมจุดทศนิยม
D คือ จำนวนตัวเลขหลังจุดทศนิยม

  • unsigned คือ ไม่ติดลบ หรือไม่มีเครื่องหมาย
  • unsigned zerofill คือ ไม่ติดลบ แต่ว่าหากข้อมูลที่กรอกเข้ามาไม่ครบตามจำนวน หลักที่เรากำหนด ตัว MySQL จะทำการเติม 0 ให้ครบหลักเอง เช่น ถ้ากำหนดให้ใส่ได้ 3 หลัก แล้วทำการเก็บข้อมูล 25 เข้าไป เวลาที่สืบค้นดู เราจะได้ค่าออกมาเป็น 025
  • signed คือ ค่าติดลบ หรือมีเครื่องหมาย

ปกติที่เราสร้าง field จะถูกกำหนดเป็น signed โดยอัตโนมัติครับ

ประเภท Date and Time มีดังนี้

Type

คำอธิบาย

ขนาดพื้นที่
ที่ใช้เก็บ

DATE สำหรับเก็บข้อมูลประเภทวันที่ โดยเก็บได้จาก 1 มกราคม ค.ศ. 1000 ถึง 31 ธันวาคม ค.ศ. 9999 โดยจะแสดงผลในรูปแบบ YYYY-MM-DD 3 bytes
TIME สำหรับเก็บข้อมูลประเภทเวลา มีค่าได้ตั้งแต่ -838:59:59 ไปจนถึง 838:59:59 โดยจะแสดงผล ออกมาในรูปแบบ HH:MM:SS 3 bytes
DATETIME

สำหรับเก็บข้อมูลประเภทวันที่ และเวลา โดยจะเก็บได้ตั้งแต่ 1 มกราคม ค.ศ. 1000 เวลา 00:00:00 ไปจนถึง 31 ธันวาคม ค.ศ. 9999 เวลา 23:59:59 โดยรูปแบบการแสดงผล เวลาที่ทำการสืบค้น (query) ออกมา จะเป็น YYYY-MM-DD HH:MM:SS

8 bytes
TIMESTAMP[(M)] สำหรับเก็บข้อมูลประเภทวันที่ และเวลาเช่นกัน แต่จะเก็บในรูปแบบของ YYYYMMDDHHMMSS หรือ YMMDDHHMMSS หรือ YYYYMMDD หรือ YYMMDD แล้วแต่ ว่าจะระบุค่า M เป็น 14, 12, 8 หรือ 6 ตามลำดับ สามารถเก็บได้ตั้งแต่วันที่ 1 มกราคม ค.ศ. 1000 ไป จนถึงประมาณปี ค.ศ. 2037 4 bytes
YEAR[(2|4)] สำหรับเก็บข้อมูลประเภทปี ในรูปแบบ YYYY หรือ YY แล้วแต่ว่าจะเลือกโดยหากเลือกเป็น 4 หลัก จะเก็บค่าได้ตั้งแต่ ค.ศ. 1901 ถึง 2155 แต่ หากเป็น 2 หลัก จะเก็บตั้งแต่ ค.ศ. 1970 ถึง 2069 1 bytes

ประเภท String  มีดังนี้

Type

คำอธิบาย

ขนาดพื้นที่
ที่ใช้เก็บ

CHAR(M) สำหรับเก็บข้อมูลประเภทตัวอักษร ขนาดตามค่า M แต่ไม่เกิน 255 ตัวอักษร M bytes
VARCHAR(M) สำหรับเก็บข้อมูลประเภทตัวอักษร ทุกครั้งที่เลือกชนิดของฟิลด์เป็นประเภทนี้ จะต้องมี การกำหนดความยาวของข้อมูลลงไปด้วย ซึ่งสามารถกำหนดค่าได้ตั้งแต่ 1 - 255 ฟิลด์ชนิดนี้ เหมาะ สำหรับการเก็บข้อมูลสั้นๆ เช่น ชื่อ นามสกุล (ตั้งแต่ MySQL เวอร์ชั่น 5.0.3 ขึ้นไปสามารถเก็บได้ 0 – 65,535 ตัวอักษร) L+1 / L+2 bytes
TINYTEXT เป็น case-insensitive สามารถเก็บข้อมูล ได้ 255 ตัวอักษร L+1 bytes
TINYBLOB เป็น case-sensitive สำหรับการเรียงและเปรียบเทียบ สามารถเก็บข้อมูล ได้ 255 ตัวอักษร L+1 bytes
TEXT เป็น case-insensitive สำหรับเก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่สามารถเก็บได้มากขึ้น โดย สูงสุดคือ 65,535 ตัวอักษร เหมาะสำหรับเก็บข้อมูลพวกเนื้อหาต่างๆ ที่ยาวๆ L+2 bytes
BLOB เป็น case-sensitive สำหรับการเรียงและเปรียบเทียบ สามารถเก็บข้อมูล ได้สูงสุดคือ 65,535 ตัวอักษร L+2 bytes
MEDIUMTEXT เป็น case-insensitive เก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่เก็บข้อมูลได้ 16,777,215 ตัวอักษร L+3 bytes
MEDIUMBLOB เป็น case-sensitive เก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่เก็บข้อมูลได้ 16,777,215 ตัวอักษร L+3 bytes
LONGTEXT เป็น case-insensitive เก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่เก็บข้อมูลได้ 4,294,967,295 ตัวอักษร L+4 bytes
LONGBLOB เป็น case-sensitive เก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่เก็บข้อมูลได้ 4,294,967,295 ตัวอักษร L+4 bytes
ENUM(‘value1’,’value2’,…) เป็นการเก็บข้อมูลสตริงเข้าไว้เป็นรายการไว้ก่อน โดยค่าแรกถูกแทนด้วยค่า 1 หากรายการไม่ตรงกับรายการใดเลย จะแทนด้วยค่า 0 หรือจะใส่เป็นค่าตรงๆเลยก็ได้ ข้อมูลชนิดนี้จะช่วยลดพื้นที่การจัดเก็บได้อย่างมาก เหมาะกับการเลือกแบบลิสต์บ็อกซ์ เพราะเลือกได้เพียง 1 ตัวเลือกเท่านั้น ENUM เก็บค่ารายการได้สูงถึง 65535 ตัวเลือก 1 – 2 bytes
SET(‘value1’,’value2’,…) คล้ายกับ ENUM แต่เลือกรายการได้มากกว่าหนึ่งตัวเลือก จะใช้เลขฐานสองเก็บค่าตัวเลือก โดยรายการแรกมีค่า 1, 2, 4, 8, 16, 32,... ไปเรื่อยๆ ถ้าเลือกรายการไหนก็เอามาบวกกันจะได้ค่าที่จะเก็บบันทึก เหมาะกับการเลือกแบบเช็คบ็อกซ์ เพื่อให้ผู้ตอบเลือกได้มากกว่า 1 ตัวเลือก SET เก็บค่ารายการได้เพียง 64 ตัวเลือก 8 bytes
BOOL เหมือนกับ TINYINT แต่เก็บค่าเป็น 0 กับ 1 ซึ่ง 0 คือ เท็จ 1 คือ จริง  
BINARY(M) เหมือนกับชนิด CHAR แต่เก็บเป็นแบบ case-insensitive M bytes
VARBINARY(M) เหมือนกับชนิด VARCHAR แต่เก็บเป็นแบบ case-insensitive L+1 / L+2 bytes

L คือ ตัวอักษรที่ใช้จริง

  • case-sensitive คือ ตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กมีความหมายแตกต่างกัน
  • case-insensitive คือ ไม่คำนึงถึงตัวอักษรตัวพิมพ์ใหญ่หรือพิมพ์เล็ก


แหล่งอ้างอิง