美文网首页
mysql之修改表结构【Alter】

mysql之修改表结构【Alter】

作者: 丿灬尘埃 | 来源:发表于2020-05-02 17:13 被阅读0次

今天呢,咱们来谈谈DDL中的Alter操作,只谈操作,底层实现和原理不谈哦。想知道原理的:咳咳,对不起这个暂时真没有==
步入正题,MySql版本:5.6.42【查看方式:select version();】
先来开下表结构

CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL DEFAULT '' COMMENT '姓名',
  `age` tinyint(3) NOT NULL DEFAULT '0' COMMENT '年龄',
  `ctime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `mtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. 修改默认值
    一般网上都会给出2种写法,基本就是有默认值drop,无默认值直接可以alter。
    那么有1个问题,有默认值是否可以直接操作。毕竟不是所有的公司都允许你drop
    有默认值:
    先删除默认值
alter table tableName alter column columnName drop default;
alter table users alter column age drop default;

结果:

  `age` tinyint(3) NOT NULL COMMENT '年龄',

ok,创建默认值

alter table tableName alter columns columnName set default defaultValue;
alter table users alter column age set default 0;

结果:

  `age` tinyint(3) NOT NULL DEFAULT '0' COMMENT '年龄',

效果很好!【因为版本局限,5.7 版本使用方法1会把默认值和commot全部干掉,so,需要小心】
2.无默认值【一般字段都会有默认值的,建议创建表结构时,加上not null && default,not null十分重要,会影响索引和count()】
alter table tableName alter column columnName set default defaultValue
看下效果:【alter table users alter column age set default 12;】

 `age` tinyint(3) NOT NULL DEFAULT '12' COMMENT '年龄'

其实,有无默认值都可以这样执行。modify也是可以满足的上述情况的,而且功能更强大
3.modify修改默认值
alter table users modify age TINYINT(3) not null DEFAULT 18 COMMENT '年龄';
结果:

  `age` tinyint(3) NOT NULL DEFAULT '18'  COMMENT '年龄'

其实modify可以更改很多东西,比如字段类型,默认值,字段长度,解释等都是可以的,不过切记一点,
一定,一定要把所有的内容写全:
alter table users modify columnName columnType(length) not null default defaultValue comment "balabala"
假如你不慎丢失了一个信息【比如not null】,且并不想那么操作,那么,但是在show create table tableName,那个字段会允许为空。so,切记把所有的内容都写上
说到这里,在给一个不常用的东西:change也可以解决一部分情况,写下语法,例子就不写了
alter table 表名 change old字段名 new字段名 类型 not null default xx comment 'xxxx'

最后赠送一个不常用的操作,修改表名:
Alter table oldTableName rename to newTableName

附linux mysql5.6升级5.7:【记得做好数据备份哦,尽管我没备份数据没丢,不过习惯要养成】

yum install php72w-mysql.x86_64
【这个不要也行,需要配置文件路径:/etc/yum.repos.d
修改配置文件:mysql-community.repo和mysql-community-source.repo
修改内容:将所要更新的版本的enabled=1,其他版本的enabled=0即可】
 yum -y install mysql-server
service mysqld restart

相关文章

网友评论

      本文标题:mysql之修改表结构【Alter】

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