[Tìm hiểu] Các kiểu dữ liệu trong MySQL quan trọng cần biết

MySQL là một trong những hệ quản trị cơ sở dữ liệu phổ biến nhất hiện nay, được ứng dụng rộng rãi trong nhiều lĩnh vực như web, di động, và nhiều hơn nữa. Để có thể khai thác tối ưu các tính năng của MySQL, việc hiểu rõ về các kiểu dữ liệu trong MySQL là rất quan trọng. Trong bài viết sau đây của VinaHost, chúng ta sẽ tìm hiểu về các loại dữ liệu cơ bản trong MySQL, giúp bạn có được nền tảng kiến thức cần thiết để bắt đầu làm việc với MySQL.

1. Cơ sở dữ liệu MySQL là gì?

Cơ sở dữ liệu MySQL là một hệ thống quản lý cơ sở dữ liệu (DBMS) phổ biến, mã nguồn mở và miễn phí. Nó được phát triển, hỗ trợ và duy trì bởi Oracle Corporation. MySQL được sử dụng rộng rãi trên toàn thế giới cho các ứng dụng web và hoạt động của doanh nghiệp. MySQL được đánh giá là có tính linh hoạt, hiệu suất và tính ổn định cao.

MySQL hỗ trợ ngôn ngữ truy vấn SQL (Structured Query Language) và cung cấp một loạt các tính năng như tạo, đọc, cập nhật và xóa dữ liệu từ cơ sở dữ liệu. Nó cũng có thể tích hợp với nhiều ngôn ngữ lập trình khác nhau như PHP, Java, Python,….

Xem thêm: MySQL là gì | Cài đặt MySQL trên Windows & Server/VPS

2. Kiểu dữ liệu là gì?

Trong cơ sở dữ liệu, kiểu dữ liệu đóng vai trò quan trọng như là nền tảng cho việc xác định đúng về bản chất của các giá trị mà từng trường hoặc cột có thể chứa. Từ số, chuỗi đến ngày tháng, mỗi loại dữ liệu không chỉ có một định dạng cụ thể mà còn có giới hạn lưu trữ rõ ràng.

Trong thế giới phức tạp của MySQL, sự đa dạng về kiểu dữ liệu cung cấp một ưu điểm lớn, đem đến nhiều tùy chọn để tối ưu hóa việc lưu trữ và xử lý dữ liệu. Những kiểu dữ liệu trong MySQL này không chỉ giúp xác định đặc tính của dữ liệu mà còn đóng vai trò quan trọng trong việc bảo vệ tính toàn vẹn và hiệu suất của cơ sở dữ liệu.

cac kieu du lieu trong MySQL
Kiểu dữ liệu đóng vai trò quan trọng như là nền tảng cho việc xác định đúng về bản chất của các giá trị mà từng trường hoặc cột có thể chứa.

Xem thêm: Database Là Gì? Vai Trò và Phân Loại Database Phổ Biến

3. Các kiểu dữ liệu trong MySQL

Dưới đây là những kiểu dữ liệu trong MySQL.

3.1. Kiểu dữ liệu chuỗi (String Types)

Trong MySQL, bạn có thể sử dụng các kiểu dữ liệu chuỗi để lưu trữ các giá trị văn bản như nội dung, địa chỉ, và họ tên.

Có tổng cộng 6 dạng kiểu dữ liệu chuỗi, bao gồm: CHAR, VARCHAR, BINARY, VARBINARY, BLOB, và TEXT.

3.1.1. Kiểu dữ liệu VARCHAR và CHAR

  • CHAR(size): Là kiểu dữ liệu trong MySQL, dạng chuỗi với độ dài CỐ ĐỊNH (có thể chứa chữ cái, số và các ký tự đặc biệt). Tham số “size” chỉ định độ dài của cột dưới dạng số ký tự, có thể từ 0 đến 255. Giá trị mặc định là 1.
  • VARCHAR(size): Đây là kiểu dữ liệu trong MySQL, dạng chuỗi với độ dài BIẾN (có thể chứa chữ cái, số và các ký tự đặc biệt). Tham số “size” chỉ định độ dài tối đa của cột tính bằng số ký tự, có thể từ 0 đến 65535.

