Oracle 高级查询-【联合语句】【联合查询】【层次查询】
2018-03-24 21:29
483 查看
Orcle高级查询
基本查询
基本语法
where 子句
利用distinct 获取唯一性记录
order by 子句
group by 子句
having 子句
子查询
联合语句
union 查询
union all 查询
intersect 查询
minus 查询
联接查询
等值联接
不等值联接
内连接
外联接
左联接
右连接
完全连接
自连接
层次化查询
TPL:事务处理语言 — COMMIT、ROLLBACK、SAVEPOINT、SET TRANSACTION
DCL:数据控制语言 — GRANT、REVOKE
DML:数据操作语言 — SELECT、UPDATE、INSERT、DELETE
4000
对于需要分组查询的子句,ORDER BY 需要置于groub by 后面,并且排序字段需要是 groub by 的分组字段
子查询是完整的查询语句。子查询首先生成结果集,并将结果集应用于条件语句。
子查询可以出现在插入,查询,更新和删除语句中。建立子查询的目的是更加有效的限制where 子句中的条件,并可以将复杂的查询逻辑梳理的更加清晰。
子查询可以访问父查询中的数据源,但是父查询不能够访问子查询from子句所定义的数据源。子查询是根据父查询中的每条记录执行的。
子查询可以使用子查询的位置 : where,select,having,from
不可以使用子查询的位置:group by
一般不在子查询中使用排序
什么是多表查询
从多个表中获取数据就是多表查询。
笛卡尔积
两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y
注意 不适合操作大表
基本查询
基本语法
where 子句
利用distinct 获取唯一性记录
order by 子句
group by 子句
having 子句
子查询
联合语句
union 查询
union all 查询
intersect 查询
minus 查询
联接查询
等值联接
不等值联接
内连接
外联接
左联接
右连接
完全连接
自连接
层次化查询
Orcle高级查询
DDL:数据定义语言 — CREATE、ALTER、DROP、TRUNCATETPL:事务处理语言 — COMMIT、ROLLBACK、SAVEPOINT、SET TRANSACTION
DCL:数据控制语言 — GRANT、REVOKE
DML:数据操作语言 — SELECT、UPDATE、INSERT、DELETE
基本查询
selct 是查询中的首要关键字,select 用于指定查询所获得的结果列。select 列表后需要紧跟 from 字句基本语法
SELECT column_name,...| * from table_name ,...
where 子句
where 子句用于过滤from 子句所获得的所有数据源SELECT column_name,...| * from table_name ,... WHERE expressions -- expressions 过滤条件
利用distinct 获取唯一性记录
distinct 关键字用于获得唯一性记录,被distinct 限制的既可以是单个列,也可以是多个列组合。SELECT DISTINCT column_name,...| * from table_name ,...
order by 子句
order by 子句可以将查询的结果,按照一定的顺序进行排序。当排序列的数据类型是字符串时,将按照字符串在字母表中的顺序进行排序SELECT column_name,...|* FROM table_name,... WHERE expressions order by column_name asc | desc -- asc 升序 desc 降序
group by 子句
group by 子句用于对记录集合进行分组,一旦使用分组之后,select 语句的真实操作目标为各个分组数据,每次循环处理的也是各个分组,而不是单条记录、4000
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 子句、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操作。SELECT column_name,... | * FROM table_name union SELECT column_name,... | * FROM table1_name WHERE ....
union all 查询
union all 查询和union 查询同为并集操作,但union all 查询并不删除最终结果集中的重复记录。因此union all 的操作要快于union 。SELECT column_name,... | * FROM table_name union all SELECT column_name,... | * FROM table1_name WHERE ....
intersect 查询
intersect 查询用于获得两个结果集的交集。SELECT column_name,... | * FROM table_name where ... intersect ` SELECT column_name,... | * FROM table1_name WHERE ....
minus 查询
minus 查询用于获得两个结果集合的差集,只会显示在第一个结果集中存在但第二个结果集中不存在的数据,并且会以第一列结果进行排序SELECT column_name,... | * FROM table_name where ... minus SELECT column_name,... | * FROM table1_name WHERE ....
联接查询
联接用于指定多数据源之间如何组合,以形成最终的数据源。如果没有未显示指定联接,那么将获得多个数据源的笛卡尔积。什么是多表查询
从多个表中获取数据就是多表查询。
笛卡尔积
两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y
等值联接
等值联接将多个数据源进行查询,连接条件是等号SELECT * FROM table_name t,table2_name t2 where t1.column_name=t2.column;
不等值联接
等值联接将多个数据源进行查询,连接条件不是等号SELECT * FROM table_name t,table2_name t2 where t1.column_name=t2.column;
内连接
外联接
核心:通过外链接,把对于连接条件不成立的记录,仍然包含在最后的结果中左联接
select * from table_a_name left join table_b_name on '条件' 可以简写为 select * from table_a_name.table_b_name where a=b(+)
右连接
完全连接
自连接
核心:通过别名,将同一张表视为多张表select a.name_a,b.nameb from table_name a,table_name b where 条件
注意 不适合操作大表
层次化查询
相关文章推荐
- oracle联合查询并更新一个表字段的sql语句
- oracle联合查询并更新一个表字段的sql语句
- Oracle高级查询语句学习
- Oracle中针对层次数据所设计的专用SQL查询语句
- oracle:两条sql语句实现层次查询的反序权值计算与输出
- Oracle兼容之层次查询:层次查询高级特性分析-性能调优
- ORACLE 层次结构查询语句 start with connect by 你用过吗?
- 一些oracle 高级查询语句
- ORACLE 层次结构查询语句 start with connect by prior
- 常用的SQL语句<三> 联合查询和高级用法
- SQL Server SQL高级查询语句小结(转)
- oracle中的联合主键查询问题!
- oracle高级查询用法
- Oracle 层次查询、递归
- oracle关联查询语句整理
- Oracle笔记:层次查询(Select)
- oracle 高级SQL查询
- 详解Oracle的几种分页查询语句
- oracle入门之 Select查询语句(三)
- Oracle SQL使用笛卡尔连接、正则表达式和层次查询、union all、unpiovt 解决多列值筛选、列转行问题