NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
07/11/2023
Lượt xem

Những kiểu dữ liệu trong MySQL (Data Types) mà bạn cần biết

07/11/2023
13 phút đọc
Lượt xem

Đánh giá

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

MySQL là hệ quản trị cơ sở dữ liệu phổ biến nhất hiện nay, được sử dụng rộng rãi trong các ứng dụng web, di động,… Để có thể sử dụng tốt MySQL, bạn cần phải hiểu rõ các kiểu dữ liệu mà nó hỗ trợ. Trong bài viết này, Vietnix sẽ giới thiệu đến bạn những kiểu dữ liệu quan trọng trong MySQL, giúp bạn nắm vững kiến thức cơ bản để bắt đầu sử dụng MySQL

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

Kiểu dữ liệu trong cơ sở dữ liệu là nền tảng cốt lõi cho phép chúng ta chỉ định chính xác bản chất của giá trị mà từng trường hoặc cột được phép chứa. Từ kiểu số, chuỗi đến ngày tháng, mỗi loại dữ liệu không chỉ đi kèm với một định dạng cụ thể mà còn gắn liền với một giới hạn lưu trữ rõ ràng.

Kiểu dữ liệu
Kiểu dữ liệu

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

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

Trong MySQL, có thể sử dụng kiểu dữ liệu chuỗi để lưu trữ các giá trị dạng văn bản như nội dung, địa chỉ, họ & tên. Kiểu dữ liệu chuỗi gồm 6 dạng chính là: CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT.

Kiểu dữ liệu chuỗi - String Types
Kiểu dữ liệu chuỗi – String Types

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

CHAR(size):

  • Một chuỗi có độ dài CỐ ĐỊNH (có thể chứa các chữ cái, số và các ký tự đặc biệt). Tham số kích thước chỉ định độ dài cột theo ký tự – có thể từ 0 đến 255. Mặc định là 1.

VARCHAR(size):

  • Một chuỗi có độ dài VARIABLE (có thể chứa các chữ cái, số và các ký tự đặc biệt).
  • Tham số kích thước chỉ định độ dài cột tối đa tính bằng ký tự – có thể từ 0 đến 65535.

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

BINARY(size):

  • Bằng với CHAR (), nhưng lưu trữ chuỗi byte nhị phân.
  • Tham số kích thước chỉ định độ dài cột tính bằng byte. Mặc định là 1.

VARBINARY(size):

  • Bằng với VARCHAR (), nhưng lưu trữ chuỗi byte nhị phân.
  • Tham số kích thước chỉ định độ dài cột tối đa tính bằng byte.

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

TINYBLOB:

  • Dành cho BLOB (Binary Large Objects).
  • Độ dài tối đa: 255 byte.

TINYTEXT:

  • Giữ một chuỗi có độ dài tối đa là 255 ký tự.

TEXT(size):

  • Giữ một chuỗi có độ dài tối đa là 65,535 byte.

BLOB(size):

  • Dành cho BLOB (Binary Large Objects). Lưu trữ lên đến 65.535 byte dữ liệu.

MEDIUMTEXT:

  • Giữ một chuỗi có độ dài tối đa là 16,777,215 ký tự.

MEDIUMBLOB:

  • Dành cho BLOB (Binary Large Objects). Lưu trữ lên đến 16.777.215 byte dữ liệu.

LONGTEXT:

  • Giữ một chuỗi có độ dài tối đa là 4,294,967,295 ký tự.

LONGBLOB:

  • Dành cho BLOB (Binary Large Objects). Chứa tới 4.294.967.295 byte dữ liệu.

ENUM(val1, val2, val3, …):

  • Một đối tượng chuỗi chỉ có thể có một giá trị, được chọn từ danh sách các giá trị có thể có.
  • Bạn có thể liệt kê tới 65535 giá trị trong danh sách ENUM.
  • Nếu một giá trị được chèn mà không có trong danh sách, một giá trị trống sẽ được chèn.
  • Các giá trị được sắp xếp theo thứ tự bạn nhập vào.

SET(val1, val2, val3, …):

  • Một đối tượng chuỗi có thể có 0 hoặc nhiều giá trị, được chọn từ danh sách các giá trị có thể.
  • Bạn có thể liệt kê tối đa 64 giá trị trong danh sách SET.
