MySQL - Loại dữ liệu

Xin chào các bạn đam mê cơ sở dữ liệu! Tôi rất vui mừng được làm hướng dẫn viên của bạn trong hành trình thú vị vào thế giới các loại dữ liệu của MySQL. Là người đã dạy khoa học máy tính hơn một thập kỷ, tôi có thể đảm bảo với bạn rằng việc hiểu các loại dữ liệu giống như học bảng chữ cái trước khi viết một tiểu thuyết. Nó là cơ bản, và dám nói, rất thú vị! Hãy cùng nhau lặn vào và làm sáng tỏ những khối xây dựng của thiết kế cơ sở dữ liệu.

MySQL - Data Types

Loại dữ liệu MySQL

Trước khi chúng ta đi sâu vào chi tiết, hãy nói về dữ liệu là gì và tại sao chúng lại quan trọng. Hãy tưởng tượng bạn đang tổ chức một thư viện khổng lồ. Bạn wouldn't sắp xếp sách, DVD và tạp chí theo cùng một cách, phải không? Đó chính là điều mà các loại dữ liệu làm trong MySQL - chúng giúp tổ chức thông tin khác nhau một cách hiệu quả.

MySQL cung cấp nhiều loại dữ liệu khác nhau, mỗi loại được thiết kế để lưu trữ một loại dữ liệu cụ thể. Việc sử dụng đúng loại dữ liệu rất quan trọng vì ba lý do chính:

  1. Hiệu quả lưu trữ
  2. Tối ưu hóa hiệu suất
  3. Tính toàn vẹn dữ liệu

Bây giờ, hãy cùng khám phá các nhóm chính của các loại dữ liệu MySQL.

Loại dữ liệu số

Ah, số! Cột sống của máy tính. MySQL cung cấp nhiều loại dữ liệu số để xử lý mọi thứ từ số nguyên nhỏ đến số dấu phẩy động lớn.

Loại số nguyên

Loại Lưu trữ (Bytes) Giá trị nhỏ nhất Giá trị lớn nhất
TINYINT 1 -128 127
SMALLINT 2 -32,768 32,767
MEDIUMINT 3 -8,388,608 8,388,607
INT 4 -2,147,483,648 2,147,483,647
BIGINT 8 -9,223,372,036,854,775,808 9,223,372,036,854,775,807

Hãy tạo một bảng để minh họa:

CREATE TABLE number_examples (
tiny_num TINYINT,
small_num SMALLINT,
medium_num MEDIUMINT,
regular_num INT,
big_num BIGINT
);

Bây giờ, hãy chèn một số dữ liệu:

INSERT INTO number_examples VALUES (127, 32767, 8388607, 2147483647, 9223372036854775807);

Lệnh chèn này thêm giá trị lớn nhất cho mỗi loại số nguyên. Nếu chúng ta cố gắng chèn một số lớn hơn, MySQL sẽ ném ra một lỗi. Điều này giống như cố gắng nhét một con voi vào một chiếc xe nhỏ - nó đơn giản là không thể!

Loại dấu phẩy động và cố định

Đối với số thập phân, chúng ta có:

Loại Độ chính xác
FLOAT Độ chính xác đơn
DOUBLE Độ chính xác kép
DECIMAL Điểm cố định

Dưới đây là một ví dụ:

CREATE TABLE price_list (
item_name VARCHAR(50),
float_price FLOAT,
double_price DOUBLE,
decimal_price DECIMAL(10,2)
);

INSERT INTO price_list VALUES
('Widget', 19.99, 19.99, 19.99),
('Gadget', 249.99, 249.99, 249.99);

DECIMAL(10,2) có nghĩa là chúng ta có thể lưu trữ tối đa 10 chữ số tổng cộng, với 2 chữ số sau dấu phẩy. Điều này rất phù hợp để lưu trữ giá trị tiền tệ mà không có lỗi làm tròn.

Loại dữ liệu ngày và giờ

Thời gian trôi qua nhanh chóng khi bạn vui chơi với cơ sở dữ liệu! Hãy xem MySQL xử lý dữ liệu thời gian như thế nào:

