美文网首页
MYSQL第十六课时-修改表结构的命令

MYSQL第十六课时-修改表结构的命令

作者: 望海涯_ | 来源:发表于2016-09-29 21:17 被阅读0次

写在前面

  • 添加或者删除字段都是使用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 = 值

修改后会在下一个值插入之后显示,但是修改的值要大于表中最大值才会有效果。如果想要退回比较小的数,还是直接在插入值的时候设置比较好。

相关文章

网友评论

      本文标题:MYSQL第十六课时-修改表结构的命令

      本文链接:https://www.haomeiwen.com/subject/mneqettx.html