|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。语句
从外表上看,IN和EXITS的SQL语句是可交换和等效的。但是,它们在处置UULL数据时会有很年夜的不同,并招致分歧的了局。成绩的本源是在一个Oracle数据库中,一个NULL值意味着未知变量,以是操纵NULL值的对照函数的了局也是一个未知变量,并且任何前往NULL的值一般也被疏忽。比方,以下查询都不会前往一行的值:
selecttruefromdualwhere1=null;
selecttruefromdualwhere1!=null;
只要ISNULL才干前往true,并前往一行:
selecttruefromdualwhere1isnull;
selecttruefromdualwherenullisnull;
当你选择利用IN,你将会告知SQL选择一个值并与别的每值比拟较。假如NULL值存在,将不会前往一行,即便两个都为NULL。
selecttruefromdualwherenullin(null);
selecttruefromdualwhere(null,null)in((null,null));
selecttruefromdualwhere(1,null)in((1,null));
一个IN语句在功效上相称于=ANY语句:
selecttruefromdualwherenull=ANY(null);
selecttruefromdualwhere(null,null)=ANY((null,null));
selecttruefromdualwhere(1,null)=ANY((1,null));
当你利用一个EXISTS等效情势的语句,SQL将管帐算一切行,并疏忽子查询中的值。
selecttruefromdualwhereexists(selectnullfromdual);
selecttruefromdualwhereexists(select0fromdualwherenullisnull);
IN和EXISTS在逻辑上是不异的。IN语句对照由子查询前往的值,并在输入查询中过滤某些行。EXISTS语句对照行的值,并在子查询中过滤某些行。关于NULL值的情形,行的了局是不异的。
selectenamefromempwhereempnoin(selectmgrfromemp);
selectenamefromempewhereexists(select0fromempwheremgr=e.empno);
但是当逻辑被逆向利用,即NOTIN及NOTEXISTS时,成绩就会发生:
selectenamefromempwhereempnonotin(selectmgrfromemp);
selectenamefromempewherenotexists(select0fromempwheremgr=
e.empno);
NOTIN语句本色上同等于利用=对照每值,假如测试为FALSE大概NULL,了局为对照失利。比方:
selecttruefromdualwhere1notin(null,2);
selecttruefromdualwhere1!=nulland1!=2;
selecttruefromdualwhere(1,2)notin((2,3),(2,null));
selecttruefromdualwhere(1,null)notin((1,2),(2,3));
这些查询不会前往任何一行。第二个查询语句更加分明,即1!=null,以是全部WHERE都为false。但是这些查询语句可变成:
selecttruefromdualwhere1notin(2,3);
selecttruefromdualwhere1!=2and1!=3;
你也能够利用NOTIN查询,只需你包管前往的值不会呈现NULL值:
selectenamefromempwhereempnonotin(selectmgrfromempwheremgrisnot
null);
selectenamefromempwhereempnonotin(selectnvl(mgr,0)fromemp);
经由过程了解IN,EXISTS,NOTIN,和NOTEXISTS之间的不同,当NULL呈现在任一子查询中时,你能够制止一些罕见的成绩。
ScottStephens已在Oracle公司事情年夜于13年之久,他的事情范畴包含手艺撑持,电子商务,市场开辟,和软件开辟。
因此我们的保存数据方法就是:在删除的动作开始之前,把表数据备份起来,然后留一个空表,在空表上执行“删除”操作。 |
|