Loại Định dạng Lưu trữ
DATE YYYY-MM-DD 3 bytes
TIME HH:MM:SS 3 bytes
DATETIME YYYY-MM-DD HH:MM:SS 8 bytes
TIMESTAMP YYYY-MM-DD HH:MM:SS 4 bytes
YEAR YYYY 1 byte

Dưới đây là một ví dụ thú vị:

CREATE TABLE party_planning (
event_name VARCHAR(50),
event_date DATE,
start_time TIME,
end_time TIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO party_planning (event_name, event_date, start_time, end_time)
VALUES ('MySQL Mania', '2023-12-31', '20:00:00', '23:59:59');

Bảng này có thể giúp chúng ta lên kế hoạch cho bữa tiệc đêm giao thừa cơ sở dữ liệu cuối cùng! Cột created_at tự động lưu trữ dấu thời gian hiện tại khi một hàng được chèn.

Loại dữ liệu chuỗi

Cuối cùng nhưng không kém phần quan trọng, hãy nói về các loại dữ liệu chuỗi. Đây là những người làm việc chính trong bất kỳ cơ sở dữ liệu nào, xử lý mọi thứ từ tên đến tài liệu văn bản dài.

Loại Độ dài tối đa Trường hợp sử dụng
CHAR 255 ký tự Chuỗi độ dài cố định
VARCHAR 65,535 ký tự Chuỗi độ dài biến đổi
TEXT 65,535 ký tự Văn bản dài
MEDIUMTEXT 16,777,215 ký tự Văn bản dài hơn
LONGTEXT 4,294,967,295 ký tự Văn bản rất dài

Hãy tạo một bảng để minh họa:

CREATE TABLE book_club (
member_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
favorite_quote CHAR(50),
book_review TEXT,
life_story MEDIUMTEXT
);

INSERT INTO book_club (name, favorite_quote, book_review, life_story)
VALUES (
'Jane Doe',
'To be or not to be',
'This book changed my life! The character development was superb, and the plot twists kept me guessing until the very end.',
'I was born on a warm summer day...'
);

Trong ví dụ này, name sử dụng VARCHAR vì tên có thể thay đổi độ dài. favorite_quote sử dụng CHAR giả định rằng tất cả các trích dẫn đều có độ dài chính xác 50 ký tự (với padding nếu ngắn hơn). book_review sử dụng TEXT cho nội dung dài hơn, và life_story sử dụng MEDIUMTEXT cho叙事更长.

Nhớ rằng, việc chọn đúng loại chuỗi có thể ảnh hưởng lớn đến hiệu suất và hiệu quả lưu trữ của cơ sở dữ liệu của bạn. Điều này giống như việc chọn đúng kích thước容器 cho đồ ăn dư - quá nhỏ và nó sẽ tràn ra, quá lớn và bạn sẽ lãng phí không gian!

Và đó là tất cả, các bạn! Chúng ta đã cùng nhau hành trình qua thế giới các loại dữ liệu MySQL, từ nhỏ nhất là TINYINT đến những khoảng không gian rộng lớn của LONGTEXT. Nhớ rằng, việc chọn đúng loại dữ liệu là một nghệ thuật cũng như một khoa học. Nó đòi hỏi việc hiểu dữ liệu của bạn, dự đoán nhu cầu tương lai, và đôi khi là một chút thử nghiệm và sai lầm.

Khi bạn tiếp tục hành trình MySQL của mình, hãy tiếp tục thử nghiệm với các loại dữ liệu khác nhau. Tạo bảng, chèn dữ liệu, và quan sát cách chúng hành xử. Càng gyak luyện, bạn sẽ càng cảm thấy nó trở nên tự nhiên. Và谁知道呢? Bạn có thể sẽ tìm thấy tình yêu với sự đơn giản tinh tế của một schema cơ sở dữ liệu được thiết kế tốt.

Chúc mừng coding, và mong rằng các truy vấn của bạn luôn chạy nhanh chóng!

Credits: Image by storyset