设为首页 加入收藏

TOP

子查询、联合查询和连接查询实例讲解
2018-04-13 06:06:37 】 浏览:145
Tags:查询 联合 连接 实例 讲解

1.子查询

查询中嵌套查询。

如select * from(

select CName,CId from TblClass

union

select DName,DId from Department

)as t1

order by cname

2.联合查询

将多个结果集合并成一个结果集,前提是列数相同,并且相应的列的类型相同。判断标准以第一个表的结果集为准。

执行结果集的特点:结果集的列名以第一个为准;

如上面的语句的结果集为在第一个表的基础上,插入第二个表的数据。列数和原来一致,只增加行数。

使用union关键字

自动排序、消除重复项

使用union all关键字

不自动排序,也不消除重复项 

3.连接查询

做多个表的数据查询。有时,结果集中的数据被包含在多个表中,则需要使用连接查询。

第一种:内连接 inner join....on或join....on

匹配两张表中都有的数据

select tClassName,tSName

from TblClass

inner join TblStudent on TblClass.tClassId = TblStudent.tSClassId

select tClassName,tSName

from TblClass ,TblStudent

whereTblClass.tClassId = TblStudent.tSClassId

只有两张表中的数据符合on条件,才会显示结果中。

第二种:外链接 left(outer) join..on , right(outer) join..on和full join.on

(1)left join ....on :左表中的信息全部出现,右表中的信息必须能够匹配的才出现

未匹配的项使用null填充

假设有A,B两张表

select * from A left (outer) join B on A.id = B.id;

select * from A ,B where A.id = B.id(+)

(2)right join ...on:右表中的信息全部出现,左表中的信息必须能够匹配的才出现

未匹配的项使用null填充

select * from A right (outer) join B on A.id = B.id;

select * from A,B where A.id(+) = B.id;

(3)full join...on:所有数据都会出现,不匹配的项使用null填充

只要想做连接查询,必须分析出两个表间的关系

select * from A full join B on A.id = B.id;

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇oracle教程之Oracle的其他数据库.. 下一篇mysql进阶讲解之数据表中带OR的多..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目