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é!
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é:
Đâ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ểu | Kí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. |
NTEXT | Lư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. |
IMAGE | Lư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:
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ểu | Kích thước tối đa | Mô tả |
BIT | Lư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 255 | Kiểu tinyint trong SQL dùng khi cần lưu trữ số nguyên nhỏ hoặc giá trị đếm nhỏ. |
SMALLINT | từ -32768 đến 32767 | Khi cần lưu trữ số nguyên vừa phải, tiết kiệm bộ nhớ. |
INT | số 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. |
REAL | tươ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. |
SMALLMONEY | Lư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. |
MONEY | Lư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. |
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ệu | Kích thước tối đa | Mô tả |
DATE | từ '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. |
DATETIME | Lư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' |
DATETIME2 | Lư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’ |
TIME | lư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] |
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ểu | Mô tả |
table | Dù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_variant | Khi 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. |
xml | Khi 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. |
uniqueidentifier | Khi 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. |
cursor | Khi 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. |
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.
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:
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!