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

Thêm cột mới sau cột chỉ định và đặt giá trị mặc định trong MySQL

MySQL cho phép thêm cột mới vào vị trí cụ thể trong bảng (sau một cột đã có) và đồng thời đặt giá trị mặc định (DEFAULT) cho cột đó bằng câu lệnh ALTER TABLE.

Tạo bảng ban đầu

mysql> CREATE TABLE DemoTable (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentFirstName VARCHAR(20),
    StudentAge INT,
    StudentCountryName VARCHAR(100)
);

Xem cấu trúc bảng

mysql> DESC DemoTable;
+--------------------+--------------+------+-----+---------+----------------+
| Field              | Type         | Null | Key | Default | Extra          |
+--------------------+--------------+------+-----+---------+----------------+
| StudentId          | int(11)      | NO   | PRI | NULL    | auto_increment |
| StudentFirstName   | varchar(20)  | YES  |     | NULL    |                |
| StudentAge         | int(11)      | YES  |     | NULL    |                |
| StudentCountryName | varchar(100) | YES  |     | NULL    |                |
+--------------------+--------------+------+-----+---------+----------------+

Thêm cột StudentLastName SAU cột StudentFirstName

Bước 1: Thêm cột với NOT NULL (bắt buộc có giá trị) và vị trí AFTER StudentFirstName:

mysql> ALTER TABLE DemoTable 
ADD StudentLastName VARCHAR(20) NOT NULL AFTER StudentFirstName;

Bước 2: Đặt giá trị mặc định (DEFAULT) cho cột vừa thêm:

mysql> ALTER TABLE DemoTable 
ALTER StudentLastName SET DEFAULT 'Doe';

Kiểm tra cấu trúc sau khi thay đổi

mysql> DESC DemoTable;
+--------------------+--------------+------+-----+---------+----------------+
| Field              | Type         | Null | Key | Default | Extra          |
+--------------------+--------------+------+-----+---------+----------------+
| StudentId          | int(11)      | NO   | PRI | NULL    | auto_increment |
| StudentFirstName   | varchar(20)  | YES  |     | NULL    |                |
| StudentLastName    | varchar(20)  | NO   |     | Doe     |                |
| StudentAge         | int(11)      | YES  |     | NULL    |                |
| StudentCountryName | varchar(100) | YES  |     | NULL    |                |
+--------------------+--------------+------+-----+---------+----------------+

Cột StudentLastName giờ nằm sau StudentFirstName và có giá trị mặc định là 'Doe'.

Lưu ý

  • Nếu bảng đã có dữ liệu, thêm cột NOT NULL không có DEFAULT sẽ lỗi. Cần cung cấp DEFAULT hoặc cho phép NULL.
  • Từ MySQL 8.0.12, có thể gộp 2 bước thành 1: ALTER TABLE DemoTable ADD StudentLastName VARCHAR(20) NOT NULL DEFAULT 'Doe' AFTER StudentFirstName;
  • FIRST để thêm cột làm cột đầu tiên.