多表查询和子查询.ppt_第1页
多表查询和子查询.ppt_第2页
多表查询和子查询.ppt_第3页
多表查询和子查询.ppt_第4页
多表查询和子查询.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四部分:多表查询和子查询,多表查询:使用数据查询时,通常一个表中没有所需的数据,因此需要多表查询。在关系数据库中,将相关信息存储在单独的表中,以避免重复数据。通常,关系数据库、表和表之间存在关系。多表查询通常是将两个或多个表中关系字段中具有相同值的记录作为新记录链接到结果集中。1,笛卡尔集:出现在多表查询中的笛卡尔集现象:笛卡尔集构成了一个表中的一个唱片和另一个表中的每个记录出现在结果集中的新记录(如果存在两个表)。结果集中的唱片总数为Mn条记录。多表查询中出现这种现象是我们不想看到的。出现笛卡尔集的原因是多表查询没有连接条件。2、Oracle的多表连接主要包括:(1)内部连接:不等于等效连

2、接的连接、自然连接。(2)外部连接:分为左右连接。(3)自连接:一个表中的一个记录与牙齿表中的另一个记录相关联。3,对等连接:称为简单连接或内部连接,是连接查询中最常用的连接方法。(1)语法如下:select table1.column _ name、table2.column _ name、from table 1 inner join table 2 on table 1 . column _ name=table 2 . column _ name inner join where condition,第4部分:(2)示例:销售的图书的图书编号、图书类型、价钱销售量和销售日期select

3、 titles.title _ id、type _,price、ord _ date from titles joid注意:多个可以使用“表名”限定。也可以限定为在表上加上别名的形式,从而简化编程,提高效率。范例:select t.title _ id、t.type _、t.price、s . ord _ date from titles t join sales on t . title(3)独立练习:12)查询具有奖金的所有员工的员工编号、员工姓名、部门编号和部门名称信息。3)查询销售图书的图书编号、标题、出版社名称、作者姓名、销售日期、销售总量。附注:join语句(如select.tit

4、le _ id、t.type _、t.price、s.ord _ date from titles t)可以不用于内部连接,将上述3茄子练习重写为没有join on连接的格式,第4部分:多表格Select ename、sal、grade from EMP、salgrade where sal between los al and hisal;5,自然连接:NATURAL JOIN子句创建等值连接,条件是两个表中具有相同名称的列,而不是指定关键字字段的等值。查询表中满足等值条件的所有数据。注意:如果列名相同,数据类型不同,或者查询中出现列的限定词,则会出错。示例:select title _ i

5、d、type _、s.qty、ord _ date from titles natural join sales where price 20;第4部分:多表查询和子查询,6,自连接:自连接时连接的特殊情况,连接了一个表中的记录(例如,查询和bu1032号图书类型相同的书的书名价钱,包含bu1032号图书中的信息selectdistinctt1.title),T2。title,T2。price from titles t1,titles T2 where t1.price=T2。price and t1.title _ id=bu1032观察结果集中的数据:确定结果集中的数据是否满足业务要求,

6、如果不需要,则分析如何复盖。7、外部连接:外部连接分为两种茄子类型。一个是左连接,另一个是右连接。外部连接时,必须确保这两个表中的一个是主表。(1)外部连接的语法格式:将缺少的表显示为“”。也就是说,没有匹配值的表称为“缺少的表”。Select table1.column、table2.column from table1、table 2 where table 1 . column()=table 2 . column;(右侧连接)select table1.column、table2.column from table1、table 2 where table 1 . column=tab

7、le 2 . column()(左侧连接)或:2)所有售出图书的书名销售日期和销售量a、select t.title _ id、t.type _、s.qty、s.ord _ date from titles t、select t t.title _ id。第4部分:多表查询和子查询,8,添加:合并查询:union关键字使您可以对多个select结果进行分组。union将徐璐混合其他select命令生成的数据并消除重复记录。如果不想删除重复的记录,也可以使用union all命令将查询获得的数据保存到新表中。例:查询图书编号7067和7066号图书销售店的销售信息,分别合并一个结果集。selec

8、t * from sales where stor _ id=7066 union select * from sales where stor _ id=7067;9,补充:ANSI SQL 1999连接查询语法为:SELECT table1.column,Table 2 .column from table 1 CROSS JOIN table 2 |-创建互连笛卡尔集NATURAL JOIN table2 | -自然连接JOIN table 2 using(column _ name)-使用using语句joii叉积和笛卡儿积相等。select last _ name,departmen

9、t _ name from employees cross join departments;第4部分:多表查询和子查询,(2)使用USING子句创建连接,使用NATURAL JOIN子句创建对等连接时,如果存在多个具有相同名称和不同数据类型的列,则可以使用USING子句指定对等连接所需的列。使用USING,您可以在有多个列满足条件时进行选择。不要在选定列中使用表名前缀或别名。NATURAL JOIN子句和USING子句经常同时使用。select e.employee _ id,e.last _ name,department _ id from employees e join depart

10、ments d using(depaa,) 出版社名字的信息(5)在纽约工作的员工的姓名、工资、奖金部门名称,我们掌握了基本查询语句、条件查询、单行函数、组函数和组查询、多表查询等功能。 基本上可以满足工作的需要,但是有些要求必须通过复杂的查询来实现。这使用了相对复杂、难以掌握的查询子查询。子查询在主查询结构中出现的select语句称为子查询,子查询必须括在括号中,括号中的查询称为子查询或内部查询,外部查询称为主查询,其执行顺序是在执行主查询之前执行子查询。1,子查询语法结构:select查询列from表名Where列名运算符(Select查询列From表名);说明:牙齿子查询的结果可以用作外

11、部查询的条件。实例:(1)查询部门中所有员工的信息,如工作编号、姓名、薪金、奖金、部门编号和部门名称。第4部分:多表查询和子查询select e.empno、e.ename、e.sal、m、e.deptno、D. dname from EMP e、dept d (2)书编号、标题Select.title _ id、t.title、t.type _、t.price、s.ord _ date、s.qty from titles T .子查询中包含a,子查询中包含b,子查询中包含圆括号子查询具有单行子查询;第4部分:多表查询和子查询;第2部分:单行子查询:子查询结果只有一个记录;单行子查询需要运算符

12、:=、(1)显示在where地区的子查询:例如,位于查询和SCOTT牙齿等部门且薪金大于SCOTT薪金的员工信息包括姓名、部门编号、薪金和奖金信息。(独立完成)有点。(2)出现在having语句中的子祖怀:例如,要统计公司公司的人数,要查找职员数高于公司各部门平均人数的部门信息select deptno,count(EMP no)from EMP group by dept no having count 3,多行子查询使用多行运算符。in,any,all,第四部分:多表查询和子查询,(1)in运算符:与前面的功能一样,获取其中一个列表。示例1:The Busy Executives Data

13、base Guide,The Gourmet microw availsSelecttitle _ id,title,type _,price from titles where price in(select price from titles where title=the busy exect(2)安妮:安妮经常和一起使用。1)any:大于子查询返回的结果之一。也就是说,大于最小值。实例1:查询部门10中薪金高于任何员工的员工的工作编号名称信息。不包括部门10中的员工。第4部分:多表查询和子查询、select empno、ename from EMP where salany(select sal from EMP where deptno=10)和dept no!=10;示例2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论