mysql怎样设置默认,怎么修改mysql设置默认值

环境描述:

MySQL 5.7.13

8451c1ef6b087262e8b59272d8d20373.png

问题描述:

建表的时候,users_info表的role_id字段没有默认值,后期发现注册的时候,需要提供给用户一个默认角色,也就是给role_id字段一个默认值。

当前users_info表的role_id 在创建表的时候,没有设置默认值,数据库自动设置为空。

002eac2c44ec01d1a90cf264fa9e3a27.png

原先建表语句:role_id字段。

f1fd8c828dd1f91c090105a058a8c756.png

修改字段默认值:role_id默认值设置为:1

mysql> alter table users_info alter column role_id set default 1;

测试:

mysql> insert into users_info(username,passwd,phone_number,email) values('赵六',md5('123456'),'13700007777','777777777@qq.com');

2bf842d7e1bf881415924434a51df884.png

修改字段默认值语法:alter table 表名 alter column 字段名 drop default; (若本身存在默认值,则先删除)alter table 表名 alter column 字段名 set default 默认值;(若本身不存在则可以直接设定)

测试代码:

f3288505161e4ece6066987e418b4568.gif--由于users_info表创建的时候,添加了外键约束,所以,小伙伴们测试的话,建议先建个角色表rolesCREATE TABLE  roles(  

role_id smallint unsigned primary key auto_increment, #角色id

role_name varchar(20) not null unique #角色名称

)ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 创建用户信息表 role_id字段没设默认值CREATE TABLE `users_info` (

`user_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,

`username` varchar(20) NOT NULL,

`passwd` char(60) NOT NULL,

`phone_number` varchar(11) DEFAULT NULL,

`email` varchar(60) DEFAULT NULL,

`role_id` smallint(5) unsigned,

`create_time` datetime NOT NULL default now(),  PRIMARY KEY (`user_id`),  UNIQUE KEY `username` (`username`),  KEY `fk_role_id` (`role_id`),  CONSTRAINT `fk_role_id` FOREIGN KEY (`role_id`) REFERENCES `roles` (`role_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 插入几条测试数据insert into roles(role_name) values('初始注册角色');insert into users(username,passwd,phone_number,email) values('张三',md5('123456'),'1370000000','88888@qq.com')

http://www.usreplica.me

http://www.ukreplica.me

http://www.watch527.com

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值