Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL: Thay đổi độ chính xác cột DECIMAL (MODIFY COLUMN)

Để mở rộng độ chính xác của cột DECIMAL (cho phép hơn chữ số), dùng ALTER TABLE ... MODIFY COLUMN.

Cú pháp

ALTER TABLE ten_bang MODIFY COLUMN ten_cot DECIMAL(tong_so_chu_so, so_chu_so_sau_dau_cham);

Ví dụ minh họa

Tạo bảng với DECIMAL(3,2) (tối đa 3 chữ số, 2 sau dấu chấm → max 9.99):

mysql> CREATE TABLE ChoPhepHonChuSo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Luong DECIMAL(3,2)
    -> );

Kiểm tra cấu trúc:

mysql> DESC ChoPhepHonChuSo;
+--------+--------------+------+-----+---------+----------------+
| Field  | Type         | Null | Key | Default | Extra          |
+--------+--------------+------+-----+---------+----------------+
| Id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| Luong  | decimal(3,2) | YES  |     | NULL    |                |
+--------+--------------+------+-----+---------+----------------+

Mở rộng thành DECIMAL(10,4) (tối đa 999999.9999)

mysql> ALTER TABLE ChoPhepHonChuSo MODIFY COLUMN Luong DECIMAL(10,4);

Kiểm tra lại:

mysql> DESC ChoPhepHonChuSo;
+--------+---------------+------+-----+---------+----------------+
| Field  | Type          | Null | Key | Default | Extra          |
+--------+---------------+------+-----+---------+----------------+
| Id     | int(11)       | NO   | PRI | NULL    | auto_increment |
| Luong  | decimal(10,4) | YES  |     | NULL    |                |
+--------+---------------+------+-----+---------+----------------+

Lưu ý quan trọng:

  • DECIMAL(M,D): M = tổng chữ số (precision), D = chữ số sau dấu thập phân (scale). M ≤ 65, D ≤ 30, D ≤ M
  • Mở rộng (tăng M, D) thường an toàn, không mất dữ liệu
  • Thu hẹp (giảm M, D) có thể bị cắt bớt dữ liệu → MySQL cảnh báo
  • Cần khóa bảng (metadata lock) → tránh chạy trên bảng lớn giờ cao điểm