HostingViet | Công ty Cổ phần Công nghệ số Thiên Quang

Các Kiểu Dữ Liệu Trong SQL Server Cập Nhật Đầy Đủ Nhất

Kiến thức IT | 2025-11-10 11:01:26+07

Khái niệm SQL Server là gì?

SQL Server là viết tắt của cụm từ "Structured Query Language server," một công cụ mạnh mẽ được thiết kế để quản lý dữ liệu. Được sử dụng phổ biến trong nhiều lĩnh vực trong thời đại công nghệ hiện đại, SQL Server là một giải pháp đáng tin cậy cho việc xử lý và quản lý dữ liệu quy mô lớn.

SQL, là ngôn ngữ không yêu cầu người dùng phải có kỹ năng đặc biệt để truy cập cơ sở dữ liệu. Đối với hầu hết người sử dụng, họ đều nhấn mạnh rằng giao diện thông báo của SQL Server là dễ sử dụng và rất ít gặp lỗi. SQL cung cấp một loạt lệnh đa dạng để thực hiện các tác vụ liên quan đến dữ liệu, bao gồm việc xóa, chèn, cập nhật hàng trong một quan hệ, cũng như thêm, xóa, chỉnh sửa nhanh chóng nhiều đối tượng bên trong cơ sở dữ liệu.

SQL Server không chỉ giúp kiểm soát quyền truy cập vào cơ sở dữ liệu mà còn đảm bảo tính bảo mật, độ nhất quán và mối quan hệ, ràng buộc của cơ sở dữ liệu. Các đối tượng chính trong SQL Server thường là các bảng dữ liệu, với hàng và cột quen thuộc. Trong cấu trúc này, cột dữ liệu và kiểu dữ liệu giúp xác định và tạo ra cấu trúc của bảng, và khi tổ chức thành hệ thống phục vụ một hoặc nhiều mục đích cụ thể, nó sẽ trở thành một cơ sở dữ liệu.

>>> Tham khảo thêm : Cách gỡ bỏ hoàn toàn SQL Server 2014 trong 1 nốt nhạc!

Tại sao xác định đúng kiểu dữ liệu SQL Server lại quan trọng?

Kiểu dữ liệu (Data Type) là nền tảng quan trọng trong quá trình thiết kế cơ sở dữ liệu quan hệ. Chúng quy định cách dữ liệu được lưu trữ, xử lý và tương tác trong SQL Server. Việc lựa chọn đúng kiểu dữ liệu tương thích giúp đảm bảo hiệu năng và tính ổn định của toàn hệ thống.

Cụ thể, việc xác định chính xác kiểu dữ liệu mang lại các lợi ích sau:

Trong SQL Server, mỗi cột, biến, biểu thức hay tham số đều được gắn với một kiểu dữ liệu cụ thể, chẳng hạn như số nguyên, ký tự, tiền tệ, ngày, giờ hoặc dữ liệu nhị phân. SQL Server cung cấp sẵn một bộ kiểu dữ liệu hệ thống chuẩn, đồng thời cho phép người dùng định nghĩa kiểu dữ liệu tùy chỉnh thông qua Transact-SQL hoặc Microsoft .NET Framework.

Tóm lại, data type là cách phân loại dữ liệu, giúp hệ thống hiểu và xử lý đúng loại giá trị mà lập trình viên muốn lưu trữ. Giống như các ngôn ngữ lập trình khác, SQL Server hỗ trợ nhiều kiểu dữ liệu khác nhau như integer, string, boolean, … để đảm bảo dữ liệu được quản lý chặt chẽ và hiệu quả.

Các kiểu dữ liệu phổ biến trong SQL Server

Trong SQL Server, kiểu dữ liệu được sử dụng để xác định loại dữ liệu mà một cột có thể chứa. Mỗi cột trong bảng cần được định rõ kiểu dữ liệu để đảm bảo tính chính xác và hiệu quả khi lưu trữ và xử lý dữ liệu.

