Sử dụng ALTER TABLE ... CHANGE COLUMN để định nghĩa lại cột với DEFAULT 1.
Tạo bảng
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName VARCHAR(20),
-> UserAge INT,
-> isMarried TINYINT(1)
-> );
Kiểm tra cấu trúc ban đầu (DEFAULT NULL)
mysql> DESC DemoTable;
+-----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | UserName | varchar(20) | YES | | NULL | | | UserAge | int(11) | YES | | NULL | | | isMarried | tinyint(1) | YES | | NULL | | +-----------+-------------+------+-----+---------+----------------+
Thay đổi DEFAULT thành 1, NOT NULL
mysql> ALTER TABLE DemoTable
-> CHANGE isMarried isMarried TINYINT(1) DEFAULT 1 NOT NULL;
Query OK, 0 rows affected (1.29 sec)
Kiểm tra cấu trúc sau thay đổi
mysql> DESC DemoTable;
+-----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | UserName | varchar(20) | YES | | NULL | | | UserAge | int(11) | YES | | NULL | | | isMarried | tinyint(1) | NO | | 1 | | +-----------+-------------+------+-----+---------+----------------+
Giải thích cú pháp CHANGE vs MODIFY
| Cú pháp | Khi nào dùng |
|---|---|
CHANGE old_name new_name definition | Đổi tên cột HOẶC đổi định nghĩa (cần lặp tên cột) |
MODIFY column_name definition | Chỉ đổi định nghĩa, giữ nguyên tên |
Ví dụ dùng MODIFY: ALTER TABLE DemoTable MODIFY isMarried TINYINT(1) DEFAULT 1 NOT NULL;
Lưu ý
TINYINT(1)thường dùng cho boolean (0=false, 1=true)NOT NULLbắt buộc có giá trị, kết hợpDEFAULT 1đảm bảo hàng mới tự động là 1- Dữ liệu hiện có: NULL sẽ thành 0 (hoặc lỗi nếu strict mode), nên UPDATE trước:
UPDATE DemoTable SET isMarried = 1 WHERE isMarried IS NULL; - MySQL không có kiểu BOOLEAN thực sự,
BOOL/BOOLEANlà alias củaTINYINT(1)