美文网首页
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