今天呢,咱们来谈谈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;
- 修改默认值
一般网上都会给出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
网友评论