1. Giới thiệu
SQL Data Types (kiểu dữ liệu) trong MySQL xác định loại dữ liệu mà một cột có thể chứa. Khi bạn tạo bảng, việc chọn kiểu dữ liệu phù hợp cho từng cột là rất quan trọng vì nó ảnh hưởng đến việc lưu trữ, truy xuất dữ liệu và hiệu suất của cơ sở dữ liệu. MySQL cung cấp nhiều loại dữ liệu khác nhau để lưu trữ chuỗi ký tự, số, ngày tháng và các loại dữ liệu đặc biệt khác.
2. Các nhóm SQL Data Types chính trong MySQL
MySQL chia các kiểu dữ liệu thành ba nhóm chính:
- Kiểu dữ liệu số (Numeric Data Types)
- Kiểu dữ liệu chuỗi (String Data Types)
- Kiểu dữ liệu ngày tháng (Date and Time Data Types)
3. Kiểu dữ liệu số trong MySQL
Các kiểu dữ liệu số trong MySQL được chia làm hai loại chính: số nguyên và số thực.
a. Số nguyên (Integer types)
TINYINT: Lưu trữ số nguyên nhỏ, phạm vi giá trị từ -128 đến 127 (nếu là UNSIGNED, phạm vi từ 0 đến 255).SMALLINT: Lưu trữ số nguyên, phạm vi giá trị từ -32,768 đến 32,767 (UNSIGNED: 0 đến 65,535).MEDIUMINT: Lưu trữ số nguyên trung bình, phạm vi từ -8,388,608 đến 8,388,607 (UNSIGNED: 0 đến 16,777,215).- **
INThoặcINTEGER: Lưu trữ số nguyên lớn, phạm vi từ -2,147,483,648 đến 2,147,483,647 (UNSIGNED: 0 đến 4,294,967,295). BIGINT: Lưu trữ số nguyên rất lớn, phạm vi từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 (UNSIGNED: 0 đến 18,446,744,073,709,551,615).
Ví dụ về sử dụng số nguyên:
CREATE TABLE products (
product_id INT AUTO_INCREMENT,
product_name VARCHAR(100),
quantity INT,
PRIMARY KEY (product_id)
);b. Số thực (Floating-point types)
FLOAT(p): Lưu trữ số thực có độ chính xác đơn.plà số chữ số tổng (precision).DOUBLE(p, s): Lưu trữ số thực có độ chính xác kép.plà tổng số chữ số, vàslà số chữ số ở phần thập phân.DECIMAL(p, s): Lưu trữ số thực chính xác cố định.plà tổng số chữ số vàslà số chữ số thập phân.
Ví dụ về sử dụng số thực:
CREATE TABLE salaries (
employee_id INT,
salary DECIMAL(10, 2),
PRIMARY KEY (employee_id)
);Trong ví dụ trên, DECIMAL(10, 2) lưu trữ tối đa 10 chữ số, trong đó 2 chữ số là ở phần thập phân.
4. Kiểu dữ liệu chuỗi trong MySQL
Các kiểu dữ liệu chuỗi trong MySQL dùng để lưu trữ văn bản, chuỗi ký tự.
a. Kiểu dữ liệu chuỗi ký tự
CHAR(n): Lưu trữ chuỗi ký tự có độ dài cố định, vớinlà số ký tự. Tối đa 255 ký tự.VARCHAR(n): Lưu trữ chuỗi ký tự có độ dài thay đổi, vớinlà số ký tự tối đa. Tối đa 65,535 ký tự.TEXT: Lưu trữ chuỗi văn bản lớn, tối đa 65,535 ký tự.TINYTEXT: Chuỗi văn bản nhỏ, tối đa 255 ký tự.MEDIUMTEXT: Chuỗi văn bản trung bình, tối đa 16,777,215 ký tự.LONGTEXT: Chuỗi văn bản rất lớn, tối đa 4,294,967,295 ký tự.
Ví dụ về sử dụng VARCHAR và TEXT:
CREATE TABLE articles (
article_id INT AUTO_INCREMENT,
title VARCHAR(255),
content TEXT,
PRIMARY KEY (article_id)
);Trong ví dụ này:
titlelà kiểuVARCHAR(255), có thể lưu trữ tối đa 255 ký tự.contentlà kiểuTEXT, có thể lưu trữ các bài viết lớn hơn với kích thước tối đa 65,535 ký tự.
b. Kiểu dữ liệu nhị phân
BINARY(n): Lưu trữ chuỗi nhị phân có độ dài cố định, vớinlà số byte.VARBINARY(n): Lưu trữ chuỗi nhị phân có độ dài thay đổi, vớinlà số byte tối đa.BLOB: Lưu trữ dữ liệu nhị phân lớn (Binary Large Object), tối đa 65,535 byte.
Ví dụ về sử dụng BLOB:
CREATE TABLE files (
file_id INT AUTO_INCREMENT,
file_data BLOB,
PRIMARY KEY (file_id)
);Trong ví dụ này, file_data lưu trữ dữ liệu nhị phân như hình ảnh, tài liệu hoặc bất kỳ tệp nào.
5. Kiểu dữ liệu ngày tháng trong MySQL
Như đã trình bày chi tiết ở phần trước, MySQL cung cấp các kiểu dữ liệu để lưu trữ thông tin ngày tháng, bao gồm:
DATE: Lưu trữ ngày với định dạngYYYY-MM-DD.TIME: Lưu trữ thời gian với định dạngHH:MM:SS.DATETIME: Lưu trữ cả ngày và thời gian với định dạngYYYY-MM-DD HH:MM:SS.TIMESTAMP: Lưu trữ ngày và thời gian với múi giờ.YEAR: Lưu trữ năm với định dạngYYYY.
Ví dụ về sử dụng DATE và TIMESTAMP:
CREATE TABLE events (
event_id INT AUTO_INCREMENT,
event_name VARCHAR(100),
event_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (event_id)
);Trong ví dụ này:
event_datelưu trữ ngày của sự kiện.created_attự động ghi nhận thời gian khi bản ghi mới được tạo.
6. Tổng quan các kiểu dữ liệu trong MySQL
| Nhóm kiểu dữ liệu | Kiểu dữ liệu | Mô tả | Phạm vi giá trị |
|---|---|---|---|
| Số nguyên | TINYINT | Số nguyên nhỏ | -128 đến 127 (UNSIGNED: 0 đến 255) |
SMALLINT | Số nguyên vừa | -32,768 đến 32,767 (UNSIGNED: 0 đến 65,535) | |
MEDIUMINT | Số nguyên trung bình | -8,388,608 đến 8,388,607 (UNSIGNED: 0 đến 16,777,215) | |
INT / INTEGER | Số nguyên lớn | -2,147,483,648 đến 2,147,483,647 (UNSIGNED: 0 đến 4,294,967,295) | |
BIGINT | Số nguyên rất lớn | -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 (UNSIGNED: 0 đến 18,446,744,073,709,551,615) | |
| Số thực | FLOAT | Số thực có độ chính xác đơn | -3.402823466E+38 đến -1.175494351E-38, 0, và 1.175494351E-38 đến 3.402823466E+38 |
DOUBLE | Số thực có độ chính xác kép | Như FLOAT, nhưng có độ chính xác cao hơn | |
DECIMAL | Số thực chính xác với phần thập phân | Xác định bởi người dùng | |
| Chuỗi ký tự | CHAR(n) | Chuỗi ký tự có độ dài cố định | Tối đa 255 ký tự |
VARCHAR(n) | Chuỗi ký tự có độ dài thay đổi | Tối đa 65,535 ký tự | |
TEXT | Chuỗi văn bản lớn | Tối đa 65,535 ký tự | |
BLOB | Dữ liệu nhị phân | Tối đa 65,535 byte | |
| Ngày tháng | DATE | Ngày | YYYY-MM-DD |
TIME | Thời gian | HH:MM:SS | |
DATETIME | Ngày và thời gian | YYYY-MM-DD HH:MM:SS | |
TIMESTAMP | Ngày và thời gian với múi giờ | YYYY-MM-DD HH:MM:SS | |
YEAR | Năm | YYYY (1901 đến 2155) |
Kết luận
SQL Data Types đóng vai trò quan trọng trong việc thiết kế cơ sở dữ liệu, giúp xác định cách dữ liệu được lưu trữ và truy xuất. Hiểu và chọn đúng kiểu dữ liệu giúp tối ưu hóa lưu trữ, bảo mật và hiệu suất truy vấn.
- Kiểu dữ liệu số giúp quản lý các giá trị toán học.
- Kiểu dữ liệu chuỗi lưu trữ văn bản, thông tin miêu tả.
- Kiểu dữ liệu ngày tháng giúp quản lý dữ liệu về thời gian.
Hãy thử áp dụng các kiểu dữ liệu này trong các bài tập và dự án thực tế trên CodeTutHub để hiểu rõ hơn cách chúng hoạt động trong MySQL!









