预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

用SQL进行嵌套查询 在SELECT查询语句里可以嵌入SELECT查询语句,称为嵌套查询。 也可将内嵌的SELECT语句称为孒查询,子查询形成的结果又成为父查询的条件。 子查询可以嵌套多层,子查询操作的数据表可以是父查询不操作的数据表。 子查询中不能有GroupBY分组语句 1.简单嵌套查询 语句范例: select单价表.客户,单价表.产品名,单价表.单价; from单价表; where单价表.产品名=(select产品表.产品名; from产品表; where产品表.产品ID="102-5000") 说明: 查询得到单价表里满足产品名为产品表里产品ID为“102-5000”的产品的相关信息 2.带【in】的嵌套查询 语句范例: select雇员表.雇员编号,雇员表.姓名,雇员表.职位,雇员表.薪水; from雇员表; where薪水in(select薪水from雇员表where姓名='张三') 说明: 查询得到雇员表里满足薪水符合姓名为张三的薪水的所有雇员的相关信息,比如in(1000,1500,2000)表示薪水=1000或1500或2000的情况。注:此语句完成的查询薪水和张三相等的职员,也可以使用【notin】来进行相反的查询 3.带【any】的嵌套查询 语句范例: select雇员表.雇员编号,雇员表.姓名,雇员表.职务,雇员表.薪水; from雇员表; where薪水>any(select薪水from雇员表where职务=‘工程师’) 说明: 查询得到薪水比职务为工程师的薪水都要高的职员信息。例如子查询结果为(2000,1500,1000),父查询的条件为"薪水>2000or薪水>1500or薪水>1000" 4.带【some】的嵌套查询 语句范例: select雇员表.雇员编号,雇员表.姓名,雇员表.职务,雇员表.薪水; from雇员表; where薪水=some(select薪水from雇员表where职务=‘工程师’) 说明: 查询得到薪水和职务为工程师的薪水一样的职员信息,也就是和任意一个工程师的薪水相等的职员信息。例如子查询结果为(2000,1500,1000),父查询的条件为"薪水=2000or薪水=1500or薪水=1000"。 带【any】的嵌套查询和【some】的嵌套查询功能是一样的。早期的SQL仅仅允许使用【any】,后来的版本为了和英语的【any】相区分,引入了【some】,同时还保留了【any】关键词。 5.带【all】的嵌套查询 语句范例: select雇员表.雇员编号,雇员表.姓名,雇员表.职务,雇员表.薪水; from雇员表; where薪水>all(select薪水from雇员表where职务=‘工程师’) 说明: 查询得到薪水比任一工程师薪水都要高的职员信息。例如子查询结果为(2000,1500,1000),父查询的条件为"薪水>2000and薪水>1500and薪水>1000"。 6.带【exists】的嵌套查询 语句范例: select雇员表.雇员编号,雇员表.姓名,雇员表.职务,雇员表.薪水; from雇员表,部门表; whereexists(select*; from雇员表; where雇员表.部门编号=部门表.部门编号) 说明: 查询得到雇员表和部门表的部门编号相匹配的所有雇员信息。 7.并操作【union】的嵌套查询 语句范例: (select部门编号from雇员表)union(select部门编号from部门表) 说明: 并操作就是集合中并集的概念。属于集合A或集合B的元素的总和就是并集。注:该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。 8.交操作【intersect】的嵌套查询 语句范例: (select部门编号from雇员表)intersect(select部门编号from部门表) 说明: 交操作就是集合中交集的概念。属于集合A且属于集合B的元素的总和就是交集。注:该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。 9.差操作【minus】的嵌套查询 语句范例: (select部门编号from部门表)minus(select部门编号from雇员表) 说明: 差操作就是集合中差集的概念。属于集合A(前一个孒查询结果)且不属于集合B(后一个孒查询结果)的元素的总和就是差集。注:该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。