Các kiểu dữ liệu trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về các kiểu dữ liệu trong SQL Server bao gồm số, chuỗi ký tự, chuỗi nhị phân, ngày & giờ và các kiểu dữ liệu khác.

Tổng quan các kiểu dữ liệu trong SQL Server

Trong SQL Server, cột, biến và tham số giữ một giá trị được liên kết với một kiểu hoặc còn được gọi là kiểu dữ liệu. Kiểu dữ liệu là một thuộc tính chỉ định kiểu dữ liệu mà các đối tượng này có thể lưu trữ. Nó có thể là một số nguyên, chuỗi ký tự, tiền tệ, ngày và giờ, v.v.

SQL Server cung cấp danh sách các kiểu dữ liệu định nghĩa tất cả các kiểu dữ liệu mà bạn có thể sử dụng, ví dụ: khai báo một cột hoặc khai báo một biến.

Hình ảnh sau đây minh họa hệ thống kiểu dữ liệu SQL Server:

Các kiểu dữ liệu trong SQL Server
Lưu ý rằng SQL Server sẽ loại bỏ các kiểu dữ liệu ntext , văn bảnhình ảnh trong phiên bản tương lai của nó. Do đó, bạn nên tránh sử dụng các kiểu dữ liệu này và thay vào đó hãy sử dụng các kiểu dữ liệu nvarchar (max) , varchar (max)varbinary (max) .

Kiểu dữ liệu số nguyên

Kiểu dữ liệu số lưu trữ các số như số nguyên, số thập phân hoặc số tiền.

  • Bit lưu trữ một trong ba giá trị 0, 1 và NULL
  • Các kiểu dữ liệu int, bigint, smallint và tinyint lưu trữ dữ liệu số nguyên.
  • Kiểu dữ liệu decimal và numeric lưu trữ các số có độ chính xác và tỷ lệ cố định. Lưu ý rằng decimal và numeric là các synonym.
  • Kiểu dữ liệu money và smallmoney lưu trữ các giá trị tiền tệ.

Bảng sau minh họa các đặc điểm của kiểu dữ liệu số chính xác:

Kiểu dữ liệuGiới hạn dướiGiới hạn trênBộ nhớ
bigint−2^63 (−9,223,372, 036,854,775,808)2^63−1 (−9,223,372, 036,854,775,807)8 bytes
int−2^31 (−2,147, 483,648)2^31−1 (−2,147, 483,647)4 bytes
smallint−2^15 (−32,767)2^15 (−32,768)2 bytes
tinyint02551 byte
bit011 byte/8bit column
decimal−10^38+110^381−15 to 17 bytes
numeric−10^38+110^381−15 to 17 bytes
money−922,337, 203, 685,477.5808+922,337, 203, 685,477.58078 bytes
smallmoney−214,478.3648+214,478.36474 bytes

Kiểu dữ liệu số thực

Kiểu dữ liệu số thực lưu trữ dữ liệu số dấu phẩy động. Chúng thường được sử dụng trong các tính toán khoa học.

Kiểu dữ liệuGiới hạn dướiGiới hạn trênBộ nhớĐộ chính xác
float(n)−1.79E+3081.79E+308Depends on the value of n7 Digit
real−3.40E+383.40E+384 bytes15 Digit

Kiểu dữ liệu Ngày & Giờ

Các kiểu dữ liệu ngày và giờ lưu trữ dữ liệu ngày và dữ liệu giờ cũng như độ lệch ngày giờ.

Kiểu dữ liệuKích thước lưu trữSự chính xácGiới hạn dướiGiới hạn trên
datetime8 bytesĐược làm tròn đến .000, .003, .0071753-01-019999-12-31
smalldatetime4 bytes, cố định1 minute1900-01-012079-06-06
date3 bytes, cố định1 day0001-01-019999-12-31
time5 bytes100 nanoseconds00:00:00.000000023:59:59.9999999
datetimeoffset10 bytes100 nanoseconds0001-01-019999-12-31
datetime26 bytes100 nanoseconds0001-01-019999-12-31