3.1.2. Kiểu dữ liệu VARBINARY và BINARY

  • BINARY(size): Tương tự như CHAR(), nhưng lưu trữ chuỗi byte dưới dạng nhị phân. Tham số “size” chỉ định độ dài của cột tính bằng số byte. Giá trị mặc định là 1.
  • VARBINARY(size): Tương tự như VARCHAR(), nhưng lưu trữ chuỗi byte dưới dạng nhị phân. Tham số “size” chỉ định độ dài tối đa của cột tính bằng số byte.

3.1.3. Kiểu dữ liệu TEXT và BLOB

  • TINYBLOB: Dành cho BLOB (Binary Large Objects) với độ dài không vượt quá 255 byte.
  • TINYTEXT: Lưu trữ một chuỗi có độ dài tối đa là 255 ký tự.
  • TEXT(size): Dùng để lưu trữ một chuỗi có độ dài không quá 65,535 byte.
  • BLOB(size): Dành cho BLOB (Binary Large Objects), có thể lưu trữ đến 65.535 byte dữ liệu.

— Tạo bảng Images với trường ImageData kiểu BLOB (Binary Large Object)

CREATE TABLE Images (

  ImageID INT,

  ImageData BLOB

);

— Chèn dữ liệu vào bảng Images

INSERT INTO Images (ImageID, ImageData) VALUES (1, LOAD_FILE(‘/path/to/image.jpg’));

  • MEDIUMTEXT: Được sử dụng để giữ một chuỗi có độ dài tối đa là 16,777,215 ký tự.
  • MEDIUMBLOB: Lưu trữ các đối tượng BLOB (Binary Large Objects) có kích thước tối đa là 16,777,215 byte.
  • LONGTEXT: Chứa một chuỗi có độ dài không vượt quá 4,294,967,295 ký tự.
  • LONGBLOB: Dành cho các đối tượng BLOB (Binary Large Objects) với dung lượng lên đến 4,294,967,295 byte.
  • ENUM(val1, val2, val3, …): Đối tượng chuỗi chỉ có thể nhận một giá trị từ danh sách các giá trị có sẵn, có thể chứa tối đa 65535 giá trị, và nếu giá trị chèn không có trong danh sách, sẽ được chèn giá trị trống. Các giá trị được sắp xếp theo thứ tự nhập vào.
  • SET(val1, val2, val3, …): Một đối tượng chuỗi có thể chứa 0 hoặc nhiều giá trị từ danh sách có sẵn, có thể chứa tối đa 64 giá trị.

— Tạo bảng Customers với trường Name kiểu VARCHAR và trường Address kiểu TEXT

CREATE TABLE Customers (

  Name VARCHAR(100),

  Address TEXT

);

— Chèn dữ liệu vào bảng Customers

INSERT INTO Customers (Name, Address) VALUES (‘John Doe’, ‘123 Main Street’);

INSERT INTO Customers (Name, Address) VALUES (‘Jane Smith’, ‘456 Elm Street’);

3.2. Kiểu dữ liệu số (Numeric Data Types)

Có hai loại kiểu dữ liệu trong MySQL có dạng số:

  • Kiểu dữ liệu số nguyên.
  • Kiểu dữ liệu số thực.

Kiểu dữ liệu MySQL này cho phép lưu trữ và thực hiện các thao tác số với độ chính xác và kiểu dữ liệu phù hợp.

cac kieu du lieu trong MySQL
Các kiểu dữ liệu trong MySQL

3.2.1. Kiểu dữ liệu số nguyên

  • BIT(size): Đây là loại dữ liệu bit, với số lượng bit được chỉ định rõ trong kích thước. Phạm vi của kích thước có thể từ 1 đến 64. Giá trị mặc định cho kích thước là 1.
  • TINYINT(size): Là một số nguyên rất nhỏ, có phạm vi từ -128 đến 127 khi đã ký, và từ 0 đến 255 khi chưa ký. Tham số kích thước chỉ ra chiều rộng tối đa của giá trị được hiển thị (tối đa là 255).
  • BOOL: Biểu diễn giá trị logic, trong đó 0 được xem là sai và bất kỳ giá trị nào khác không là đúng.
  • BOOLEAN: Tương đương với BOOL.