--Tạo bảng
CREATE TABLE Vietnix(
    VietnixID INT AUTO_INCREMENT PRIMARY KEY,
    VietnixName CHAR(50),             -- Định nghĩa cột với kiểu CHAR
    VietnixEmail VARCHAR(255),        -- Định nghĩa cột với kiểu VARCHAR
    VietnixDescription TEXT,          -- Định nghĩa cột với kiểu TEXT
    VietnixPreferences SET('Hosting', 'VPS', 'Domain', 'Firewall')  -- Định nghĩa cột với kiểu SET
);
--Chèn dữ liệu
INSERT INTO Users (VietnixName, VietnixEmail, VietnixDescription, VietnixPreferences) 
VALUES ('Vietnix.vn', 'vietnix@example.com', 'Hosting,VPS Tốc độ cao Top 1 Việt Nam.', 'reading,Vietnix');

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

Kiểu dữ liệu số bao gồm 2 dạng là:

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

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

Kiểu dữ liệu số - Numeric Data Types
Kiểu dữ liệu số – Numeric Data Types

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

BIT(size):

  • Kiểu giá trị bit. Số lượng bit trên mỗi giá trị được chỉ định rõ về kích thước. Tham số kích thước có thể giữ giá trị từ 1 đến 64. Giá trị mặc định cho kích thước là 1.

TINYINT(size):

  • Một số nguyên rất nhỏ. Phạm vi đã ký là từ -128 đến 127. Phạm vi chưa ký là từ 0 đến 255. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255).

BOOL:

  • Số 0 được coi là sai, các giá trị khác 0 được coi là đúng.

BOOLEAN:

  • Tương đương với BOOL.

SMALLINT(size):

  • Một số nguyên nhỏ. Dải ô đã ký là từ -32768 đến 32767. Dải ô chưa ký là từ 0 đến 65535. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255).

MEDIUMINT(size):

  • Một số nguyên trung bình. Dải ô đã ký là từ -8388608 đến 8388607. Dải ô chưa ký là từ 0 đến 16777215. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255).

INT(size):

  • Một số nguyên trung bình. Dải ô đã ký là từ -2147483648 đến 2147483647. Dải ô chưa ký là từ 0 đến 4294967295. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255).

INTEGER(size):

  • Bằng INT(size).

BIGINT(size):

  • Một số nguyên lớn. Dải ô đã ký là từ -9223372036854775808 đến 9223372036854775807. Dải ô chưa ký là từ 0 đến 18446744073709551615. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255).
--Tạo bảng
CREATE TABLE Vietnix(
    ProductID INT AUTO_INCREMENT PRIMARY KEY,
    Quantity SMALLINT UNSIGNED,    -- Sử dụng kiểu dữ liệu SMALLINT UNSIGNED cho số lượng
    Price DECIMAL(10, 2)           -- Sử dụng DECIMAL cho giá, với 10 chữ số và 2 chữ số thập phân
);
--Chèn dữ liệu
INSERT INTO Products (Quantity, Price) 
VALUES (10, 199.99);  -- Chèn dữ liệu vào cột Quantity và Price

Kiểu dữ liệu số thực

FLOAT(size, d):

  • Một số dấu phẩy động. Tổng số chữ số được chỉ định về kích thước.
  • Số chữ số sau dấu thập phân được chỉ định trong tham số d. Cú pháp này không được chấp nhận trong MySQL 8.0.17 và nó sẽ bị xóa trong các phiên bản MySQL trong tương lai.

FLOAT(p):

  • Một số dấu phẩy động.
  • MySQL sử dụng giá trị p để xác định xem nên sử dụng FLOAT hay DOUBLE cho kiểu dữ liệu kết quả.
  • Nếu p từ 0 đến 24, kiểu dữ liệu sẽ trở thành FLOAT (). Nếu p từ 25 đến 53, kiểu dữ liệu trở thành DOUBLE ().

DOUBLE(size, d):

  • Một số dấu phẩy động có kích thước thông thường.
  • Tổng số chữ số được chỉ định về kích thước. S
  • Ô chữ số sau dấu thập phân được chỉ định trong tham số d.

DECIMAL(size, d):

  • Một số điểm cố định chính xác.
  • Tổng số chữ số được chỉ định về kích thước.
  • Số chữ số sau dấu thập phân được chỉ định trong tham số d. Số tối đa cho kích thước là 65. Số lớn nhất cho d là 30.
  • Giá trị mặc định cho kích thước là 10. Giá trị mặc định cho d là 0.

DEC(size, d):

  • Bằng với DECIMAL(size,d).
--Tạo bảng
CREATE TABLE VietnixRecords (
    RecordID INT AUTO_INCREMENT PRIMARY KEY,
    TransactionAmount DECIMAL(10, 2) -- Sử dụng DECIMAL để biểu diễn số tiền
);
--Chèn dữ liệu
INSERT INTO VietnixRecords (TransactionAmount) 
VALUES (12345.67);  -- Chèn số tiền với hai chữ số thập phân