Nếu bạn phát triển một ứng dụng mới, bạn nên sử dụng các kiểu dữ liệu time, date, datetime2datetimeoffset. Vì những kiểu này phù hợp với Chuẩn SQL và dễ di chuyển hơn. Ngoài ra time, datetime2datetimeoffset có độ chính xác giây nhiều hơn và datetimeoffset hỗ trợ múi giờ.

Kiểu dữ liệu chuỗi ký tự

Kiểu dữ liệu chuỗi ký tự cho phép bạn lưu trữ dữ liệu có độ dài cố định (char) hoặc độ dài thay đổi (varchar). Kiểu dữ liệu văn bản có thể lưu trữ dữ liệu không phải Unicode trong trang mã của máy chủ.

Kiểu dữ liệuGiới hạn dướiGiới hạn trênMemory
char0 chars8000 charsn bytes
varchar0 chars8000 charsn bytes + 2 bytes
varchar (max)0 chars2^31 charsn bytes + 2 bytes
text0 chars2,147,483,647 charsn bytes + 4 bytes

Kiểu dữ liệu chuỗi ký tự Unicode

Kiểu dữ liệu chuỗi ký tự Unicode lưu trữ dữ liệu ký tự Unicode có độ dài cố định (nchar) hoặc độ dài thay đổi (nvarchar).

Kiểu dữ liệuGiới hạn dướiGiới hạn trênBộ nhớ
nchar0 ký tự4000 ký tự2 lần n bytes
nvarchar0 ký tự4000 ký tự2 lần n bytes + 2 bytes
ntext0 ký tự1,073,741,823 char2 lần độ dài chuỗi

Kiểu dữ liệu chuỗi nhị phân

Các kiểu dữ liệu nhị phân lưu trữ dữ liệu nhị phân có độ dài cố định và thay đổi.

Kiểu dữ liệu Giới hạn dướiGiới hạn trên Bộ nhớ
binary0 bytes8000 bytesn bytes
varbinary0 bytes8000 bytesĐộ dài thực tế của dữ liệu đã nhập + 2 bytes
image0 bytes2,147,483,647 bytes

Các kiểu dữ liệu khác

Kiểu dữ liệuMô tả
cursorcho các biến hoặc tham số OUTPUT của stored procedure có chứa tham chiếu đến con trỏ
rowversionhiển thị các số nhị phân duy nhất, được tạo tự động trong cơ sở dữ liệu.
hierarchyidđại diện cho một vị trí cây trong một hệ thống phân cấp cây
uniqueidentifier16-byte GUID
sql_variantlưu trữ các giá trị của các kiểu dữ liệu khác
XMLlưu trữ dữ liệu XML trong một cột hoặc một biến kiểu XML
Spatial Geometry typebiểu diễn dữ liệu trong một hệ tọa độ phẳng.
Spatial Geography typelưu trữ dữ liệu hình elip (hình tròn), chẳng hạn như tọa độ kinh độ và vĩ độ GPS.
tablelưu trữ tập hợp kết quả tạm thời để xử lý sau

Trong hướng dẫn này, bạn đã học tổng quan ngắn gọn về các kiểu dữ liệu trong SQL Server. Chúng ta sẽ xem xét chi tiết từng kiểu dữ liệu trong các bài hướng dẫn tiếp theo.

SQL ServerKiểu dữ liệu trong SQL Server
Bài Viết Liên Quan:
GUID trong SQL Server
Trung Nguyen 12/03/2022
GUID trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về GUID trong SQL Server và cách sử dụng hàm NEWID() để tạo giá trị GUID.

Kiểu dữ liệu DATETIMEOFFSET trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu DATETIMEOFFSET trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATETIMEOFFSET trong SQL Server để thao tác datetime với múi giờ.

Kiểu dữ liệu TIME trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu TIME trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách lưu trữ thời gian trong ngày trong cơ sở dữ liệu bằng cách sử dụng kiểu dữ liệu TIME trong SQL Server.

Kiểu dữ liệu DATE trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu DATE trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATE trong SQL Server để lưu trữ dữ liệu ngày tháng trong một bảng.