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

Cách sửa giá trị mặc định (DEFAULT) của cột trong MySQL?

Sử dụng ALTER TABLE ... MODIFY COLUMN để định nghĩa lại cột với DEFAULT mới.

Tạo bảng có DEFAULT 'John'

mysql> CREATE TABLE DemoTable (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName VARCHAR(20) DEFAULT 'John'
    -> );

Kiểm tra DEFAULT ban đầu

mysql> DESC DemoTable;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| UserId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| UserName | varchar(20) | YES  |     | John    |                |
+----------+-------------+------+-----+---------+----------------+

Chèn hàng không cung cấp UserName

mysql> INSERT INTO DemoTable VALUES();
mysql> SELECT * FROM DemoTable;
+--------+----------+
| UserId | UserName |
+--------+----------+
| 1      | John     |
+--------+----------+

Đổi DEFAULT thành 'Chris'

mysql> ALTER TABLE DemoTable MODIFY UserName VARCHAR(20) DEFAULT 'Chris';
Query OK, 0 rows affected (0.19 sec)

Kiểm tra DEFAULT mới

mysql> DESC DemoTable;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| UserId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| UserName | varchar(20) | YES  |     | Chris   |                |
+----------+-------------+------+-----+---------+----------------+

Chèn hàng mới — tự động lấy 'Chris'

mysql> INSERT INTO DemoTable VALUES();
mysql> SELECT * FROM DemoTable;
+--------+----------+
| UserId | UserName |
+--------+----------+
| 1      | John     |
| 2      | Chris    |
+--------+----------+

Lưu ý quan trọng

  • Hàng cũ không thay đổi — chỉ ảnh hưởng INSERT mới không cung cấp giá trị
  • MODIFY giữ nguyên tên cột, CHANGE cho phép đổi tên
  • Để xóa DEFAULT: ALTER TABLE DemoTable MODIFY UserName VARCHAR(20) DEFAULT NULL;
  • Kết hợp NOT NULL: MODIFY UserName VARCHAR(20) NOT NULL DEFAULT 'Chris'

Xem DEFAULT hiện tại qua INFORMATION_SCHEMA

SELECT COLUMN_NAME, COLUMN_DEFAULT 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'DemoTable' AND TABLE_SCHEMA = DATABASE();