MySQL-Kiểu dữ liệu

Trong MySQL, các kiểu dữ liệu được sử dụng để xác định loại dữ liệu mà một cột trong bảng có thể chứa. Các kiểu dữ liệu có thể được chia thành nhiều nhóm chính bao gồm kiểu số, kiểu chuỗi (văn bản), kiểu ngày và giờ, và kiểu dữ liệu đặc biệt. Dưới đây là mô tả chi tiết về các kiểu dữ liệu chính trong MySQL:

1. Kiểu Dữ Liệu Số (Numeric Data Types)

  • Kiểu Số Nguyên (Integer)
  • TINYINT: Lưu trữ số nguyên nhỏ. Khoảng giá trị từ -128 đến 127 (có dấu) hoặc 0 đến 255 (không có dấu).
  • SMALLINT: Lưu trữ số nguyên nhỏ hơn. Khoảng giá trị từ -32,768 đến 32,767 (có dấu) hoặc 0 đến 65,535 (không có dấu).
  • MEDIUMINT: Lưu trữ số nguyên vừa. Khoảng giá trị từ -8,388,608 đến 8,388,607 (có dấu) hoặc 0 đến 16,777,215 (không có dấu).
  • INT: Lưu trữ số nguyên lớn. Khoảng giá trị từ -2,147,483,648 đến 2,147,483,647 (có dấu) hoặc 0 đến 4,294,967,295 (không có dấu).
  • BIGINT: Lưu trữ số nguyên rất lớn. Khoảng giá trị từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 (có dấu) hoặc 0 đến 18,446,744,073,709,551,615 (không có dấu).
  • Kiểu Số Thực (Floating-point)
  • FLOAT: Lưu trữ số thực với độ chính xác đơn. Độ chính xác khoảng 7 chữ số thập phân.
  • DOUBLE: Lưu trữ số thực với độ chính xác kép. Độ chính xác khoảng 15 chữ số thập phân.
  • Kiểu Số Thực Chính Xác Cao
  • DECIMAL: Lưu trữ số thực với độ chính xác cao và không mất mát chữ số thập phân. Được định nghĩa với số chữ số tổng cộng và số chữ số thập phân, ví dụ DECIMAL(10, 2).

2. Kiểu Dữ Liệu Chuỗi (String Data Types)

  • CHAR: Lưu trữ chuỗi cố định với chiều dài cố định. Ví dụ, CHAR(10) lưu trữ chuỗi 10 ký tự.
  • VARCHAR: Lưu trữ chuỗi có chiều dài thay đổi với một giới hạn tối đa. Ví dụ, VARCHAR(255) lưu trữ chuỗi có tối đa 255 ký tự.
  • TEXT: Lưu trữ chuỗi văn bản dài. Có nhiều loại: TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, với kích thước tối đa tăng dần.
  • BLOB: Lưu trữ dữ liệu nhị phân lớn. Có nhiều loại: TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, với kích thước tối đa tăng dần.

3. Kiểu Dữ Liệu Ngày và Giờ (Date and Time Data Types)

  • DATE: Lưu trữ ngày theo định dạng YYYY-MM-DD.
  • TIME: Lưu trữ thời gian theo định dạng HH:MM:SS.
  • DATETIME: Lưu trữ ngày và giờ theo định dạng YYYY-MM-DD HH:MM:SS.
  • TIMESTAMP: Lưu trữ ngày và giờ theo định dạng YYYY-MM-DD HH:MM:SS. Thường được sử dụng để theo dõi thời điểm tạo hoặc cập nhật bản ghi.
  • YEAR: Lưu trữ năm theo định dạng YYYY.

4. Kiểu Dữ Liệu Đặc Biệt (Special Data Types)

  • ENUM: Lưu trữ một giá trị trong một danh sách các giá trị khả dĩ. Ví dụ, ENUM('Red', 'Green', 'Blue').
  • SET: Lưu trữ một tập hợp các giá trị từ danh sách giá trị cho phép. Ví dụ, SET('A', 'B', 'C').

5. Kiểu Dữ Liệu JSON

  • JSON: Lưu trữ dữ liệu dạng JSON. Hữu ích để lưu trữ cấu trúc dữ liệu phức tạp.

6. Tùy Chọn và Đặc Điểm

  • UNSIGNED: Chỉ lưu trữ các giá trị không âm, mở rộng khoảng giá trị dương cho các kiểu dữ liệu số nguyên.
  CREATE TABLE example (
    unsigned_int_column INT UNSIGNED
  );
  • ZEROFILL: Tự động thêm số 0 vào phía trước giá trị để đạt đến độ rộng tối đa đã chỉ định (chỉ áp dụng cho kiểu số nguyên).
  CREATE TABLE example (
    zerofill_column INT(5) ZEROFILL
  );

Tóm tắt

  • Kiểu số nguyên: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT.
  • Kiểu số thực: FLOAT, DOUBLE, DECIMAL.
  • Kiểu chuỗi: CHAR, VARCHAR, TEXT, BLOB.
  • Kiểu ngày và giờ: DATE, TIME, DATETIME, TIMESTAMP, YEAR.
  • Kiểu đặc biệt: ENUM, SET, JSON.

Các kiểu dữ liệu trong MySQL giúp xác định cách dữ liệu được lưu trữ và xử lý trong cơ sở dữ liệu, đảm bảo rằng dữ liệu phù hợp với yêu cầu của ứng dụng và duy trì tính toàn vẹn của dữ liệu.