— Tạo bảng Products với trường IsActive kiểu BOOLEAN

CREATE TABLE Products (

  IsActive BOOLEAN

);

— Chèn dữ liệu vào bảng Products

INSERT INTO Products (IsActive) VALUES (TRUE);

INSERT INTO Products (IsActive) VALUES (FALSE);

  • SMALLINT(size): Là một số nguyên nhỏ, với phạm vi từ -32768 đến 32767 khi đã ký, và từ 0 đến 65535 khi chưa ký. Tham số kích thước chỉ ra chiều rộng tối đa của giá trị được hiển thị (tối đa là 255).
  • MEDIUMINT(size): Là một số nguyên trung bình, với phạm vi từ -8388608 đến 8388607 khi đã ký, và từ 0 đến 16777215 khi chưa ký. Tham số kích thước chỉ ra chiều rộng tối đa của giá trị được hiển thị (tối đa là 255).
  • INT(size): Là một số nguyên trung bình, với phạm vi từ -2147483648 đến 2147483647 khi đã ký, và từ 0 đến 4294967295 khi chưa ký. Tham số kích thước chỉ ra chiều rộng tối đa của giá trị được hiển thị (tối đa là 255).
  • INTEGER(size): Tương đương với INT(size).
  • BIGINT(size): Là một số nguyên lớn, với phạm vi từ -9223372036854775808 đến 9223372036854775807 khi đã ký, và từ 0 đến 18446744073709551615 khi chưa ký. Tham số kích thước chỉ ra chiều rộng tối đa của giá trị được hiển thị (tối đa là 255).

3.2.2. Kiểu dữ liệu thực

  • FLOAT(size, d): Là một số dấu phẩy động. Số lượng tổng chữ số được xác định bởi kích thước. Số chữ số sau dấu thập phân được xác định bởi tham số d. MySQL 8.0.17 không chấp nhận cú pháp này và sẽ loại bỏ nó trong các phiên bản sau.
  • FLOAT(p): Một số dấu phẩy động. Giá trị p được sử dụng để quyết định liệu sử dụng FLOAT hay DOUBLE cho kiểu dữ liệu kết quả. Nếu p nằm trong khoảng từ 0 đến 24, kiểu dữ liệu sẽ là FLOAT (). Nếu p nằm trong khoảng từ 25 đến 53, kiểu dữ liệu sẽ là DOUBLE ().
  • DOUBLE(size, d): Là một số dấu phẩy động với kích thước thông thường. Số tổng chữ số được xác định bởi kích thước. Số chữ số sau dấu thập phân được xác định bởi tham số d.
  • DECIMAL(size, d): Một số điểm cố định chính xác. Số tổng chữ số được xác định bởi kích thước. Số chữ số sau dấu thập phân được xác định bởi tham số d. Giá trị tối đa cho kích thước là 65 và giá trị tối đa cho d là 30. Giá trị mặc định cho kích thước là 10 và cho d là 0.
  • DEC(size, d): Tương đương với DECIMAL(size,d).

— Tạo bảng Employees với trường ID kiểu INTEGER và trường Salary kiểu DECIMAL

CREATE TABLE Employees (

  ID INT,

  Salary DECIMAL(10, 2)

);

— Chèn dữ liệu vào bảng Employees

INSERT INTO Employees (ID, Salary) VALUES (1, 5000);

INSERT INTO Employees (ID, Salary) VALUES (2, 7000);

3.3. Kiểu dữ liệu thời gian

Khi sử dụng các kiểu dữ liệu trong MySQL dạng thời gian, cần chú ý đến định dạng và phạm vi được hỗ trợ.

3.3.1. Kiểu dữ liệu DATE

Kiểu dữ liệu MySQL ngày tháng được biểu diễn trong định dạng YYYY-MM-DD và hỗ trợ phạm vi từ ‘1000-01-01’ đến ‘9999-12-31’.

3.3.2. Kiểu dữ liệu DATETIME

