Database SQL – Data Types

SQL data types เป็นการกำหนดชนิดของข้อมูลในตารางว่าเป็นข้อมูลแบบใด เช่น ข้อมูลตัวเลข, ตัวอักษร, วันเวลา หรือ แบบไม่มีโครงสร้าง ซึ่งสิ่งเหล่านี้จำเป็นตั้งแต่เราเริ่มสร้าง database table เพื่อให้ข้อมูลที่เราจะใส่ลงสู่ table มีความถูกต้องตามที่วางเอาไว้ อีกทั้งยังช่วยให้ฐานข้อมูลหรือ database ของเราทำงานได้ง่ายขึ้นในการจัดเก็บ และการทำดรรชนี (index) ได้เหมาะสมกับข้อมูลที่เราจะใช้งาน โดย data types บน database มีด้วยกันหลายชนิด ขึ้นอยู่กับชนิดของฐานข้อมูล หรือ database ที่เราใช้งาน

 

ตัวอย่าง data types บน database ส่วนใหญ่

Data type Description
  CHARACTER(n)   Character string จำกัดจำนวนตัวอีกษรเท่ากับ n ตัว
  VARCHAR(n) or CHARACTER VARYING(n)   Character string จำกัดจำนวนตัวอีกษรไม่มากกว่า n ตัว
  BINARY(n)   Binary string จำกัดจำนวนตัวอีกษรเท่ากับ n bytes
  VARBINARY(n) or BINARY VARYING(n)   Binary string จำกัดจำนวนตัวอีกษรไม่มากกว่า n bytes
  BOOLEAN   TRUE หรือ FALSE คือข้อมูลแบบตรรกศาสตร์
  INTEGER(p)   ตัวเลขจำนวนเต็ม p หลัก
  SMALLINT   ตัวเลขจำนวนเต็ม 5 หลัก
  INTEGER   ตัวเลขจำนวนเต็ม 10 หลัก
  BIGINT   ตัวเลขจำนวนเต็ม 19 หลัก
  DECIMAL(p,s)   ตัวเลขที่มีจำนวนทั้งหมด p หลัก เป็นทศนิยม s หลัก และ จำนวนเต็ม p-s หลัก
  NUMERIC(p,s)   ตัวเลขที่มีจำนวนทั้งหมด p หลัก เป็นทศนิยม s หลัก และ จำนวนเต็ม p-s หลัก
  FLOAT(p)   ตัวเลขค่าประมาณรูปทศนิยมจำนวน p หลัก
  REAL   ตัวเลขค่าประมาณรูปทศนิยมจำนวน 7 หลัก
  FLOAT   ตัวเลขค่าประมาณรูปทศนิยมจำนวน 16 หลัก
  DOUBLE PRECISION   ตัวเลขค่าประมาณรูปทศนิยมจำนวน 16 หลัก
  DATE   ข้อมูล วัน,เดือน,ปี
  TIME   ข้อมูล ชั่วโมง นาที วินาที
  TIMESTAMP   ข้อมูล วัน เดือน ปี ชั่วโมง นาที วินาที
  INTERVAL   ข้อมูลความต่างในทางเวลา
  ARRAY   ชุดของข้อมูลที่มีการจัดเรียง
  MULTISET   ชุดของข้อมูลที่ไม่มีการจัดเรียง อาจะมีข้อมูลซ้ำได้
  XML   ข้อมูลชนิด XML

เราสามารถจัดกลุ่มของ SQL Data Types ที่มีลักษณะเดียวกันได้ 6 กลุ่มคือ

 

1. ตัวเลข

DATA TYPE FROM TO
bigint   -9,223,372,036,854,775,808   9,223,372,036,854,775,807
int   -2,147,483,648   2,147,483,647
smallint   -32,768   32,767
tinyint   0   255
bit   0   1
decimal   -10^38 +1   10^38 -1
numeric   -10^38 +1   10^38 -1
money   -922,337,203,685,477.5808   +922,337,203,685,477.5807
smallmoney   -214,748.3648   +214,748.3647

 

2. ตัวเลขค่าประมาณ

DATA TYPE FROM TO
float   -1.79E + 308   1.79E + 308
real   -3.40E + 38   3.40E + 38

 

3. วันและเวลา

DATA TYPE FROM TO
datetime Jan 1, 1753 Dec 31, 9999
smalldatetime Jan 1, 1900 Jun 6, 2079
date  รูปแบบวัน  June 30, 1991
time รูปแบบเวลา  12:30 P.M.

 

4. ตัวอักษร (Non Unicode)

DATA TYPE Description
char   สูงสุด 8,000 ตัวอักษร ( จำนวนตัวอักษรต้องเท่ากัน และ ไม่ใช่ Unicode)
varchar   สูงสุด 8,000 ตัวอักษร ( จำนวนตัวอักษรต้องไม่เกิน และ ไม่ใช่ Unicode)
text   สูงสุด 2,147,483,647 ตัวอักษร ( จำนวนตัวอักษรต้องไม่เกิน และ ไม่ใช่ Unicode)

 

5. ตัวอักษร (Unicode)

DATA TYPE Description
nchar   สูงสุด 4,000 ตัวอักษร ( จำนวนตัวอักษรต้องเท่ากัน และเป็น Unicode)
nvarchar   สูงสุด 4,000 ตัวอักษร ( จำนวนตัวอักษรต้องไม่เกิน และเป็น Unicode)
ntext   สูงสุด 1,073,741,823 ตัวอักษร ( จำนวนตัวอักษรต้องไม่เกิน และเป็น Unicode)

 

6. ตัวอักษร (Binary)

DATA TYPE Description
binary   สูงสุด 8,000 bytes (Fixed-length binary data )
varbinary   สูงสุด 8,000 bytes (Variable length binary data)
image   สูงสุด 2,147,483,647 bytes ( Variable length Binary Data)

 

เปรียบเทียบข้อมูล SQL Data Types แต่ละ Database

Data type Access SQLServer Oracle MySQL PostgreSQL
boolean Yes/No Bit Byte N/A Boolean
integer Number (integer) Int Number Int,Integer Int,Integer
float Number (single) Float,Real Number Float Numeric
currency Currency Money N/A N/A Money
string (fixed) N/A Char Char Char Char
string (variable) Text (<256),Memo (65k+) Varchar Varchar,Varchar2 Varchar Varchar
binary object OLE Object Memo Binary (fixed up to 8K),Varbinary (<8K),Image (<2GB) Long,Raw Blob,Text Binary,Varbinary

 

 

Reference:

รวมคำสั่ง SQL Command พื้นฐานเบื้องต้น

DatabaseOracleMySQL