Kiểu dữ liệu của cột xác định giá trị mà cột có thể lưu trữ, ví dụ như: số nguyên, ký tự, số thực, ngày và giờ, nhị phân, v.v.

Mỗi cột trong bảng cơ sở dữ liệu đều bắt buộc phải có tên và chứa một kiểu dữ liệu cụ thể. Những người lập trình trên SQL phải lựa chọn kiểu dữ liệu cho cột sao cho phù hợp với mục đích lưu trữ.

1.Kiểu dữ liệu ký tự và chuỗi ký tự

Kiểu ký tự có thể lưu trữ các dữ liệu là các chữ như “abc…xyz” hay các số là ký tự như “0,1,2,3…7,8,9”. Bảng dưới đây liệt kê ra các kiểu dữ liệu ký tự và chuỗi ký tự kèm theo kích thước của từng kiểu dữ liệu.

Data type Mô tả Kích cỡ lớn nhất
char(n) Chuỗi ký tự có độ rộng cố định 8,000 characters
varchar(n) Chuỗi ký tự có độ rộng thay đổi 8,000 characters
varchar(max) Chuỗi ký tự có độ rộng thay đổi 1,073,741,824 characters
text Chuỗi ký tự có độ rộng thay đổi 2GB dữ liệu text
nchar Chuỗi Unicode có độ rộng cố định 4,000 characters
nvarchar Chuỗi Unicode có độ rộng thay đổi 4,000 characters
nvarchar(max) Chuỗi Unicode có độ rộng thay đổi 536,870,912 characters
ntext Chuỗi Unicode có độ rộng thay đổi 2GB dữ liệu text
binary(n) Chuỗi nhị phân chiều rộng cố định 8,000 bytes
varbinary Chuỗi nhị phân chiều rộng thay đổi 8,000 bytes
varbinary(max) Chuỗi nhị phân chiều rộng thay đổi 2GB
image Chuỗi nhị phân chiều rộng thay đổi 2GB

2. Kiểu dữ liệu số

Kiểu số là kiểu chỉ được phép lưu trữ các con số. Các số có thể là các số nguyên, các số thực, các số nhị phân. Mỗi kiểu dữ liệu số khác nhau sẽ có độ dài giá trị khác nhau và kích thước khác nhau. Bảng dưới đây liệt kê ra một số kiểu dữ liệu số và độ dài của chúng.

Data type

Mô tả

Lưu trữ

bit Số nguyên có giá trị hoặc là 0 hoặc là 1
tinyint Số nguyên từ giá trị 0 đến 255 1 byte
smallint Số nguyên từ giá trị -32,768 đến 32,767 2 bytes
int Số nguyên từ giá trị -2,147,483,648 đến 2,147,483,647 4 bytes
bigint Số nguyên từ giá trị 9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 8 bytes
decimal(p,s) Giá trị từ -10 ^ 38 +1 đến 10 ^ 38 –1.

Tham số p cho biết tổng chữ số tối đa có thể được lưu trữ (cả bên trái và bên phải của dấu thập phân)

Tham số s cho biết số lượng chữ số tối đa được lưu trữ ở bên phải của dấu thập phân.

5-17 bytes
smallmoney Dữ liệu tiền tệ từ -214.748.3648 đến 214.748.3647 4 bytes
money Dữ liệu tiền tệ từ -922.337.203.685.477.5808 đến 922.337.203.685.477.5807 8 bytes
float(n) Số thực có giá trị từ -1,79E + 308 đến 1,79E + 308

Tham số n cho biết trường nên sử dụng với kích thước 4 hay 8 byte. float (24) sẽ giữ trường 4 byte và float (53) giữ trường 8 byte. Giá trị mặc định của n là 53.

4 hoặc 8 bytes
real Số thực có giá trị từ -3,40E + 38 đến 3,40E + 38 4 bytes

3. Kiểu dữ liệu thời gian

Trong sql server hoàn toàn có thể lưu trữ lại được thời gian, để lưu trữ được thời gian cần phải sử dụng kiểu dữ liệu thời gian. Bảng dưới đây liệt kê một số kiểu dữ liệu thời gian và kích thước của các kiểu dữ liệu nhằm sử dụng kiểu thời gian một cách hợp lý.

Data type Mô tả Lưu trữ
datetime Từ ngày 1 tháng 1 năm 1753 đến ngày 31 tháng 12 năm 9999 với độ chính xác 3,33 mili giây 8 bytes
datetime2 Từ ngày 1 tháng 1 năm 0001 đến ngày 31 tháng 12 năm 9999 với độ chính xác 100 nano giây 6-8 bytes
smalldatetime Từ ngày 1 tháng 1 năm 1900 đến ngày 6 tháng 6 năm 2079 với độ chính xác 1 phút 4 bytes
date Chỉ lưu trữ một ngày. Từ ngày 1 tháng 1 năm 0001 đến ngày 31 tháng 12 năm 9999 3 bytes
time Chỉ lưu trữ thời gian với độ chính xác 100 nano giây 3-5 bytes
datetimeoffset Giống như datetime2 với việc bổ sung độ lệch múi giờ 8-10 bytes
timestamp Lưu trữ một số duy nhất được cập nhật mỗi khi một hàng được tạo hoặc sửa đổi

4. Một số kiểu dữ liệu khác

Ngoài 3 kiểu dữ liệu thường được sử dụng như kiểu ký tự, kiểu số, kiểu thời gian đã được nêu ở trên thì vẫn còn một số kiểu dữ liệu khác.

Data type

Mô tả

sql_variant Lưu trữ lên đến 8.000 byte dữ liệu thuộc nhiều loại dữ liệu khác nhau, ngoại trừ văn bản, văn bản và dấu thời gian
uniqueidentifier Lưu trữ số nhận dạng duy nhất trên toàn cầu
xml Lưu trữ dữ liệu định dạng XML. Tối đa 2GB
cursor Lưu trữ một tham chiếu đến một con trỏ được sử dụng cho các hoạt động cơ sở dữ liệu
table Lưu trữ một tập hợp kết quả để xử lý sau