Kiểu dữ liệu MySQL kết hợp ngày và giờ được biểu diễn trong định dạng YYYY-MM-DD hh:mm:ss và hỗ trợ phạm vi từ ‘1000-01-01 00:00:00’ đến ‘9999-12-31 23:59:59’. Để tự động khởi tạo và cập nhật ngày và giờ hiện tại, có thể thêm DEFAULT và ON UPDATE vào định nghĩa cột.

3.3.3. Kiểu dữ liệu TIMESTAMP

Dữ liệu TIMESTAMP (dấu thời gian) là kiểu dữ liệu MySQL được biểu diễn bằng giá trị TIMESTAMP, được lưu trữ dưới dạng số giây tính từ kỷ nguyên Unix (‘1970-01-01 00:00:00’ UTC) và có định dạng YYYY-MM-DD hh:mm:ss. Phạm vi được hỗ trợ từ ‘1970-01-01 00:00:01’ UTC đến ‘2038-01-09 03:14:07’ UTC. Kiểu dữ liệu trong MySQL dạng này có thể chỉ định tự động khởi tạo và cập nhật cho ngày và giờ hiện tại.

3.3.4. Kiểu dữ liệu thời gian

Dữ liệu thời gian được biểu diễn trong định dạng hh:mm:ss và hỗ trợ phạm vi từ ‘-838:59:59’ đến ‘838:59:59’.

3.3.5. Kiểu dữ liệu năm

Một năm được biểu diễn trong định dạng bốn chữ số, với các giá trị cho phép từ 1901 đến 2155 và 0000. Trong MySQL 8.0, không hỗ trợ năm trong định dạng hai chữ số.

— Tạo bảng Orders với trường OrderDate kiểu DATE và trường OrderTime kiểu TIME

CREATE TABLE Orders (

  OrderDate DATE,

  OrderTime TIME

);

— Chèn dữ liệu vào bảng Orders

INSERT INTO Orders (OrderDate, OrderTime) VALUES (‘2023-07-05′, ’12:30:45’);

INSERT INTO Orders (OrderDate, OrderTime) VALUES (‘2023-07-06′, ’09:15:00’);

cac kieu du lieu trong MySQL
Khi sử dụng các kiểu dữ liệu MySQL dạng thời gian, cần chú ý đến định dạng và phạm vi được hỗ trợ.

Xem thêm: PHPMyAdmin là gì | Cài đặt & Sử dụng PHPMyAdmin A-Z

4. Tổng hợp đầy đủ các kiểu dữ liệu trong MySQL

Dưới đây là bảng tổng hợp đầy đủ các kiểu dữ liệu trong MySQL mà bạn thường dùng.

Kiểu Dữ LiệuMô Tả
VARCHARChuỗi ký tự có độ dài biến đổi
CHARChuỗi ký tự có độ dài cố định
VARBINARYDữ liệu nhị phân có độ dài biến đổi
BINARYDữ liệu nhị phân có độ dài cố định
TINYBLOBDữ liệu nhị phân nhỏ có độ dài biến đổi
TINYTEXTVăn bản nhỏ có độ dài biến đổi
TEXTVăn bản có độ dài biến đổi
BLOBDữ liệu nhị phân có độ dài biến đổi
MEDIUMTEXTVăn bản trung bình có độ dài biến đổi
MEDIUMBLOBDữ liệu nhị phân trung bình có độ dài biến đổi
LONGTEXTVăn bản lớn có độ dài biến đổi
LONGBLOBDữ liệu nhị phân lớn có độ dài biến đổi
ENUM(val1, val2, val3, …)Tập hợp các giá trị được chỉ định trước
SET(val1, val2, val3, …)Tập hợp các giá trị được chỉ định trước, có thể lựa chọn nhiều giá trị
BITKiểu giá trị bit
TINYINTSố nguyên nhỏ, phạm vi từ -128 đến 127
BOOLSố 0 được coi là sai, các giá trị khác 0 được coi là đúng
BOOLEANTương đương với BOOL
SMALLINTSố nguyên nhỏ, phạm vi từ -32768 đến 32767
MEDIUMINTSố nguyên trung bình, phạm vi từ -8388608 đến 8388607
INTSố nguyên, phạm vi từ -2147483648 đến 2147483647
INTEGERBằng với INT
BIGINTSố nguyên lớn, phạm vi từ -9223372036854775808 đến 9223372036854775807
FLOATSố dấu phẩy động
DOUBLESố dấu phẩy động với phạm vi lớn hơn FLOAT
DECIMALSố điểm cố định chính xác
DECBằng với DECIMAL
DATENgày, định dạng YYYY-MM-DD
DATETIMENgày và giờ, định dạng YYYY-MM-DD hh:mm:ss
TIMESTAMPDấu thời gian
TIMEThời gian, định dạng hh:mm:ss
YEARNăm, định dạng bốn chữ số

