MySQL - Lệnh ALTER
MySQL ALTER lệnh rất hữu ích khi bạn muốn thay đổi tên của bảng, bất kỳ trường nào trong bảng hoặc nếu bạn muốn thêm hoặc xóa một cột hiện có trong bảng.
Chúng ta hãy bắt đầu với việc tạo một bảng có tên testalter_tbl.
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> create table testalter_tbl
-> (
-> i INT,
-> c CHAR(1)
-> );
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i | int(11) | YES | | NULL | |
| c | char(1) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Bỏ, thêm hoặc định vị lại cột
Nếu bạn muốn bỏ một cột hiện có i khỏi bảng MySQL ở trên, thì bạn sẽ sử dụng DROP mệnh đề cùng với ALTER lệnh như hình dưới đây -
mysql> ALTER TABLE testalter_tbl DROP i;
A DROP mệnh đề sẽ không hoạt động nếu cột là cột duy nhất còn lại trong bảng.
Để thêm một cột, hãy sử dụng ADD và chỉ định định nghĩa cột. Câu lệnh sau đây khôi phụci cột testalter_tbl -
mysql> ALTER TABLE testalter_tbl ADD i INT;
Sau khi phát hành câu lệnh này, testalter sẽ chứa hai cột giống như khi bạn tạo bảng lần đầu tiên, nhưng sẽ không có cùng cấu trúc. Điều này là do có các cột mới được thêm vào cuối bảng theo mặc định. Và thậm chí lài ban đầu là cột đầu tiên trong mytbl, bây giờ nó là cột cuối cùng.
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c | char(1) | YES | | NULL | |
| i | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Để chỉ ra rằng bạn muốn một cột ở một vị trí cụ thể trong bảng, hãy sử dụng FIRST để đặt nó thành cột đầu tiên hoặc AFTER col_name để chỉ ra rằng cột mới nên được đặt sau col_name.
Hãy thử những điều sau ALTER TABLE tuyên bố, sử dụng SHOW COLUMNS sau mỗi cái để xem mỗi cái có tác dụng gì -
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;
Các từ chỉ định FIRST và SAU chỉ hoạt động với mệnh đề ADD. Điều này có nghĩa là nếu bạn muốn định vị lại một cột hiện có trong một bảng, trước tiên bạn phảiDROP nó và sau đó ADD nó ở vị trí mới.
Thay đổi (Thay đổi) Định nghĩa Cột hoặc Tên
Để thay đổi định nghĩa của cột, hãy sử dụng MODIFY hoặc là CHANGE cùng với lệnh ALTER.
Ví dụ: để thay đổi cột c từ CHAR (1) đến CHAR (10), bạn có thể sử dụng lệnh sau:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
Với CHANGE, cú pháp hơi khác một chút. Sau từ khóa CHANGE, bạn đặt tên cho cột mà bạn muốn thay đổi, sau đó chỉ định định nghĩa mới, bao gồm tên mới.
Hãy thử ví dụ sau:
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Nếu bây giờ bạn sử dụng CHANGE để chuyển đổi j từ BIGINT Quay lại INT mà không cần thay đổi tên cột, câu lệnh sẽ như hình dưới đây:
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
The Effect of ALTER TABLE on Null and Default Value Attributes- Khi bạn SỬA hoặc THAY ĐỔI một cột, bạn cũng có thể chỉ định xem cột có thể chứa giá trị NULL hay không và giá trị mặc định của nó là bao nhiêu. Trên thực tế, nếu bạn không làm điều này, MySQL sẽ tự động gán giá trị cho các thuộc tính này.
Khối mã sau đây là một ví dụ, trong đó NOT NULL cột sẽ có giá trị là 100 theo mặc định.
mysql> ALTER TABLE testalter_tbl
-> MODIFY j BIGINT NOT NULL DEFAULT 100;
Nếu bạn không sử dụng lệnh trên, thì MySQL sẽ điền giá trị NULL vào tất cả các cột.
Thay đổi (Thay đổi) Giá trị Mặc định của Cột
Bạn có thể thay đổi giá trị mặc định cho bất kỳ cột nào bằng cách sử dụng ALTER chỉ huy.
Hãy thử ví dụ sau.
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c | char(1) | YES | | NULL | |
| i | int(11) | YES | | 1000 | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Bạn có thể xóa ràng buộc mặc định khỏi bất kỳ cột nào bằng cách sử dụng mệnh đề DROP cùng với ALTER chỉ huy.
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c | char(1) | YES | | NULL | |
| i | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Thay đổi (Thay đổi) Loại Bảng
Bạn có thể sử dụng một loại bảng bằng cách sử dụng TYPEcùng với lệnh ALTER. Hãy thử ví dụ sau để thay đổitestalter_tbl đến MYISAM loại bảng.
Để tìm ra loại bảng hiện tại, hãy sử dụng SHOW TABLE STATUS tuyên bố.
mysql> ALTER TABLE testalter_tbl TYPE = MYISAM;
mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'\G
*************************** 1. row ****************
Name: testalter_tbl
Type: MyISAM
Row_format: Fixed
Rows: 0
Avg_row_length: 0
Data_length: 0
Max_data_length: 25769803775
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2007-06-03 08:04:36
Update_time: 2007-06-03 08:04:36
Check_time: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
Đổi tên (Thay đổi) Bảng
Để đổi tên bảng, hãy sử dụng RENAME tùy chọn của ALTER TABLE tuyên bố.
Hãy thử ví dụ sau để đổi tên testalter_tbl đến alter_tbl.
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
Bạn có thể sử dụng lệnh ALTER để tạo và thả lệnh INDEX trên tệp MySQL. Chúng ta sẽ thảo luận chi tiết về lệnh này trong chương tiếp theo.