写在前面
- 添加或者删除字段都是使用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 = 值
修改后会在下一个值插入之后显示,但是修改的值要大于表中最大值才会有效果。如果想要退回比较小的数,还是直接在插入值的时候设置比较好。