Dưới đây là một số các kiểu dữ liệu trong SQL Server được dùng phổ biến hiện nay:

  1. INT (Integer): Là kiểu dữ liệu dành cho số nguyên không có phần thập phân.

  2. VARCHAR(n): Là kiểu dữ liệu dành cho chuỗi ký tự có độ dài tối đa n ký tự.

  3. CHAR(n): Tương tự như VARCHAR, nhưng có độ dài cố định là n ký tự.

  4. FLOAT: Là kiểu dữ liệu dành cho số thực với độ chính xác tương đối.

  5. DATE: Là kiểu dữ liệu để lưu trữ ngày trong định dạng 'YYYY-MM-DD'.

  6. TIME: Là kiểu dữ liệu để lưu trữ thời gian trong định dạng 'HH:MI:SS'.

  7. DATETIME: Là sự kết hợp của DATE và TIME để lưu trữ cả ngày và thời gian.

  8. BOOLEAN: Là kiểu dữ liệu chỉ có hai giá trị: TRUE hoặc FALSE.

  9. DECIMAL(p, s): Là kiểu dữ liệu dành cho số thực với p là tổng số chữ số và s là số chữ số sau dấu thập phân.

  10. BLOB (Binary Large Object): Là kiểu dữ liệu dành cho lưu trữ dữ liệu nhị phân, chẳng hạn như hình ảnh hoặc tệp tin.

Chi tiết danh sách tất cả các kiểu dữ liệu trong SQL Server

Có 3 Data Types trong SQL Server bao gồm: kiểu ký tự, kiểu số và một vài kiểu dữ liệu date/time (ngày/giờ). Chi tiết các nhóm kiểu dữ liệu trong SQL Server như sau:

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

Kiểu dữ liệu chuỗi trong SQL Server bao gồm các cú pháp sau:

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

 

Cú pháp của kiểu dữ liệu

Kích thước của kiểu dữ liệu

Chú thích

CHAR(kt)

Tối đa 8.000 ký tự

kt là kích thước hay số ký tự có thể lưu trữ.

Độ dài của chuỗi ký tự là cố định.

Không thể dùng được cho các ký tự Unicode.

VARCHAR(kt)


VARCHAR(max)

Tối đa 8.000 ký tự hoặc  tùy thuộc vào con số tối đa.

kt là số ký tự có thể lưu trữ.

Độ dài chuỗi ký tự không cố định.

Nếu chỉ định là max thì kích thước tối đa sẽ là 2GB.

Không thể dùng được cho các ký tự Unicode.

TEXT

Tối đa là 2GB.

Độ dài chuỗi ký tự  không cố định.

Không thể dùng được cho các ký tự Unicode.

NCHAR(kt)

Tối đa là 4000 ký tự.

Độ dài chuỗi ký tự không cố định.

Có thể dùng được cho các ký tự Unicode.

NVARCHAR(kt) hoặc NVARCHAR(max)

Tối đa 4.000 ký tự hoặc  tùy thuộc vào con số tối đa.

kt là số ký tự có thể lưu trữ.

Độ dài dữ liệu không cố định.

Nếu chỉ định là max thì kích thước tối đa sẽ là 2GB.

Không thể dùng được cho các ký tự Unicode.

NTEXT

Kích thước tối đa là 1.073.741.823 bytes.

Độ dài chuỗi ký tự là tùy biến.

Có thể dùng được cho các ký tự Unicode.

BINARY(kt)

Số ký tự tối đa là 8000.

kt là số ký tự có thể lưu trữ.

Độ dài chuỗi ký tự cố định.

Nếu sử dụng dấu cách thì ta cần để bù vào phần trống sao cho đủ số ký tự.

Có thể nhập được kiểu dữ liệu nhị phân.

VARBINARY(kt)


VARBINARY(max)

Tối đa 8.000 ký tự hoặc  tùy thuộc vào con số tối đa.

kt là số ký tự có thể lưu trữ.

Độ dài chuỗi ký tự là tùy biến.

Nếu chỉ định là max thì kích thước tối đa sẽ là 2GB.

Có thể nhập được kiểu dữ liệu hệ nhị phân.

IMAGE

Tối đa là 2GB.

Độ dài chuỗi ký tự cố định.

Sử dụng kiểu dữ liệu hệ nhị phân.


Lưu ý: Kể từ SQL Server 2017 trở đi, Microsoft khuyến nghị sử dụng VARCHAR(MAX) thay cho TEXT vì hỗ trợ tốt hơn trong xử lý và tối ưu truy vấn.

2. Kiểu dữ liệu số trong SQL Server

Cú pháp của kiểu dữ liệu

Phạm vi của kiểu dữ liệu

Chú thích

BIT

0 hoặc 1 hoặc NULL

 

TINYINT

Từ 0 đến 2^8-1 (hay 255).

Số nguyên (Z)

SMALLINT

Từ -2^15 (hay -32.768)

Đến 2^15-1 (hay 32.767)

Số nguyên (Z)

INT

Từ -2^31 (-2.147.483.648)

Đến 2^31-1 (2.147.483.647).

Số nguyên (Z)

BIGINT

Từ -2^63 (-9.223.372,036,854,775,808)

Đến 2^63-1 (9,223,372,036,854,775,807)

Số nguyên (Z)

DECIMAL(m,d)

m sẽ được mặc định là 18 nếu có sự chỉ định cụ thể từ phía người dùng.

d được mặc định là 0 nếu có sự chỉ định cụ thể từ phía người dùng.

m tổng số lượng các chữ số.

d là số lượng các chữ số nằm bên phải của dấu phẩy.

DEC(m,d)

m sẽ được mặc định là 18 nếu có sự chỉ định cụ thể từ phía người dùng.

d được mặc định là 0 nếu có sự chỉ định cụ thể từ phía người dùng.

Tương đương với kiểu dữ liệu DECIMAL(m,d) ở trên.

m tổng số lượng các chữ số.

d là số lượng các chữ số nằm bên phải của dấu phẩy.

NUMERIC(m,d)

m sẽ được mặc định là 18 nếu có sự chỉ định cụ thể từ phía người dùng.

d được mặc định là 0 nếu có sự chỉ định cụ thể từ phía người dùng.

Được hiểu tương đương với kiểu dữ liệu DECIMAL.

m tổng số lượng các chữ số.

d là số lượng các chữ số nằm bên phải của dấu phẩy.

FLOAT(n)

Số dấu phẩy động n sẽ được mặc định là 53 nếu có sự chỉ định cụ thể từ phía người dùng.

n là số lượng các bit được lưu trữ thuộc trong một kí hiệu hóa học.

REAL

 

Tương đương với kiểu dữ liệu FLOAT(24)

SMALLMONEY

Từ -214,748.3648

Đến 214,748.3647

Số thập phân

MONEY

Từ -922,337,203,685,477.5808

Đến 922,337,203,685,477.5807

Số thập phân

 

Gợi ý: Nếu bạn làm việc với ứng dụng tài chính, nên chọn DECIMAL thay vì FLOAT để tránh sai số khi tính toán.

3. Kiểu dữ liệu date/time trong SQL 

Bảng dưới đây sẽ giới thiệu một vài kiểu dữ liệu ngày giờ trong SQL Server phổ biến được người dùng ưa chuộng sử dụng:

Cú pháp của kiểu dữ liệu

Phạm vi của kiểu dữ liệu

Chú thích

DATE

Dữ liệu ngày được lấy từ ừ '0001-01-01' đến '9999-12-31'.

Dữ liệu sau khi nhập đủ sẽ được hiển thị dưới dạng ‘YYYY-MM-DD’

DATETIME

Từ '1753-01-01 00:00:00'

Đến '9999-12-31 23:59:59'.


Dữ liệu giờ được lấy từ '00:00:00' cho đến '23:59:59.997'

Dữ liệu sau khi nhập đủ sẽ được hiển thị dưới dạng ‘YYYY-MM-DD hh:mm:ss[.mmm]’.

DATETIME2

Dữ liệu ngày được lấy từ ừ '0001-01-01' đến '9999-12-31'.


Dữ liệu giờ lấy từ '00:00:00' đến '23:59:59:9999999'.

Dữ liệu sau khi nhập đủ sẽ được hiển thị dưới dạng ‘YYYY-MM-DD [hh:mm:ss]’ (phần thập phân).

SMALLDATETIME

Dữ liệu ngày từ '1900-01-01' đến '2079-06-06'.


Dữ liệu giờ từ '00:00:00' đến '23:59:59'.

Dữ liệu sau khi nhập đủ sẽ được hiển thị dưới dạng ‘YYYY-MM-DD hh:mm:ss’.

TIME

Dữ liệu ngày từ '0001-01-01' đến '9999-12-31'.


Dữ liệu giờ từ '00:00:00.0000000' đến '23:59:59.9999999'.

Dữ liệu sau khi nhập đủ sẽ được hiển thị dưới dạng 'YYYY-MM-DD hh:mm:ss[.nnnnnnn]'

DATETIMEOFFSET

Dữ liệu ngày từ '0001-01-01' đến '9999-12-31'.


Dữ liệu giờ giá trị từ '00:00:00' đến '23:59:59:9999999'.


Dữ liệu múi giờ lấy từ -14:00 đến +14:00.

Dữ liệu chính xác tới số thập phân của giây.


Dữ liệu sau khi nhập đủ sẽ được hiển thị dưới dạng YYYY-MM-DD hh:mm:ss[.nnnnnnn]' [{+|-}hh:mm

 

4. Nhóm kiểu dữ liệu khác

Xem thêm:

Những dữ liệu quan trọng thường dùng trong các kiểu dữ liệu trong SQL Server

Có 4 kiểu dữ liệu quan trọng thường dùng trong các kiểu dữ liệu trong SQL Server, bao gồm: Demical, money, date và hình ảnh. Chi tiết như sau:

Kiểu dữ liệu Demical trong SQL

Kiểu dữ liệu demical trong SQL được hiểu là các giá dữ liệu được lưu trữ dưới dạng thập phân và giữ giá trị thập phân.

Chúng cung cấp các loại dữ liệu sau đây:

Decimal and numeric

Precision

Storage bytes

1 to 9

5

10 to 19

9

20 to 28

13

29 to 38

17



Lưu ý: numeric có chức năng tương đương với decimal.

Float and real

n value

Precision

Storage size

1 to 24

7 digits

4 bytes

25 to 53

15 digits

8 bytes

 

Kiểu dữ liệu money trong SQL

Trong các kiểu dữ liệu thì kiểu dữ liệu money trong SQL cũng là một trong những dữ liệu được nhiều người sử dụng và những người học về SQL nên biết tới.

Kiểu dữ liệu money trong SQL

Kiểu dữ liệu money trong SQL có tác dụng dùng để lưu trữ các loại tiền tệ hoặc ngoại tệ giữ giá trị tiền tệ. Nó cung cấp kiểu dữ liệu smallmoney và money với kích thước 4 và 8 byte tương ứng. Cụ thể được thể hiện dưới bảng sau:

Monetary Types

Bytes

Smallmoney

4

Money

8

 

Kiểu dữ liệu date trong SQL

Kiểu dữ liệu date trong SQL thể hiện các giá trị ngày và thời gian giữ các giá trị ngày và thời gian của một ngày.

Kiểu dữ liệu này cung cấp các loại dữ liệu sau đây:

Data type

Range

Accuracy

Smalldatetime

January 1, 1900, through June 6, 2079

1 minute

Datetime

January 1, 1753, through December 31, 9999

3.33 milliseconds

Smalldatetime

Datetime

Kiểu dữ liệu hình ảnh trong SQL

Kiểu dữ liệu hình ảnh trong SQL nằm trong dữ liệu Binary Values. Giá trị nhị phân giữ hình ảnh các giá trị nhị phân như thế, clip âm thanh và video clip.

Kiểu nhị phân giá trị là:

Binary

Varbinary

Image

Quy trình sử dụng data type

Để sử dụng Data Type hiệu quả trong SQL Server, bước đầu tiên là xác định kiểu dữ liệu phù hợp cho từng cột trong bảng. Việc này giúp đảm bảo dữ liệu được lưu trữ đúng định dạng, ngăn chặn nhập sai kiểu và tối ưu hóa hiệu suất sử dụng bộ nhớ.

Khi chọn đúng kiểu dữ liệu, SQL Server sẽ tự động phân bổ dung lượng bộ nhớ hợp lý dựa trên loại dữ liệu và giá trị cần lưu trữ. Điều này không chỉ giúp hệ thống hoạt động ổn định mà còn cải thiện tốc độ truy vấn.

Khi thiết lập kiểu dữ liệu, bạn cần lưu ý các yếu tố sau:

Các kiểu dữ liệu phổ biến trong SQL Server bao gồm: string (chuỗi ký tự), numeric (số học), date & time (ngày và thời gian), … Mỗi loại đều có đặc điểm riêng, giúp lập trình viên dễ dàng lựa chọn tùy theo mục đích sử dụng và yêu cầu của hệ thống.

Lưu ý về một số kiểu dữ liệu trong SQL Server

Dưới đây là những điểm cần chú ý khi làm việc với các kiểu dữ liệu trong SQL Server giúp bạn quản lý dữ liệu hiệu quả và chính xác hơn.

Decimal và Numeric

Trong SQL Server, DECIMAL và NUMERIC là hai kiểu dữ liệu được sử dụng để lưu trữ các giá trị số thực có phần thập phân cố định. Cả hai đều mang lại độ chính xác cao, đặc biệt phù hợp cho các phép tính tài chính, tỷ lệ phần trăm hoặc các con số yêu cầu độ chính xác tuyệt đối.

Người dùng cần xác định độ chính xác (precision) và thang đo (scale) khi khai báo các kiểu dữ liệu này để đảm bảo kết quả lưu trữ chính xác. Về cơ bản, DECIMAL và NUMERIC có chức năng tương đương và sự khác biệt chỉ nằm ở tên gọi.

Ví dụ minh họa:

Khi bạn định nghĩa một cột với cú pháp DECIMAL(10,2), điều đó có nghĩa là cột có thể lưu trữ tối đa 10 chữ số, trong đó 2 chữ số sau dấu thập phân. Cấu trúc này đặc biệt hữu ích khi làm việc với dữ liệu kế toán, giá trị tiền tệ hoặc các số liệu cần độ chính xác cao về phần thập phân.

Float và Real

Hai kiểu dữ liệu FLOAT và REAL trong SQL Server đều được thiết kế để lưu trữ các giá trị số thực (floating-point), tức các số có phần thập phân nhưng không cố định.

Do đó, người dùng có thể lựa chọn giữa FLOAT hoặc REAL tùy thuộc vào yêu cầu về độ chính xác và phạm vi giá trị cần lưu trữ. Với những ứng dụng tài chính hoặc tính toán phức tạp, nên ưu tiên FLOAT để đảm bảo kết quả nhất quán.

Kiểu dữ liệu Money

Trong SQL Server, kiểu dữ liệu MONEY được sử dụng để lưu trữ các giá trị tiền tệ gắn với đơn vị tiền của cơ sở dữ liệu. Loại dữ liệu này được thiết kế nhằm phục vụ cho các phép tính tài chính có độ chính xác cao, giúp thao tác cộng, trừ, nhân, chia trên giá trị tiền trở nên đơn giản và hiệu quả hơn.

Tuy nhiên, khi sử dụng MONEY, cần lưu ý rằng SQL Server lưu trữ giá trị theo đơn vị tiền tệ mặc định của hệ thống. Nếu cơ sở dữ liệu không xác định rõ đơn vị tiền có thể dẫn đến sai lệch trong quá trình xử lý hoặc quy đổi.

Mặc dù vậy, MONEY vẫn là lựa chọn lý tưởng trong các bài toán liên quan đến tính tổng, thống kê hoặc tính lãi suất nhờ tính chính xác và khả năng tính toán nhanh. Để đảm bảo kết quả đúng đắn, bạn nên xác định rõ đơn vị tiền tệ trước khi áp dụng kiểu dữ liệu này vào thực tế.

Kiểu dữ liệu Date

Kiểu dữ liệu DATE trong SQL Server được sử dụng để lưu trữ ngày tháng dưới định dạng chuẩn YYYY-MM-DD (năm-tháng-ngày). Kiểu dữ liệu này không bao gồm thông tin về thời gian hoặc múi giờ, phù hợp khi bạn chỉ cần lưu trữ ngày mà không quan tâm đến giờ cụ thể.

Với DATE, bạn có thể dễ dàng thực hiện các phép so sánh, tính toán khoảng cách giữa hai ngày, hoặc lọc dữ liệu theo mốc thời gian. Đây là kiểu dữ liệu rất hữu ích trong các tình huống như quản lý lịch làm việc, đơn hàng, ngày tạo hoặc hạn sử dụng của sản phẩm.

Nhờ khả năng xử lý nhanh và nhất quán, DATE giúp tối ưu hóa hiệu năng truy vấn trong các hệ thống cần làm việc thường xuyên với dữ liệu thời gian.

Kiểu dữ liệu hình ảnh (Binary Data)

Kiểu dữ liệu nhị phân (Binary) trong SQL Server được sử dụng để lưu trữ dữ liệu không phải văn bản, chẳng hạn như hình ảnh, âm thanh, video hoặc các tệp nhị phân khác.

SQL Server cung cấp hai loại dữ liệu phổ biến cho mục đích này: IMAGE và VARBINARY(MAX).

Khi truy xuất dữ liệu nhị phân từ cơ sở dữ liệu, bạn có thể sử dụng ngôn ngữ lập trình hoặc framework tương ứng để hiển thị, xử lý hoặc lưu trữ lại dữ liệu này một cách hiệu quả.

Trên đây là các kiểu dữ liệu trong SQL Server. Nếu như bạn còn thắc mắc gì về SQL Server thì hãy gọi về hotline 024.2222.2223 của HostingViet để được giải đáp nhanh nhất nhé. Nếu bạn đang cần môi trường test SQL Server ổn định, hãy thử thuê VPS giá rẻ của chúng tôi, với cấu hình mạnh, VPS tốc độ cao, hỗ trợ SSD hoặc NVMe, cài sẵn SQL Server chỉ trong vài phút.


Bài viết khác