mysql唯一约束特点是不能重复允许为null

mysql唯一约束特点是不能重复允许为null

参考网址:

https://mp.weixin.qq.com/s/hmro3mAmEWDgpanH3DsPpQ

测试建表脚本

建表脚本

-- 唯一索引(不设置not null)
create table demo1(
    id int unsigned primary key auto_increment,
    phone_no char(11) ,
    unique key uk_phone_no (`phone_no`) using btree
);
-- 复合唯一索引
CREATE TABLE `demo` (
  `id` int(10) unsigned NOT NULL,
  `delete_at` int(10) unsigned DEFAULT NULL,
  `rname` varchar(30) DEFAULT NULL,
  `rage` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_delete_at_rname_rage` (`rname`,`rage`,`delete_at`)
) 

插入测试数据脚本

-- 向demo1表中插入测试数据
insert into demo1 values (null , null);
insert into demo1 values (null , null);
insert into demo1 values (null , null);
-- 向demo表中插入测试数据
insert into demo values ( 1 , 100 , 'aaaa' , 200);
insert into demo values ( 2 , null , 'aaaa' , 200);
insert into demo values ( 3 , null , 'aaaa' , 200);

出现问题

  1. demo1表中设置唯一索引的列可以插入多个null值

image-20210905201117869

  1. demo表中复合唯一索引有一列设为null值,那么会出现nul值可以重复的情况

image-20210905201535893

结论

1.建表如果没有特殊含义,尽量列都是not null,避免一些没有必要的麻烦

详情参考:

https://mp.weixin.qq.com/s?__biz=Mzg5MDEzMjEwNw==&mid=2247488231&idx=2&sn=b381d920c6ca0bf82c951efd85044288&chksm=cfe01103f8979815832cb59330f1b8ea3e596281fbceb60eb8be3348e059b2f4a44cefe2793f&mpshare=1&scene=23&srcid=0121fK6CIwDKE3y3kVYyMmsT&sharer_sharetime=1611193613520&sharer_shareid=9d1e76e919cc0b2f3ca23ed1f5ef67a8#rd

下面是某互联网公司对mysql建表规范,建议列约束都是not null

image-20210905201602768

2.唯一约束特点是不能重复!!(允许为空)




个人csdn博客网址:https://blog.csdn.net/shaoming314

jam

个人博客网址:www.shaoming.club

halo

个人gitee地址:https://gitee.com/shao_ming314/note

111

勇敢牛牛,不怕困难

_ming314/picture/raw/master/image/111.jpg" alt=“111” style=“zoom:33%;” />

勇敢牛牛,不怕困难

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值