|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
解决方案提供商开始推动DBaaS浪潮之前,他们应该深入了解究竟什么是DBaaS。在select查询语句里能够嵌进select查询语句,称为嵌套查询。有些书大将内嵌的select语句称为子查询,子查询构成的了局又成为父查询的前提。
子查询能够嵌套多层,子查询操纵的数据表能够是父查询不操纵的数据表。子查询中不克不及有orderby分组语句。
4.4.1复杂嵌套查询
在【命令编纂区】实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>=(selectsalfromscott.empwhereename=WARD);DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
单击【实行】按钮,呈现如.19所示的了局。
【拜见光盘文件】:第4章4.4441.sql。
在这段代码中,子查询selectsalfromscott.empwhereename=WARD的寄义是从emp数据表中查询姓名为WARD的员工的薪水,父查询的寄义是要找出emp数据表中薪水年夜于即是WARD的薪水的员工。下面的查询历程等价于两步的实行历程。
(1)实行“selectsalfromscott.empwhereename=WARD”,得出sal=1250;
(2)实行“selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>=1250;”
4.4.2带【in】的嵌套查询
在【命令编纂区】实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresalin(selectsalfromscott.empwhereename=WARD);
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
单击【实行】按钮,呈现如.20所示的了局。
【拜见光盘文件】:第4章4.4442.sql。
上述语句完成的是查询薪水和WARD相称的员工,也能够利用【notin】来举行查询。4.4.3带【any】的嵌套查询
在【命令编纂区】实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>any(selectsalfromscott.empwherejob=MANAGER);
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
单击【实行】按钮,呈现如.21所示的了局。
【拜见光盘文件】:第4章4.4443.sql。
带any的查询历程等价于两步的实行历程。
(1)实行“selectsalfromscott.empwherejob=MANAGER”,其了局如.22所示。
【拜见光盘文件】:第4章4.4443-1.sql。
(2)查询到3个薪水值2975、2850和2450,父查询实行以下语句。
【拜见光盘文件】:第4章4.4443-2.sql。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>2975orsal>2850orsal>2450;DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
4.4.4带【some】的嵌套查询
在【命令编纂区】实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal=some(selectsalfromscott.empwherejob=MANAGER);
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
单击【实行】按钮,呈现如.23所示的了局。
【拜见光盘文件】:第4章4.4444.sql。
带some的嵌套查询与any的步骤不异。
(1)子查询,实行“selectsalfromscott.empwherejob=MANAGER”,其了局如.22所示。
(2)父查询实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal=2975orsal=2850orsal=2450;DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
【拜见光盘文件】:第4章4.4444-2.sql。
带【any】的嵌套查询和【some】的嵌套查询功效是一样的。初期的SQL仅仅同意利用【any】,厥后的版本为了和英语的【any】相辨别,引进了【some】,同时还保存了【any】关头词。
4.4.5带【all】的嵌套查询
在【命令编纂区】实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>all(selectsalfromscott.empwherejob=MANAGER);
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
单击【实行】按钮,呈现如.24所示的了局。
【拜见光盘文件】:第4章4.4445.sql。
带all的嵌套查询与【some】的步骤不异。
(1)子查询,了局如.22所示。
(2)父查询实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>2975andsal>2850andsal>2450;
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
【拜见光盘文件】:第4章4.4445-2.sql。
4.4.6带【exists】的嵌套查询
在【命令编纂区】实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
selectemp.empno,emp.ename,emp.job,emp.salfromscott.emp,scott.deptwhereexists(select*fromscott.empwherescott.emp.deptno=scott.dept.deptno);
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
单击【实行】按钮,呈现如.25所示的了局。
【拜见光盘文件】:第4章4.4446.sql。
4.4.7并操纵的嵌套查询
并操纵就是汇合中并集的观点。属于汇合A或汇合B的元素总和就是并集。在【命令编纂区】实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
(selectdeptnofromscott.emp)union(selectdeptnofromscott.dept);DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
单击【实行】按钮,呈现如.26所示的了局。
【拜见光盘文件】:第4章4.4447.sql。
4.4.8交操纵的嵌套查询
交操纵就是汇合中交集的观点。属于汇合A且属于汇合B的元素总和就是交集。在【命令编纂区】实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
(selectdeptnofromscott.emp)intersect(selectdeptnofromscott.dept);DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
单击【实行】按钮,呈现如.27所示的了局。
【拜见光盘文件】:第4章4.4448.sql。
4.4.9差操纵的嵌套查询
差操纵就是汇合中差集的观点。属于汇合A且不属于汇合B的元素总和就是差集。
在【命令编纂区】实行以下语句。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
(selectdeptnofromscott.dept)minus(selectdeptnofromscott.emp);
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
单击【实行】按钮,呈现如.28所示的了局。
【拜见光盘文件】:第4章4.4449.sql。
并、交和差操纵的嵌套查询请求属性具有不异的界说,包含范例和取值局限。这一切听起来不错,无疑DBaaS具有很多相对于RDBMS的优势。然而MySQL学习教程,DBaaS也有其局限性,云服务中固有的局限性就是之一。当客户开始将数据放入云端时,他们会遭遇到无法控制的网络性能问题。 |
|