寫在前面
- 添加或者刪除字段都是使用ALTER 的相關命令
- 一次操作多個選項
STEP1 選中一個表
STEP2 操作一,
STEP3 操作二,
...
STEPn 操作n;
一、修改表名
ALTER TABLE tbl_name RENAME [TO|AS] new_name
RENAME TABLE tbl_name TO new_name
二、添加字段
ALTER TABLE tbl_name ADD 字段名稱 字段類型 [完整性約束條件] [FIREST|AFTER]
- 添加字段,增加完整性約束條件,指定添加的字段的位置
- 默認添加到列表的末尾
一次添加多個字段(選中一個表完成多個操作)
示例:
ALTER TABLE tbl_name
ADD test1 INT NOT NULL UNIQUE DEFAULT 10,
ADD test2 VARCHAR(20) NOT NULL DEFAULT '測試' FIRST,
ADD test3 CHAR(20) NOT NULL UNIQUE;
注意,要用‘,’分開操作
三、刪除字段
ALTER TABLE tbl_name DROP 字段名稱
一次刪除多個字段
參考一次添加多個字段的操作
四、修改字段類型&屬性
ALTER TABLE tbl_name MODIFY 字段名稱 字段類型[完整性約束條件] [FIRST|AFTER]
- 可修改字段的類型,完整性約束條件,位置,不能修改唯一、默認、主鍵
- 這種修改是覆蓋式的修改,并不是單項的修改
五、修改字段名稱
ALTER TABLE tbl_name CHANGE 舊字段名稱 新字段名稱 字段類型[完整性約束條件] [FIRST|AFTER 字段名稱]
和上面的一樣,多增加了可以修改名稱的功能
可不可以連續修改位置?
可以的,即使是后一個跟著前一個的位置也是可以的到底是不是覆蓋式修改?
單獨修改名字、位置、無符號、非空、默認值的時候,除了UNIQUE KEY 以外,其他的完整性約束條件都變成默認值,由此可見,這是覆蓋式修改的,但是無法通過MODIFY & CHANGE去修改UNIQUE的屬性在修改的時候會出現類似這樣的錯誤:Data truncated for column 'sex' at row 1
這個錯誤的意思是插入了非法的數據或者插入的數據超過了范圍
出現這個錯誤的情況是在已經插入了數據的前提下,去修改字段的類型,比如插入的是數值,修改成為漢字的枚舉型,就會報錯。
六、添加默認值
ALTER TABLE tbl_name ALTER 字段名稱 SET DEFAULT 默認值
七、刪除默認值
ALTER TABLE tbl_name ALTER 字段名稱 DROP DEFAULT
以上兩個操作組合就是單獨修改默認值而不影響其他的屬性
可以連續操作添加或者刪除,但是不能對同一個字段進行連續的添加或者刪除
八、添加主鍵
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type](字段名稱,...)
- 完整型的添加主鍵命令和簡化的命令有什么區別?
九、刪除主鍵
ALTER TABLE tbl_name DROP PRIMARY KEY
- 當有主鍵和自增長的數據的的時候,要先用MODIFY刪除自增長
- 如果我一開始定義了兩個數據作為主鍵,有直接操作刪除其中一個的主鍵?
十、添加唯一
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDES|KEY] [索引名稱](字段名稱,...)
- 索引名稱,默認為字段的名稱
- 添加復合唯一索引
設置多個字段名稱,一個唯一索引對應兩個字段
十一、刪除唯一索引
ALTER TABLE tbl_name DROP {INDEX|KEY} index_name
十二、修改表的儲存引擎
ALTER TABLE tbl_name ENGINE=儲存引擎名稱
十三、設置自增長的值
ALTER TABLE tbl_name AUTO_INCREMENT = 值
修改后會在下一個值插入之后顯示,但是修改的值要大于表中最大值才會有效果。如果想要退回比較小的數,還是直接在插入值的時候設置比較好。