標籤:
我們接著上一篇的添加約束的操作講述。
三添加約束 (3)添加外鍵約束
ALTER TABLE table_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] [index_type]
(index_col_name,...) references_definition;
例子:
ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);
SHOW COLUMNS FROM users2;
(4)添加預設約束 ALTER TABLE table_name ALTER [COLUMN] col_name {SET DEFAULT literal} ;
例子:
首先添加一列要做為預設約束的欄位:
ALTER TABLE users2 ADD age TINYINT UNSIGNED NOT NULL;
SHOW COLUMNS FROM users2;
添加預設約束age欄位為預設值為15:
ALTER TABLE users2 ALTER age SET DEFAULT 15;
SHOW COLUMNS FROM users2;
四刪除約束 (1)刪除主鍵約束
刪除主鍵約束文法格式(由於一張資料表只有一個主鍵,因此不用加上列明):
ALTER TABLE table_name DROP PRIMARY KEY;
例子:
ALTER TABLE users2 DROP PRIMARY KEY;
SHOW COLUMNS FROM users2;
(2)刪除唯一約束
刪除唯一約束的文法格式(一張資料表可以有多個唯一約束):
ALTER TABLE table_name DROP {INDEX|KEY} index_name;
例子:
先來查看有索引的欄位名稱,找到唯一限制欄位:
SHOW INDEXES FROM users2\G;
ALTER TABLE users2 DROP INDEX username;
SHOW COLUMNS FROM users2;
(3)刪除外鍵約束 ALTER TABLE table_name DROP FOREIGN KEY fk_symbol;
例子:
先來查看外鍵約束:
SHOW CREATE TABLE users2;
由此知道外鍵約束的名稱為users2_ibfk_1,因此可以刪除外鍵約束:
ALTER TABLE users2 DROP REIGN KEY users2_ibfk_1;
SHOW CREATE TABLE users2;
(4)刪除預設約束
刪除預設約束的文法格式為:
ALTER TABLE table_name ALTER [COLUMN] col_name {DROP DEFAULT};
例子:
ALTER TABLE users2 ALTER age DROP DEFAULT;
SHOW COLUMNS FROM users2;
五修改列定義和更名資料表 (1)修改列定義
修改列定義文法格式:
ALTER TABLE table_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name];
例子:
1)如果我們看到資料表的id欄位並沒有在第一列,要是改到第一列需要這樣做:
SHOW COLUMNS FROM users2;
ALTER TABLE users2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;
SHOW COLUMNS FROM users2;
2)我們也可以修改欄位的資料類型:
SHOW COLUMNS FROM users2;
ALTER TABLE users2 MODIFY id TINYINT UNSIGNED NOT NULL FIRST;
SHOW COLUMNS FROM users2;
大資料類型改到小資料類型會造成資料的丟失。謹慎使用改變資料類型。因此這就需要我們在進行資料庫設計的
時候一定要事先設計好欄位的資料類型,避免不必要的麻煩。
(2)修改列名稱
修改列名稱的文法格式:
ALTER TABLE table_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST |
AFTER col_name];
例子:修改列名稱和列的資料類型
SHOW COLUMNS FROM users2;
ALTER TABLE users2 CHANGE pid p_id TINYINT UNSIGNED NOT NULL;
SHOW COLUMNS FROM users2;
(3)修改資料表名稱
修改資料表名稱的方式有兩種:
方法1:
ALTER TABLE table_name RENAME [TO|AS] new_table_name;
方法2:
RENAME TABLE table_name TO new_table_name [,table_name2 To new_table_name2] ...;
例子:
SHOW TABLES;
ALTER TABLE users2 RENAME users3;
SHOW TABLES;
我們再來使用另一種方法修改資料表名稱:
RENAME TABLE users3 TO users2;
SHOW TABLES;
我們應該盡量少使用修改列定義和資料表名稱,可能導致視圖或預存程序不能使用。
總結:
修改資料表
針對欄位的操作:添加/刪除欄位、修改列定義,修改列名稱等。
針對約束的操作:添加/刪除各種約束。
針對資料表的操作:資料表更名(兩種方式)。
MySQL學習12:修改資料表(二)