SQL系列(一) 核心
SQL的目的就是简单地提供一个访问数据库的接口,每一条SQL语句对于数据库来说就是一条命令(指令)。
5个核心的SQL语句:
1.1.SELECT语句
?? select语句:用于从一张或者多张表或者其他数据库对象中提取数据。Oracle是基于查询成本优化器(cost-based? optimizer,OCB)来产生实际的执行计划。
例如:
select (Distinct)<column list>from <source object list>join on where group by having order by
?? ??? SQL有别于其他编程语言的一点在于首先处理的并不是第一行的语句(select),而是from字句。join on字句可以把处理过程中的每一步想象成生产一个临时的数据集。随着每个处理步骤的进行,这个数据集被不断地操作直到生成最终的处理结果。
1.2.from字句列出了所查询数据的源对象,例如:表、视图、物化视图、分区、子分区、子查询生成的子对象......
1.3.where可以按照条件来限制查询最终返回结果集的行数。每个条件(谓语)都是以两个值或表达式相比较形式出现。
1.4.group by字句将执行from和where字句得到的数据集进行聚合(分组)。你可以按照from字句中所列出对象的任意字段进行分组,即使你并不想输出结果列表中显示该列。相反,select列表中的任何非聚合字段都必须包括在group by字句中。group by字句中还可以包含两个附加的运算:ROLLUP和CUBE。ROLLUP运算用来产生部分求和值,CUBE运算用来求得交互分类值。提示:分组之后数据集并不会排序。
1.5.having字句将分组汇总之后的查询结果限定为只有该字句中的条件为真的数据行。
1.6.distinct字句用来在其他字句执行完成以后从结果集中去除重复的行。
1.7.order by字句用来对查询最终返回的结果集进行排序。排序对于数据量的大小(结果集中的总字节数)关系非常大,较小的排序会在内存中来实现,而较大的排序将使用临时磁盘空间来完成。一般来说,排序是查询过程中开销相当大的一个处理步骤,尤其是返回结果集很大的时候。
SQL语句执行顺序: