Các kiểu dữ liệu (Data Types) trong MariaDB
Việc định nghĩa các cột (fields) trong cơ sở dữ liệu một cách hợp lý là rất quan trọng để tối ưu hiệu suất. Một nguyên tắc cơ bản là chỉ sử dụng kiểu dữ liệu và kích thước cần thiết. Ví dụ, nếu một cột chỉ cần lưu 5 ký tự, thì không nên khai báo với độ dài 20 ký tự để tránh lãng phí tài nguyên.

Trong MariaDB, các kiểu dữ liệu được chia thành ba nhóm chính:
- Kiểu số (Numeric Data Types)
- Kiểu ngày và thời gian (Date and Time Data Types)
- Kiểu chuỗi (String Data Types)
Kiểu số (Numeric Data Types) trong MariaDB
Số nguyên (Integer Types)
Kiểu dữ liệu | Phạm vi giá trị (signed) | Phạm vi giá trị (unsigned) | Mô tả |
---|---|---|---|
TINYINT | -128 đến 127 | 0 đến 255 | Số nguyên nhỏ |
BOOLEAN | 0 hoặc 1 | - | 0 = false , 1 = true |
SMALLINT | -32,768 đến 32,767 | 0 đến 65,535 | Số nguyên nhỏ hơn INT |
MEDIUMINT | -8,388,608 đến 8,388,607 | 0 đến 16,777,215 | Số nguyên trung bình |
INT (hoặc INTEGER) | -2,147,483,648 đến 2,147,483,647 | 0 đến 4,294,967,295 | Số nguyên thông thường |
BIGINT | -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 | 0 đến 18,446,744,073,709,551,615 | Số nguyên lớn |
Ghi chú:
- Khi khai báo UNSIGNED, giá trị âm sẽ bị loại bỏ, và phạm vi giá trị tăng gấp đôi.
- Sử dụng ZEROFILL sẽ tự động điền số
0
vào bên trái số nguyên để đạt độ dàiM
đã chỉ định.
Số thực (Floating-Point Types)
Kiểu dữ liệu | Phạm vi giá trị | Mô tả |
---|---|---|
DECIMAL (hoặc NUMERIC, FIXED, DEC) | Tổng tối đa 65 chữ số, với tối đa 30 chữ số thập phân | Số thực có độ chính xác cao, hữu ích cho tài chính, kế toán |
FLOAT | -3.402823466E+38 đến 3.402823466E+38 | Số thực nhỏ |
DOUBLE (hoặc REAL, DOUBLE PRECISION) | -1.7976931348623157E+308 đến 1.7976931348623157E+308 | Số thực kích thước trung bình |
Ghi chú:
Bài viết này được đăng tại [free tuts .net]
DECIMAL(M, D)
:M
là tổng số chữ số,D
là số chữ số phần thập phân. NếuD = 0
, giá trị sẽ được làm tròn thành số nguyên.
Kiểu dữ liệu đặc biệt
Kiểu dữ liệu | Mô tả |
---|---|
BIT(M) | Kiểu dữ liệu nhị phân, số bit M tối đa là 64 |
Kiểu ngày và giờ (Date and Time Data Types) trong MariaDB
Kiểu dữ liệu | Phạm vi | Định dạng | Mô tả |
---|---|---|---|
DATE | 1000-01-01 đến 9999-12-31 | YYYY-MM-DD |
Ngày |
TIME | -838:59:59.999999 đến 838:59:59.999999 | HH:MM:SS |
Thời gian |
DATETIME | 1000-01-01 00:00:00 đến 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS |
Ngày và giờ |
TIMESTAMP | 1970-01-01 00:00:01 UTC đến 2038-01-19 03:14:07 UTC | YYYY-MM-DD HH:MM:SS |
Dấu thời gian, thường dùng để lưu thời gian cập nhật dữ liệu |
YEAR | 1901 đến 2155 | YYYY |
Chỉ lưu năm |
Kiểu chuỗi (String Data Types) trong MariaDB
Kiểu chuỗi ngắn
Kiểu dữ liệu | Độ dài tối đa | Mô tả |
---|---|---|
CHAR(M) | 0 - 255 ký tự | Chuỗi có độ dài cố định |
VARCHAR(M) | 0 - 65,535 ký tự | Chuỗi có độ dài thay đổi |
Ghi chú:
- CHAR luôn có độ dài cố định, nếu dữ liệu ngắn hơn
M
, nó sẽ tự động thêm dấu cách vào cuối. - VARCHAR chỉ sử dụng đúng số ký tự cần thiết, giúp tiết kiệm dung lượng.
Kiểu nhị phân
Kiểu dữ liệu | Độ dài tối đa | Mô tả |
---|---|---|
BINARY(M) | 0 - 255 byte | Chuỗi nhị phân có độ dài cố định |
VARBINARY(M) | 0 - 65,535 byte | Chuỗi nhị phân có độ dài thay đổi |
Kiểu BLOB và TEXT
Kiểu dữ liệu | Độ dài tối đa | Mô tả |
---|---|---|
TINYBLOB | 255 byte | Lưu trữ dữ liệu nhị phân nhỏ |
BLOB | 65,535 byte | Dữ liệu nhị phân lớn |
MEDIUMBLOB | 16,777,215 byte | Dữ liệu nhị phân rất lớn |
LONGBLOB | 4GB | Dữ liệu nhị phân cực lớn |
TINYTEXT | 255 ký tự | Văn bản ngắn |
TEXT | 65,535 ký tự | Văn bản trung bình |
MEDIUMTEXT | 16,777,215 ký tự | Văn bản lớn |
LONGTEXT | 4GB | Văn bản cực lớn |
Ghi chú:
TEXT
vàBLOB
không hỗ trợ INDEX trực tiếp, trừ khi dùng FULLTEXT INDEX.
Kiểu ENUM và SET
Kiểu dữ liệu | Mô tả |
---|---|
ENUM('value1', 'value2', ...) | Một cột có giá trị cố định từ danh sách đã định trước |
SET('value1', 'value2', ...) | Một cột có thể chứa một hoặc nhiều giá trị từ danh sách đã định trước (tối đa 64 giá trị) |
Ghi chú:
- ENUM chỉ chứa một giá trị từ danh sách.
- SET có thể chứa nhiều giá trị cùng lúc.
Kết bài
MariaDB cung cấp nhiều kiểu dữ liệu khác nhau phù hợp với nhiều nhu cầu khác nhau. Việc chọn đúng kiểu dữ liệu giúp tối ưu dung lượng lưu trữ và tăng hiệu suất truy vấn. Khi thiết kế cơ sở dữ liệu, hãy luôn xem xét:
- Sử dụng kiểu số nguyên thay vì kiểu số thực nếu không cần thiết.
- Dùng
CHAR
nếu chuỗi có độ dài cố định,VARCHAR
nếu độ dài thay đổi. - Sử dụng
TEXT
hoặcBLOB
cho dữ liệu lớn. - Dùng
ENUM
hoặcSET
khi dữ liệu có danh sách giới hạn các giá trị hợp lệ.
Việc chọn đúng kiểu dữ liệu ngay từ đầu giúp cơ sở dữ liệu hoạt động hiệu quả và ổn định hơn.