前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 高级查询-【联合语句】【联合查询】【层次查询】

Oracle 高级查询-【联合语句】【联合查询】【层次查询】

作者头像
颍川
发布2019-11-21 01:17:42
2.2K0
发布2019-11-21 01:17:42
举报
文章被收录于专栏:颍川颍川

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/wangtongxue123456/article/details/79681860

  • Orcle高级查询
    • 基本查询
      • 基本语法
      • where 子句
      • 利用distinct 获取唯一性记录
      • order by 子句
      • group by 子句
      • having 子句
    • 子查询
    • 联合语句
      • union 查询
      • union all 查询
      • intersect 查询
      • minus 查询
    • 联接查询
      • 等值联接
      • 不等值联接
      • 内连接
      • 外联接
        • 左联接
        • 右连接
        • 完全连接
      • 自连接
    • 层次化查询

Orcle高级查询

DDL:数据定义语言 — CREATE、ALTER、DROP、TRUNCATE TPL:事务处理语言 — COMMIT、ROLLBACK、SAVEPOINT、SET TRANSACTION DCL:数据控制语言 — GRANT、REVOKE DML:数据操作语言 — SELECT、UPDATE、INSERT、DELETE

基本查询

selct 是查询中的首要关键字,select 用于指定查询所获得的结果列。select 列表后需要紧跟 from 字句

基本语法

代码语言:javascript
复制
SELECT column_name,...| * from table_name ,...

where 子句

where 子句用于过滤from 子句所获得的所有数据源

代码语言:javascript
复制
SELECT column_name,...| * from table_name ,... WHERE expressions

-- expressions 过滤条件

利用distinct 获取唯一性记录

distinct 关键字用于获得唯一性记录,被distinct 限制的既可以是单个列,也可以是多个列组合。

代码语言:javascript
复制
SELECT DISTINCT column_name,...| * from table_name ,...

order by 子句

order by 子句可以将查询的结果,按照一定的顺序进行排序。当排序列的数据类型是字符串时,将按照字符串在字母表中的顺序进行排序

代码语言:javascript
复制
SELECT column_name,...|* FROM table_name,... WHERE expressions order by column_name asc | desc 

-- asc 升序 desc 降序 

group by 子句

group by 子句用于对记录集合进行分组,一旦使用分组之后,select 语句的真实操作目标为各个分组数据,每次循环处理的也是各个分组,而不是单条记录、

代码语言:javascript
复制
SELECT column_name,... | * FROM table_name,... WHERE expressions group by column_name,...

对于需要分组查询的子句,ORDER BY 需要置于groub by 后面,并且排序字段需要是 groub by 的分组字段

having 子句

where 子句会对form 子句所定义的数据源进行条件过滤,但是针对group by 子句形成的分组之后的结果集,where 子句将无能为力,为了过滤 group by 子句所生成的结果集,可以使用having 子句、

代码语言:javascript
复制
SELECT column_name,.. | * FROM table_name,... WHERE expressions groub by column_name,... having expressions

子查询

子查询是指嵌套在查询语句中的查询语句,子查询出现的位置一般为条件语句,如where 条件。Orcle 会首先执行子查询,然后执行父查询、 子查询是完整的查询语句。子查询首先生成结果集,并将结果集应用于条件语句。 子查询可以出现在插入,查询,更新和删除语句中。建立子查询的目的是更加有效的限制where 子句中的条件,并可以将复杂的查询逻辑梳理的更加清晰。 子查询可以访问父查询中的数据源,但是父查询不能够访问子查询from子句所定义的数据源。子查询是根据父查询中的每条记录执行的。 子查询可以使用子查询的位置 : where,select,having,from 不可以使用子查询的位置:group by 一般不在子查询中使用排序

联合语句

联合语句是指两个或多个select 语句是并列关系,并且对这些select语句所捕获的记录集进行集合操作。以获得最终的结果集。这些联合语句包括以下几种:union 查询,union all 查询,intersect 查询 minus 查询

union 查询

union 查询是指两个查询结果集进行并集操作,并将重复记录剔除,既想当并集操作之后,在执行一次distinct操作。

代码语言:javascript
复制
SELECT column_name,... | * FROM table_name 
union
SELECT column_name,... | * FROM table1_name WHERE ....

union all 查询

union all 查询和union 查询同为并集操作,但union all 查询并不删除最终结果集中的重复记录。因此union all 的操作要快于union 。

代码语言:javascript
复制
SELECT column_name,... | * FROM table_name 
union all 
SELECT column_name,... | * FROM table1_name WHERE ....

intersect 查询

intersect 查询用于获得两个结果集的交集。

代码语言:javascript
复制
SELECT column_name,... | * FROM table_name  where ...
intersect `
SELECT column_name,... | * FROM table1_name WHERE ....

minus 查询

minus 查询用于获得两个结果集合的差集,只会显示在第一个结果集中存在但第二个结果集中不存在的数据,并且会以第一列结果进行排序

代码语言:javascript
复制
SELECT column_name,... | * FROM table_name  where ...
minus 
SELECT column_name,... | * FROM table1_name WHERE ....

联接查询

联接用于指定多数据源之间如何组合,以形成最终的数据源。如果没有未显示指定联接,那么将获得多个数据源的笛卡尔积。

什么是多表查询

从多个表中获取数据就是多表查询。

笛卡尔积

两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y

等值联接

等值联接将多个数据源进行查询,连接条件是等号

代码语言:javascript
复制
SELECT * FROM table_name t,table2_name t2 where t1.column_name=t2.column;

不等值联接

等值联接将多个数据源进行查询,连接条件不是等号

代码语言:javascript
复制
SELECT * FROM table_name t,table2_name t2 where t1.column_name=t2.column;

内连接

外联接

核心:通过外链接,把对于连接条件不成立的记录,仍然包含在最后的结果中

左联接
代码语言:javascript
复制
select * from table_a_name left join table_b_name on '条件'
可以简写为
select * from table_a_name.table_b_name where a=b(+)
右连接
完全连接

自连接

核心:通过别名,将同一张表视为多张表

代码语言:javascript
复制
select a.name_a,b.nameb from table_name a,table_name b where 条件

注意 不适合操作大表

层次化查询

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Orcle高级查询
    • 基本查询
      • 基本语法
      • where 子句
      • 利用distinct 获取唯一性记录
      • order by 子句
      • group by 子句
      • having 子句
    • 子查询
      • 联合语句
        • union 查询
        • union all 查询
        • intersect 查询
        • minus 查询
      • 联接查询
        • 等值联接
        • 不等值联接
        • 内连接
        • 外联接
        • 自连接
      • 层次化查询
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档