Sql语言提供了很多不同的选择来得到同样的结果集,关键是需要搞清楚在不同的使用场景下哪种构造是最高效的。
1.Select语句
Select语句用来从一个表中,或者其他数据库对象中提取数据。
select <column list>
from <table or view>
where <predicates>
group by <expressions>
having <predicates>
order by <column asc/desc>
1.1 From子句
from子句列出了所有被查询数据的源对象,这个源对象包括表、视图、物化视图、分区或子分区,或者是由自己建立一个子查询来生成子对象。
如果使用多个源,则这些源又可以分为
(1)交叉联结,也称为笛卡尔乘积;
(2)内联结;
(3)外联结。
1.2 Where子句
where子句提供了一种方法,可以按照条件来限制查询最终返回结果集的行数。
1.3 Group By子句
group by子句将执行from和where子句后得到的筛选后的结果集进行分组聚合。
1.4 Having子句
having子句将分组汇总后的查询结果集限定为只有该子句中的条件为真的数据行
1.5 Order By子句
order by子句用来对以上4种子句所筛选得到的结果集进行排序。
2.Insert语句
2.1 单表插入
insert into <table or view>
values(<value1>,<value2>,<value3>...)
或者
insert into <table or view>
select <column1>,<column2>,<column3>
from <table or view>
2.2 多表插入
insert all
when <predicates> then
into <table or view>
when <predicates> then
into <table or view>
....
else
into <table or view>
select <column1>,<column2>,<column3>
from <table or view>
3.Update语句
update语句的作用是改变表中原有行的列值。这个语句的语法结构由3部分组成:update、set和where
4.Delete语句
delete语句的作用是从表中移除行。这个语句的语法结构由3部分组成:delete、from和where
5.Merge语句
merge into <table or view>
using <table or view>
on <conditions>
when matched then
update <clause>
delete <clause>
when not matched then
insert <clause>