3. Kiểu dữ liệu ngày và giờ (Date and Time)

Các kiểu dữ liệu ngày và giờ trong MySQL cần lưu ý về định dạng và phạm vi được hỗ trợ.

Kiểu dữ liệu ngày và giờ - Date and Time
Kiểu dữ liệu ngày và giờ – Date and Time

Kiểu dữ liệu DATE

  • Dữ liệu ngày tháng.
  • Định dạng: YYYY-MM-DD.
  • Phạm vi được hỗ trợ là từ ‘1000-01-01’ đến ‘9999-12-31’.

Kiểu dữ liệu DATETIME(fsp)

  • Ngày và giờ kết hợp.
  • Định dạng: YYYY-MM-DD hh: mm: ss.
  • Phạm vi được hỗ trợ là từ ‘1000-01-01 00:00:00’ đến ‘9999-12-31 23:59:59’.
  • Thêm DEFAULT và ON UPDATE trong định nghĩa cột để tự động khởi tạo và cập nhật cho ngày và giờ hiện tại.

Kiểu dữ liệu TIMESTAMP(fsp)

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

Kiểu dữ liệu TIME(fsp)

  • Dữ liệu thời gian.
  • Định dạng: hh: mm: ss.
  • Phạm vi được hỗ trợ là từ ‘-838: 59: 59’ đến ‘838: 59: 59’.

Kiểu dữ liệu YEAR

  • Một năm ở định dạng bốn chữ số.
  • Các giá trị được phép ở định dạng bốn chữ số: 1901 đến 2155 và 0000.
  • Kiểu dữ liệu trong MySQL 8.0 không hỗ trợ năm ở định dạng hai chữ số.
CREATE TABLE Vietnix(
    VietnixID INT AUTO_INCREMENT PRIMARY KEY,
    VietnixName VARCHAR(100),
    VietnixDate DATE,
    VietnixTime TIME,
    VietnixDateTime DATETIME
);
--Chèn dữ liệu 
INSERT INTO Vietnix (VietnixName, VietnixDate, VietnixTime, VietnixDateTime) 
VALUES ('Hosting, VPS, Firewall', '2023-11-10', '14:00:00', '2023-11-10 14:00:00');

Bảng tổng hợp các kiểu dữ liệu trong MySQL

Sau đây Vietnix sẽ liệt kê tóm tắt các kiểu dữ liệu đã kê ở trên:

DATE TYPEĐẶC ĐIỂMDATA TYPEĐẶC ĐIỂM
CHARString (0 – 255)INTInteger (-2147483648 to 2147483647)
VARCHARString (0 – 255)BIGINTInteger (-9223372036854775808 to 9223372036854775807)
TINYTEXTString (0 – 255)FLOATDecimal (precise to 23 digits)
TEXTString (0 – 65535)DOUBLEDecimal (24 to 53 digits)
BLOBString (0 – 65535)DECIMAL“DOUBLE” stored as string
MEDIUMTEXTString (0 – 16777215)DATEYYYY-MM-DD
MEDIUMBLOBString (0 – 16777215)DATETIMEYYYY-MM-DD HH:MM:SS
LONGTEXTString (0 – 4294967295)TIMESTAMPYYYYMMDDHHMMSS
LONGBLOBString (0 – 4294967295)TIMEHH:MM:SS
TINYINTInteger (-128 to 127)ENUMMột đối tượng chuỗi chỉ có thể có một giá trị,
Có thể liệt kê tới 65535 giá trị
SMALLINTInteger (-32768 to 32767)SETMột đối tượng chuỗi chỉ có thể có một giá trị,
Tối đa 64 giá trị trong danh sách SET
MEDIUMINTInteger (-8388608 to 8388607)BOOLEANTINYINT(1)

Câu hỏi thường gặp

Hình ảnh nên sử dụng kiểu dữ liệu nào?

Trong MySQL, hình ảnh thường được lưu trữ sử dụng kiểu dữ liệu BLOB (Binary Large Object).

Lời kết

Hy vọng bài viết trên sẽ giúp bạn nắm được kiến thức về các kiểu dữ liệu trong MySQL. Nếu có thắc mắc hay bất kỳ ý kiến gì, mời bạn để lại bình luận phía dưới bài viết này. Vietnix xin chân thành cảm ơn bạn đã quan tâm.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Black Friday Hosting & VPS

Chương trình bắt đầu sau

Giảm giá 40% hosting VPS

50 coupon mỗi ngày

Gia hạn giá không đổi

NHẬN DEAL NGAY
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG