oracle-sql-高级编程版笔记1

SQL核心

5个核心SQL语句

SELECT

用来从一个或多个表中或者其他数据库对象中提取数据。

示例以及逻辑处理顺序

1
2
3
4
5
6
7
8
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 expression(s)>
4 HAVING <having predicates>
6 ORDER BY <order by list>

FROM

列出所查询数据的源对象,包含表、视图、物化视图、分区或子分区,或者建立一个子查询。

如果使用多个源对象,其逻辑处理阶段也将会应用到每一个联结类型以及谓词ON,处理联结语句的时候按下面的顺序进行:

  1. 交叉联结,也称笛卡尔乘积;
  2. 内联结;
  3. 外联结。

WHERE

按照条件来限制查询最终返回集的行数。

GROUP BY

将执行FROM和WHERE子句后得到的经过筛选后的结果集进行聚合。

HAVING

将分组汇总后的查询结果限定为只有该子句中的条件为真的数据行。

SELECT

列出查询的返回最终结果集中需要显示哪些列。可以是一个实际的列、一个表达式,活着一个SELECT语句的结果。

ORDER BY

用于对查询最终返回的结果集进行排序

INSERT

用来向表、分区或者试图中添加行。可以向单表或者多个表方法中添加数据行。

单表插入

1
2
3
4
INSERT INTO <table_name> 
(<columns>)
VALUES
(<column values>)

多表插入

UPDATE

改变表中原有行的列值。

1
2
3
UPDATE <table_name> 
SET <column>=<value>
WHERE <where predicates>

DELETE

用来从表中移除数据行。

1
2
DELETE FROM <table_name> 
WHERE <where predicates>

MERGE

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

用在数据仓库中来移动大量的数据。

1
2
3
4
5
6
7
8
MERGE <hint>
INTO <table_name>
USING <table_or_query>
ON (<condition>)
WHERE MATCHED THEN <update_clause>
DELETE <where_clause>
WHEN NOT MATCHED THEN <insert_clause>
[LoG ERRORS <log_errors_clause> <reject limit <integer | unlimited>>]