请快速的回答这个问题:具有唯一性约束的列是否可以插入空值?
很多朋友看到这个问题后的反应过程一般是这样的:
第一反应:这个问题实在是太过简单啦!
进一步地反应:答案为“是”还是“否”呢?有点不太确定!
最后的行动:看看周围有没有朋友,不假思索地就问有没有人知道正确答案!
这个问题我也被问到过多次!之所以在这里谈到这个“简单问题”。只是想提醒大家:其实很多情况下仅需简单动手测试一下,答案将来得更快更直接,印象也会更深!同时也能提高解决和分析问题的能力,何乐而不为呢?
我来记录一下这个测试过程。
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 --
很多朋友看到这个问题后的反应过程一般是这样的:
第一反应:这个问题实在是太过简单啦!
进一步地反应:答案为“是”还是“否”呢?有点不太确定!
最后的行动:看看周围有没有朋友,不假思索地就问有没有人知道正确答案!
这个问题我也被问到过多次!之所以在这里谈到这个“简单问题”。只是想提醒大家:其实很多情况下仅需简单动手测试一下,答案将来得更快更直接,印象也会更深!同时也能提高解决和分析问题的能力,何乐而不为呢?
我来记录一下这个测试过程。
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/