【CONSTRAINT】具有唯一性约束的列是否可以插入空值

  请快速的回答这个问题:具有唯一性约束的列是否可以插入空值?

很多朋友看到这个问题后的反应过程一般是这样的:

第一反应:这个问题实在是太过简单啦!

进一步地反应:答案为“是”还是“否”呢?有点不太确定!

最后的行动:看看周围有没有朋友,不假思索地就问有没有人知道正确答案!


  这个问题我也被问到过多次!之所以在这里谈到这个“简单问题”。只是想提醒大家:其实很多情况下仅需简单动手测试一下,答案将来得更快更直接,印象也会更深!同时也能提高解决和分析问题的能力,何乐而不为呢?

我来记录一下这个测试过程。

1.创建具有唯一约束的表T
sec@ora10g> create table t (x varchar2(8),constraint uniq_t unique(x));

Table created.

T表仅包含一列X,在X列上创建了唯一约束。

2.测试唯一约束的有效性
sec@ora10g> insert into t values ('secooler');

1 row created.

sec@ora10g> insert into t values ('secooler');
insert into t values ('secooler')
*
ERROR at line 1:
ORA-00001: unique constraint (SEC.UNIQ_T) violated

可见,当插入重复值“secooler”时提示违反了唯一约束条件。

3.验证是否可以插入空值
尝试两种插入方法。
1)使用“null”插入
sec@ora10g> insert into t values (null);

1 row created.

2)使用“''”插入
sec@ora10g> insert into t values ('');

1 row created.

sec@ora10g> commit;

Commit complete.

结论已经非常明显:具有唯一性约束的列是可以插入空值的!

4.验证插入后的内容
为了方便查看插入的空值,这里使用两种比较巧妙的方法进行体现。
sec@ora10g> select '>>'||x||'<

'>>'||X||'<<
------------
>>secooler<<
>><<
>><<

sec@ora10g> select nvl(x,'I am NULL value!') from t;

NVL(X,'IAMNULLVA
----------------
secooler
I am NULL value!
I am NULL value!

5.小结
  我一贯主张的是“践行出真知”。 很多朋友倾向于不加思考和动手便去发问。其实只要能静下心来实际测试一下,便会获得很多有趣的知识和快感,时间成本在这里是微不足道的。如若你太过直接地知道了答案,很多精华也就变成了“情感上的垃圾” !

Good luck.

secooler
11.04.16

-- The End --

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-692682/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/519536/viewspace-692682/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值