Loại dữ liệu trong SQL

Loại dữ liệu và phạm vi mà Microsoft Access, MySQL và SQL Server sử dụng.

Loại dữ liệu Microsoft Access

Loại dữ liệu Mô tả Lưu
Text Dùng cho văn bản hoặc kết hợp văn bản và số. Tối đa 255 ký tự.  
Memo

Memo dùng cho số lượng văn bản lớn hơn. Tối đa lưu trữ 65,536 ký tự.

Ghi chú: Không thể sắp xếp các trường memo. Tuy nhiên, chúng là có thể tìm kiếm.

 
Byte Cho phép tất cả các số từ 0 đến 255. 1 byte
Integer Cho phép tất cả các số từ -32,768 đến 32,767. 2 byte
Long Cho phép tất cả các số từ -2,147,483,648 đến 2,147,483,647. 4 byte
Single Định dạng đơn. Xử lý hầu hết các số thập phân. 4 byte
Double Định dạng kép. Xử lý hầu hết các số thập phân. 8 byte
Currency

Dùng cho tiền tệ. Hỗ trợ 15 chữ số nguyên, cộng với 4 chữ số thập phân.

Gợi ý: Bạn có thể chọn sử dụng tiền tệ của quốc gia nào.

8 byte
AutoNumber Trường AutoNumber tự động phân phối số cho mỗi bản ghi, thường bắt đầu từ 1. 4 byte
Date/Time Dùng cho ngày và giờ 8 byte
Yes/No

Trường logic, có thể hiển thị là Yes/No, True/False hoặc On/Off.

Trong mã, sử dụng hằng số True và False (tương đương với 1 và 0)

Ghi chú: Không cho phép giá trị Null trong trường Yes/No

1 bit
Ole Object Có thể lưu trữ hình ảnh, âm thanh, video hoặc các BLOBs (Binary Large OBjects) khác. Tối đa 1GB
Hyperlink Chứa liên kết đến các tệp khác, bao gồm trang web.  
Lookup Wizard Cho phép bạn tạo một danh sách các tùy chọn có thể chọn từ danh sách sau. 4 byte

Loại dữ liệu MySQL

Trong MySQL, có ba loại chính: văn bản, số và loại ngày/giờ.

Loại Text:

Loại dữ liệu Mô tả
CHAR(size) Lưu trữ chuỗi định dài (có thể chứa chữ cái, số và ký tự đặc biệt). Đặt độ dài của chuỗi trong dấu ngoặc kép. Tối đa 255 ký tự.
VARCHAR(size)

Lưu trữ chuỗi dài thay đổi (có thể chứa chữ cái, số và ký tự đặc biệt). Đặt độ dài tối đa của chuỗi trong dấu ngoặc kép. Tối đa 255 ký tự.

Ghi chú: Nếu độ dài của giá trị lớn hơn 255, nó sẽ được chuyển đổi thành loại TEXT.
TINYTEXT Lưu trữ chuỗi có độ dài tối đa 255 ký tự.
TEXT Lưu trữ chuỗi có độ dài tối đa 65,535 ký tự.
BLOB Dùng cho BLOBs (Binary Large OBjects). Lưu trữ tối đa 65,535 byte dữ liệu.
MEDIUMTEXT Lưu trữ chuỗi có độ dài tối đa 16,777,215 ký tự.
MEDIUMBLOB Dùng cho BLOBs (Binary Large OBjects). Lưu trữ tối đa 16,777,215 byte dữ liệu.
LONGTEXT Lưu trữ chuỗi có độ dài tối đa 4,294,967,295 ký tự.
LONGBLOBDùng cho BLOBs (Binary Large OBjects). Lưu trữ tối đa 4,294,967,295 byte dữ liệu.,ENUM(,xy

z

,v.v.)

Cho phép bạn nhập danh sách các giá trị có thể. Có thể liệt kê tối đa 65535 giá trị trong danh sách ENUM. Nếu giá trị không có trong danh sách, sẽ chèn giá trị trống.

Ghi chú: Các giá trị này được lưu trữ theo thứ tự bạn nhập. Có thể nhập giá trị có thể theo định dạng này: ENUM('X','Y','Z')

Loại số:

