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: