Các kiểu dữ liệu trong SQL là gì? Khi nào thì sử dụng chúng

Nội dung được viết bởi Kim Thu

Trong quá trình khởi tạo bảng dữ liệu và các trường thông tin thì chúng ta cần phải gán cho từng cột tương ứng với kiểu dữ liệu nhất định. Chẳng hạn cột dữ liệu ngày tháng thì chúng ta cần gán cho nó kiểu dữ liệu ngày tháng, hay cột tên thì cần gán kiểu dữ liệu chữ,...

Vậy các kiểu dữ liệu trong SQL thường dùng là gì? Chúng được sử dụng trong trường hợp nào? Cùng Gitiho tìm hiểu trong bài viết hôm nay nhé!

Tổng hợp các kiểu dữ liệu trong SQL server

Trong SQL, chúng ta có các kiểu dữ liệu thông dụng thường dùng trong các trường thông tin như kiểu chữ (Varchar, Nvarchar), hay kiểu số (Int, Float) hay kiểu ngày tháng (Date, Datetime) hay kiểu boolean trong SQL . Cùng tìm hiểu chi tiết nhé:

Kiểu dữ liệu dạng chuỗi văn bản trong SQL

Đây là kiểu dữ liệu SQL được gán cho các trường được lưu dưới dạng các chuỗi ký tự, chẳng hạn như tên, địa chỉ, hay văn bản bất kỳ. Một số kiểu dữ liệu mySQL dạng chuỗi mà bạn có thể tham khảo như:

KiểuKích thước tối đa (n)Mô tả
CHAR(n)8000 ký tự

Lưu trữ chuỗi ký tự có độ dài cố định (n).

Nếu chuỗi ngắn hơn thì thêm khoảng trắng bên phải để bù đủ số ký tự.

Ví dụ: Mã quốc gia, Mã nhân viên

VARCHAR(n)Theo số ký tự thực tế của bản ghi hoặc Tối đa 8000 ký tự.

kiểu varchar trong SQL dùng để lưu trữ chuỗi ký tự có độ dài thay đổi.

Ví dụ: Tên, Địa chỉ

TEXT

 

Tối đa 2GB.

Lưu trữ văn bản dài, không giới hạn chiều dài tối đa.
NCHAR(n)Tối đa 4000 ký tựKhi cần lưu trữ chuỗi với ký tự Unicode và độ dài cố định.
NVARCHAR(n)Theo số ký tự thực tế hoặc tối đa 4000 ký tựKhi cần lưu trữ chuỗi với ký tự Unicode và độ dài thay đổi.
NTEXTLưu trữ các chuỗi văn bản rất dài, lên đến 2^30 - 1 ký tự.Khi cần lưu trữ văn bản dài với ký tự Unicode.
BINARY(n)Tối đa 8000 kí tự.Khi cần lưu trữ dữ liệu nhị phân với độ dài cố định.
VARBINARY(n)Theo số ký tự thực tế hoặc tối đa 8000 ký tự.Khi cần lưu trữ dữ liệu nhị phân với độ dài thay đổi.
IMAGELưu trữ dữ liệu nhị phân rất lớn, lên đến 2^31 - 1 byte.Khi cần lưu trữ dữ liệu nhị phân rất lớn (hình ảnh, tài liệu)


 Để hiểu rõ hơn về các kiểu dữ liệu trong SQL Server và khi nào cần sử dụng chúng trong truy vấn, mời bạn đọc tham khảo khóa học SQL sau tại Gitiho:

Kiểu dữ liệu dạng chuỗi văn bản trong SQL

Kiểu dữ liệu dạng số

Với các trường dữ liệu kiểu dữ liệu trong SQL, chúng ta cần gán chúng cho các kiểu giá trị số như sau:

KiểuKích thước tối đaMô tả
BITLưu trữ giá trị nhị phân: 0 hoặc 1 hoặc NULL.Đây là một kiểu dữ liệu boolean cần dùng khi lưu trữ giá trị đúng/sai hoặc trạng thái nhị phân.
TINYINT từ 0 đến 255Kiểu tinyint trong SQL dùng khi cần lưu trữ số nguyên nhỏ hoặc giá trị đếm nhỏ.
SMALLINTtừ -32768 đến 32767Khi cần lưu trữ số nguyên vừa phải, tiết kiệm bộ nhớ.
INTsố nguyên từ -2,147,483,648 đến 2,147,483,647.Khi cần lưu trữ số nguyên lớn hơn
BIGINT số nguyên từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807.Khi cần lưu trữ số nguyên rất lớn, như mã định danh lớn.
DECIMAL(m,d)

m: mặc định là 18 nếu không được chỉ định.

d: mặc định là 0 nếu không được chỉ định.

Khi cần lưu trữ số với độ chính xác cao, như tiền tệ hoặc số liệu tài chính.
DEC(m,d)

m: mặc định là 18 nếu không được chỉ định.

d: mặc định là 0 nếu không được chỉ định.

Giống với kiểu dữ liệu DECIMAL(m,d).
NUMERIC(m,d)

m: mặc định là 18 nếu không được chỉ định.

d: mặc định là 0 nếu không được chỉ định.

Giống với kiểu dữ liệu DECIMAL(m,d).
FLOAT(n)n xác định độ chính xác; mặc định là 53 bit nếu không được chỉ định cụ thể.Khi cần lưu trữ số thực với độ chính xác không cố định.
REALtương đương với FLOAT(24)Khi cần lưu trữ số thực với độ chính xác thấp hơn.
SMALLMONEYLưu trữ số tiền với phạm vi từ -214,748.3648 đến 214,748.3647.Khi cần lưu trữ số tiền với phạm vi nhỏ hơn.
MONEYLưu trữ số tiền với phạm vi từ -922,337,203,685,477.5808 đến 922,337,203,685,477.5807.Khi cần lưu trữ số tiền với phạm vi lớn hơn SMALLMONEY.


 

Kiểu dữ liệu dạng số

Kiểu dữ liệu date trong SQL

Trong database không thể thiếu các trường dữ liệu chứa thông tin về ngày tháng năm. Lúc này, chúng ta sẽ sử dụng kiểu dữ liệu ngày tháng để gán cho các trường thông tin này. Cụ thể:

Kiểu dữ liệuKích thước tối đaMô tả
DATEtừ '0001-01-01' đến '9999-12-31’.Biểu diễn ngày theo định dạng 'YYYY-MM-DD' mà không có giờ, phút, giây.
DATETIMELưu trữ thời gian từ '1753-01-01 00:00:00' đến '9999-12-31 23:59:59'Khi cần lưu trữ cả ngày và giờ với độ chính xác đến giây theo định dạng 'YYYY-MM-DD HH:MM:SS'
DATETIME2Lưu trữ thời gian từ từ '0001-01-01 00:00:00' đến '9999-12-31 23:59:59:9999999'Khi cần lưu trữ ngày và giờ với độ chính xác tới số thập phân của giây dưới dạng 'YYYY-MM-DD hh:mm:ss[.số giây thập phân]'
SMALLDATETIME

Lưu trữ thời gian từ '1900-01-01 00:00:00' đến '2079-06-06 23:59:59'.


 

Khi cần lưu trữ ngày và giờ với phạm vi nhỏ hơn và độ chính xác đến phút dưới dạng 'YYYY-MM-DD hh:mm:ss’
TIMElưu trữ thời gian từ '00:00:00.0000000' đến '23:59:59.9999999'.Lưu trữ thời gian trong ngày, không cần ngày tháng dưới dạng 'hh:mm:ss[.nnnnnnn]'
DATETIMEOFFSET

lưu trữ thời gian từ '00:00:00' đến '23:59:59:9999999'.

Múi giờ lấy từ -14:00 đến +14:00.


 

Lưu trữ ngày, giờ và thông tin về múi giờ dưới dạng YYYY-MM-DD hh:mm:ss[.nnnnnnn]' [{+|-}hh:mm]


 

Kiểu dữ liệu date trong SQL

Xem thêm: HƯỚNG DẪN VỀ LỆNH LIMIT VÀ OFFSET TRONG MySQL

Một số kiểu dữ liệu khác trong SQL

Ngoài 3 kiểu dữ liệu phổ biến thường dùng ở trên, bạn còn có thể bắt gặp một số kiểu dữ liệu sau:

KiểuMô tả
tableDùng để lưu trữ một bảng tạm thời hoặc bảng biến thể trong các truy vấn SQL.
sql_variantKhi cần lưu trữ dữ liệu có kiểu không xác định trước, hoặc kiểu dữ liệu có thể thay đổi.
xmlKhi cần lưu trữ dữ liệu theo định dạng XML và thực hiện các thao tác trên dữ liệu XML.
uniqueidentifierKhi cần lưu trữ giá trị GUID để đảm bảo tính duy nhất, thường dùng trong các khóa chính.
cursorKhi cần xử lý dữ liệu theo hàng, thay vì thao tác trên toàn bộ tập hợp dữ liệu cùng lúc.


 

Lưu ý khi sử dụng kiểu dữ liệu trong SQL

Kiểu dữ liệu NUMERIC và DECIMALtrong SQL

Hai kiểu dữ liệu này đều dùng để lưu trữ số thực với số thập phân cố định với độ chính xác cao. Ví dụ khi bạn khai báo kiểu dữ liệu cho cột là DECIMAL(10, 2) thì giá trị cột đó sẽ được lưu với tổng cộng 10 chữ số, trong đó phần thập phân có 2 chữ số.

Kiểu dữ liệu Money:

Được dùng để lưu trữ các giá trị tiền tệ với độ chính xác cao theo đơn vị tiền tệ của hệ thống. Do đó, bạn cần xác định rõ đơn vị tiền tệ cho database trước để tránh lỗi khi nhập liệu.

Kiểu image trong SQL:

Các dữ liệu nhị phân như hình ảnh, âm thanh hay video thường được lưu trữ trong SQL dưới dạng kiểu dữ liệu IMAGE hoặc VARBINARY(MAX). Từ phiên bản SQL Server 2005, Microsoft đã khuyến khích người dùng sử dụng  VARBINARY(MAX) thay vì IMAGE, bởi VARBINARY(MAX) hỗ trợ lưu trữ dữ liệu nhị phân với độ dài linh hoạt. 

Cuối cùng, để có thể truy vấn các dữ liệu nhị phân, bạn có thể sử dụng đến phương thức của ngôn ngữ lập trình hay các framework tương ứng.

Kết luận

Trên đây là tổng hợp các kiểu dữ liệu trong SQL phổ biến mà bạn có thể sẽ cần dùng đến trong quá trình truy vấn dữ liệu. Nếu có bất kỳ thắc mắc hay câu hỏi nào, đừng ngần ngại để lại bình luận ở khung bên dưới. Gitiho cảm ơn và chúc bạn thành công!

Xem thêm: 

Cách dùng toán tử IN và NOT IN trong SQL, kèm ví dụ

Hướng dẫn cách dùng các ký tự đại diện trong MySQL

Khóa học giúp bạn làm chủ ngôn ngữ truy vấn dữ liệu phổ biến SQL từ cơ bản đến nâng cao. Từ đó có thể tự tin xây dựng, truy vấn, và tối ưu hóa các cơ sở dữ liệu phức tạp, hỗ trợ phân tích, làm báo cáo và ra quyết định kinh doanh một cách hiệu quả.

Đăng ký học thử để trải nghiệm ngay hôm nay!

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông