读书人

Oracle sql 高级编程学习札记(一)核

发布时间: 2013-08-21 10:42:06 作者: rapoo

Oracle sql 高级编程学习笔记(一)核心SQL语句

一,select 语句执行顺序

5 ? SELECT <column list>?

1 ? FROM <source object list>

?1.1 ?FROM <left source object > <join type >

? ? ? ? ? ? ? ? ? ? ? ?JOIN <right source object> ON <on predicates>

2 ? WHERE ? ?<where?predicates>

3 ? ?GROUP BY <group by expressions>

4 ? ?HAVING ? ? ?<having?predicates>

5 ? ?ORDER BY <order by list>

?

(1)先执行From 后面的子句或者链接子句,查询出初始数据集;

(2)执行where子句,精简初始结果集,从初始数据集中查询出符合where条件的数据集;

(3)执行group by 子句,将from与where查询出的结果集进行聚合分组;

(4)HAVING子句,在上述的结果集中查询出该子句中的条件为真的数据集;

(5)SELECT 语句,返回最终结果集中需要显示的列;

(6)ORDER BY子句,对上述查询出的数据集进行排序;排序时要注意数据量,如果数据量比较小,就在内存中排序,如果很大,则要用到临时磁盘空间来进行,所以排序时数据量大小非常重要;

?

?

二,Insert 语句的多表插入

INSERT ALL WHEN <condition1> THEN ?INTO <table1>

? ? ? ? ? ? ? ? ? ? ? ? WHEN<condition2> THEN INTO <table2>

? ? ? ? ? ? ? ? ? ? ? ? ?..................................

? ? ? ? ? ? ? ? ? ? ? ?SELECT <column list> FROM ........

使用夺标查询时,要注意when条件,避免重复插入到多个表。

?

?

三,MERGE语句 ?具有按条件获取要更新或者要插入到表中的数据集,然后从1个或者多个源头对表进行更新或者向表中插入行两方面的能力。

?

MERGE <hint>

INTO <table name>

USING <table,view or query>

ON (<condition>)

WHEN MATCHED THEN <update_clause>

DELETE <where_clause>

WHEN NOT MATCHED THEN <inset_clause>

?

?

读书人网 >编程

热点推荐