永发信息网

oracle中 =all 的疑惑

答案:2  悬赏:60  手机版
解决时间 2021-02-23 08:00
当where 条件中 =all (...)的 (...)为空时,=all() 为什么 恒为true.
实际场景:
DELETe FROM job_history j WHERe (employee_id, job_id) = ALL (SELECt employee_id, job_id
FROM employees e WHERe j.employee_id = e.employee_id and j.job_id = e.job_id )

DELETe FROM job_history j WHERe (employee_id, job_id) = (SELECt employee_id, job_id FROMemployees e WHERe j.employee_id = e.employee_id and j.job_id = e.job_id )
请问下·这两句sql 有什么区别,为什么第1条sql比第二条sql删除的记录要多呢?

当 ALL (SELECt employee_id, job_id
FROM employees e WHERe j.employee_id = e.employee_id and j.job_id = e.job_id )
这个查询结果 是 no row seleced
外层的sql 把 job_history 表的所有记录都delete了·为什么啊
最佳答案
首先, 你的测试很好, 我这里把概念再给你归纳一下:

1. ANY和SOME 是用来和子句返回的"每一个"值进行比较。 如果返回值为空(0行返回值),则为FALSE

2. ALL 是用来和子句返回的“所有”值进行比较。 如果返回值为空(0行返回值),则为TRUE
------------------------------------------------------------------------------------------------------

本来想顺带提一下你例子用的correlated subquery, 但是我想上面说的已经回答了您要的问题。 您的第二个删除用法是正确的。不过能不用尽量不用correlated subquery, 执行效率在实际工作中可能需要考虑, 不过有限的已知条件下,您用的挺好,没问题。
全部回答

1.pl/sqldeveloper这个工具主要是用于开发的,便于编程,还有查表。它有些语句是不支持的,我们一般进行管理都是在sqlplus里进行,一般都是两个结合起来用的,单独用某一个也不是很方便,除非专门做开发或者专门做简单的管理

2.你在开启数据库的第一步就是开启实例,在这一步其实是帮你分配sga(系统全局区)和开启后台进程的过程,也就是说内存区和进程组成了实例,第二步就是装载数据库,其实就是数据库的文件与实例进行关联,最后才会打开数据库,监听就是监控服务器,会生成一些日志出问题了可以去查看

3.oracle主要是功能很强大,而且机制很完善,这个要你去学习了体系结构自然就知道,当你知道它是怎么运转,怎么处理故障的时候才能够理解那些的,他和sqlserver完全不同

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
iphone4s屏幕壁纸尺寸是多少
什么时候上课?用英文怎么说?
达吾森夏尔敖腊地址在什么地方,想过去办事
100一47等于多少
谢杏芳为什么没有参加今年的尤伯杯?
仙四 魔剑 支线
奥林广告公司在哪里啊,我有事要去这个地方
金鱼是怎样睡觉的
有一个地方总想不过来https://zhidao.baidu.c
松一小区南门在哪里啊,我有事要去这个地方
苹果笔记本电脑把磁盘都抹除了,如何重装系统
鸦片战争后,对中国自然经济起解体作用的主要
魏家河这个地址在什么地方,我要处理点事
现在建国50周年纪念钞的价格是多少?
华北农学报与微生物学通报哪个好投
推荐资讯
(10分)旅游地理阅读图文材料,完成下列问题
聚点烧烤大排档地址在哪,我要去那里办事
笔记本声卡在哪个位置
中宫格行楷字体咋样,看同学在那里学过的写出
工行信用卡激活了怎么没额度
新理想工业园(南门)这个地址在什么地方,我要
编的组词有哪些
救急救急救急
果语手工坊地址在哪,我要去那里办事
我为什么后天长出酒窝?
富康家具地址在什么地方,想过去办事
浇灌面积(1.0~3.0)L/m2•d后面的单位是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?