5. Các lưu ý khi sử dụng kiểu dữ liệu trong MySQL

Khi sử dụng MySQL, bạn cần lưu ý những điều sau đây:

  • Lựa chọn kiểu dữ liệu MySQL phù hợp với mục đích và nội dung để tối ưu không gian lưu trữ và hiệu suất cơ sở dữ liệu, hạn chế sự trùng lặp.
  • Thận trọng khi quyết định độ dài của chuỗi dữ liệu để tránh lãng phí không gian lưu trữ.
  • Chọn kiểu dữ liệu MySQL số thích hợp với yêu cầu cụ thể của dự án để tránh sai sót trong quá trình tính toán.
  • Tận dụng kiểu dữ liệu ngày tháng phù hợp để đảm bảo tính chính xác và thuận tiện trong xử lý các thao tác liên quan đến ngày tháng.
  • Khi làm việc với kiểu dữ liệu MySQL dạng nhị phân, cân nhắc kích thước và định dạng để tối ưu hiệu suất lưu trữ và truy xuất.

Xem thêm: [HOT] Cách sửa lỗi MySQL Server has gone away hiệu quả

6. Những câu hỏi thường gặp

6.1. Hình ảnh nên sử dụng kiểu dữ liệu MySQL gì?

Trong MySQL, khi lưu trữ hình ảnh, bạn nên sử dụng kiểu dữ liệu BLOB (Binary Large Object) hoặc LONGBLOB. Kiểu dữ liệu BLOB cho phép lưu trữ dữ liệu nhị phân lớn, bao gồm hình ảnh, video, âm thanh, và các loại dữ liệu khác mà không cần chuyển đổi dữ liệu thành dạng văn bản trước khi lưu trữ. LONGBLOB là một biến thể của BLOB, được sử dụng khi cần lưu trữ những dữ liệu lớn hơn.

7. Tổng kết

Bên cạnh các kiểu dữ liệu đã đề cập, MySQL còn cung cấp một loạt các kiểu dữ liệu khác như JSON, GEOMETRY, và nhiều hơn nữa. Điều này cho phép các nhà phát triển tạo ra cấu trúc dữ liệu phù hợp với yêu cầu cụ thể của dự án.

Việc nắm vững về các kiểu dữ liệu trong MySQL sẽ hỗ trợ trong quá trình thiết kế cơ sở dữ liệu đúng và hiệu quả, đồng thời tối ưu hóa hiệu suất của ứng dụng. Bạn có thể truy cập vào Blog của VinaHost TẠI ĐÂY để xem thêm nhiều bài viết hấp dẫn khác. Hoặc liên hệ ngay cho chúng tôi khi bạn cần hỗ trợ nhé:

Xem thêm một số bài viết khác

SQL Server là gì? | Hướng dẫn Tải & Cài đặt SQL Server

[Tìm Hiểu] Oracle là gì? | Tổng hợp kiến thức [A-Z] về Oracle

[Tìm Hiểu] Big Data là gì | Tổng hợp thông tin về dữ liệu lớn

[Data là gì] | Vai trò & Ứng dụng dữ liệu cho doanh nghiệp

Đánh giá
5/5 - (6 bình chọn)
Đăng ký nhận tin

Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vinahost

    Bài viết liên quan
    Bình luận
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Phản hồi nội tuyến
    Xem tất cả bình luận
    Tổng lượt truy cập: lượt xem