Loại dữ liệu Mô tả
SETsize) Tương tự ENUM, SET chỉ có thể chứa tối đa 64 mục trong danh sách, nhưng SET có thể lưu trữ nhiều giá trị hơn.
SMALLINT(size) -32768 đến 32767 thường. 0 đến 65535 vô dấu *. Định nghĩa số chữ số lớn nhất trong dấu ngoặc.
MEDIUMINT(size) -8388608 đến 8388607 thường. 0 đến 16777215 vô dấu *. Định nghĩa số chữ số lớn nhất trong dấu ngoặc.
INT(size) -2147483648 đến 2147483647 thường. 0 đến 4294967295 vô dấu *. Định nghĩa số chữ số lớn nhất trong dấu ngoặc.
BIGINT(size) -9223372036854775808 đến 9223372036854775807 thường. 0 đến 18446744073709551615 vô dấu *. Định nghĩa số chữ số lớn nhất trong dấu ngoặc.
FLOAT(size,d) Số nhỏ với điểm số lượn. Định nghĩa số chữ số lớn nhất trong dấu ngoặc. Định nghĩa số chữ số lớn nhất bên phải dấu chấm trong tham số d.
DOUBLE(size,d) Số lớn với dấu phẩy động. Định nghĩa số chữ số lớn nhất trong dấu ngoặc. Định nghĩa số chữ số sau dấu phẩy động lớn nhất trong tham số d.
DECIMAL(size,d) Kiểu DOUBLE lưu trữ dưới dạng chuỗi, cho phép dấu phẩy động cố định.

* Các loại số nguyên này có thêm tùy chọn UNSIGNED. Thường thì số nguyên có thể là số âm hoặc số dương. Nếu thêm thuộc tính UNSIGNED, thì phạm vi sẽ bắt đầu từ 0 thay vì một số âm nào đó.

Loại dữ liệu Date:

Loại dữ liệu Mô tả
DATE()

Ngày. Định dạng: YYYY-MM-DD

Ghi chú: Phạm vi hỗ trợ từ '1000-01-01' đến '9999-12-31'

DATETIME()

* Kết hợp ngày và giờ. Định dạng: YYYY-MM-DD HH:MM:SS

Ghi chú: Phạm vi hỗ trợ từ '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'

TIMESTAMP()

* Thời gian戳. Giá trị TIMESTAMP lưu trữ mô tả từ nguyên thủy Unix ('1970-01-01 00:00:00' UTC) đến nay. Định dạng: YYYY-MM-DD HH:MM:SS

Ghi chú: Phạm vi hỗ trợ từ '1970-01-01 00:00:01' UTC đến '2038-01-09 03:14:07' UTC

TIME()

Thời gian. Định dạng: HH:MM:SS

Ghi chú: Phạm vi hỗ trợ từ '-838:59:59' đến '838:59:59'

YEAR()

Năm định dạng 2 hoặc 4 chữ số.

Ghi chú: Các giá trị được phép của định dạng 4 chữ số: từ 1901 đến 2155. Các giá trị được phép của định dạng 2 chữ số: từ 70 đến 69, biểu thị từ 1970 đến 2069.

* Mặc dù DATETIME và TIMESTAMP trả về định dạng giống nhau, nhưng cách hoạt động của chúng rất khác nhau. Trong các truy vấn INSERT hoặc UPDATE, TIMESTAMP tự động đặt giá trị của mình là ngày và giờ hiện tại. TIMESTAMP cũng chấp nhận các định dạng khác nhau, chẳng hạn như YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD hoặc YYMMDD.

Kiểu dữ liệu SQL Server

Chuỗi ký tự: Character

Loại dữ liệu Mô tả Lưu
char(n) Chuỗi cố định độ dài. Dài nhất 8,000 ký tự. n
varchar(n) Chuỗi dài thay đổi. Dài nhất 8,000 ký tự.  
varchar(max) Chuỗi dài thay đổi. Dài nhất 1,073,741,824 ký tự.  
text Chuỗi dài thay đổi. Dài nhất 2GB dữ liệu ký tự.  

Chuỗi Unicode:

Loại dữ liệu Mô tả Lưu
nchar(n) Dữ liệu Unicode cố định. Tối đa 4,000 ký tự.  
nvarchar(n) Dữ liệu Unicode dài thay đổi. Tối đa 4,000 ký tự.  
nvarchar(max) Dữ liệu Unicode dài thay đổi. Tối đa 536,870,912 ký tự.  
ntext Dữ liệu Unicode dài thay đổi. Tối đa 2GB dữ liệu ký tự.  

Loại nhị phân:

Loại dữ liệu Mô tả Lưu
bit Cho phép 0, 1 hoặc NULL  
binary(n) Dữ liệu nhị phân cố định. Tối đa 8,000 byte.  
varbinary(n) Dữ liệu nhị phân dài thay đổi. Tối đa 8,000 byte.  
varbinary(max) Dữ liệu nhị phân dài thay đổi. Tối đa 2GB byte.  
image Dữ liệu nhị phân dài thay đổi. Tối đa 2GB.  

Loại số:

Loại dữ liệu Mô tả Lưu
tinyint Cho phép tất cả các số từ 0 đến 255. 1 byte
smallint Cho phép tất cả các số từ -32,768 đến 32,767. 2 byte
int Cho phép tất cả các số từ -2,147,483,648 đến 2,147,483,647. 4 byte
bigint Cho phép tất cả các số từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807. 8 byte
decimal(p,s)

Số thực có độ chính xác cố định và tỷ lệ. Cho phép số từ -10^38 +1 đến 10^38 -1.

Tham số p chỉ ra số lượng chữ số có thể lưu trữ (cả bên trái và bên phải dấu chấm nhỏ). p phải là giá trị từ 1 đến 38. Giá trị mặc định là 18.

Tham số s chỉ ra số lượng chữ số có thể lưu trữ ở bên phải dấu chấm nhỏ. s phải là giá trị từ 0 đến p. Giá trị mặc định là 0.

5-17 byte
numeric(p,s)

Số thực có độ chính xác cố định và tỷ lệ. Cho phép số từ -10^38 +1 đến 10^38 -1.

Tham số p chỉ ra số lượng chữ số có thể lưu trữ (cả bên trái và bên phải dấu chấm nhỏ). p phải là giá trị từ 1 đến 38. Giá trị mặc định là 18.

Tham số s chỉ ra số lượng chữ số có thể lưu trữ ở bên phải dấu chấm nhỏ. s phải là giá trị từ 0 đến p. Giá trị mặc định là 0.

5-17 byte
smallmoney Số dữ liệu tiền tệ từ -214,748.3648 đến 214,748.3647. 4 byte
money Số dữ liệu tiền tệ từ -922,337,203,685,477.5808 đến 922,337,203,685,477.5807. 8 byte
float(n)

Số dữ liệu số thực với độ chính xác di động từ -1.79E + 308 đến 1.79E + 308.

Tham số n chỉ ra rằng trường này lưu trữ 4 byte hay 8 byte. float(24) lưu trữ 4 byte, trong khi float(53) lưu trữ 8 byte. Giá trị mặc định của n là 53.

4 hoặc 8 byte
real Số liệu số thập phân có độ chính xác di động từ -3.40E + 38 đến 3.40E + 38. 4 byte

Loại dữ liệu Date:

Loại dữ liệu Mô tả Lưu
datetime Từ ngày 1 tháng 1 năm 1753 đến ngày 31 tháng 12 năm 9999, độ chính xác là 3.33 milisecond. 8 byte
datetime2 Từ ngày 1 tháng 1 năm 1753 đến ngày 31 tháng 12 năm 9999, độ chính xác là 100 nanosecond. 6-8 byte
smalldatetime Từ ngày 1 tháng 1 năm 1900 đến ngày 6 tháng 6 năm 2079, độ chính xác là 1 phút. 4 byte
date Chỉ lưu ngày. Từ ngày 1 tháng 1 năm 0001 đến ngày 31 tháng 12 năm 9999. 3 byte
time Chỉ lưu thời gian. Độ chính xác là 100 nanosecond. 3-5 byte
datetimeoffset Tương tự datetime2, thêm thời gian khu vực. 8-10 byte
timestamp Lưu số duy nhất, cập nhật mỗi khi tạo hoặc sửa đổi một hàng. timestamp dựa trên đồng hồ nội bộ, không tương ứng với thời gian thực tế. Mỗi bảng chỉ có thể có một biến timestamp.  

Các loại dữ liệu khác:

Loại dữ liệu Mô tả
sql_variant Lưu dữ liệu các loại dữ liệu khác nhau đến 8,000 byte, trừ text, ntext và timestamp.
uniqueidentifier Lưu định danh duy nhất (GUID).
xml Lưu dữ liệu định dạng XML. Đến 2GB.
cursor Lưu tham chiếu đến con trỏ được sử dụng cho các hoạt động cơ sở dữ liệu.
table Lưu kết quả tập dữ liệu, để xử lý sau này.