oracle SQL整理全套(2)

1、多表关联查询

不同的数据库厂商对链接类型有不同的定义,但国际上有个凌驾于各厂商的工业标准定义(SQL 1999), 我们先 来看Oracle定义的链接类型:  (1)、等于链接(2)、不等链接 (3)、外连接(可细分为左外连接、右外连接) (4)、自链接 

“等于链接” 语法:SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1 = table2.column2; 

“不等链接” 语法: 使用不等链接符,包括> , < , !=, between :SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1 > table2.column2; 

“外链接” 语法: 包括左外连接,右外连接 :SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column(+) = table2.column;

                                                                              SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column = table2.column (+); 

“自链接” : 其实是一种概念,某个table和自己本身链接 ,比如:table1给另一个“自己”起别名为table2 :SELECT table1.column, table2.column FROM table1, table1 table2 WHERE table1.column1 = table2.column2;


工业标准定义(SQL 1999)的链接类型,Oracle 从9i版本开始提供对SQL 1999的兼容支持:  
(1)、交叉连接 (2)、自然链接 (3)、 Using 子句 (4)、内连接 (5)、外连接(全外连接、左外连接、右外连接) 

交叉连接:相当于没有连接条件的多表关联查询,结果是个笛卡尔乘积,实际工作中很少应用到:SELECT last_name, department_name FROM employees CROSS JOIN departments ; 

自然链接:相当于Oracle的“等于连接”,只不过是让系统自己去找两张表中字段名相同的字段作为 “等于连接”条件:SELECT department_id, department_name, location_id, city FROM departments NATURAL JOIN locations ;

Using子句:Using子句可开着是 自然连接 的一种补充功能,我们知道自然连接会让系统自动查找两张表中的 所有列名相同的字段,并试图建立“等于连接”;但有的时候我们不期望这么做,而只是期望某个特定的字段 作为“等于连接”的条件,这种情况下可以使用Using 子句来做限制

内连接:相当于Oracle的“等于链接” , 关键字:INNER JOIN

外连接:可细分为左外连接、右外连接、全外连接。 


2、分组计算函数和group by子句

分组计算函数(常用):包括   (1)、求和 (SUM) (2)、求平均值(AVG) (3)、计数(COUNT) (4)、求标准差(STDDEV) (5)、求方差(VARIANCE) (6)、求最大值(MAX) (7)、求最小值(MIN) 此处比较简单,不用多说

使用GROUP BY 子句进行分组:SELECT   AVG(salary)  FROM     employees GROUP BY department_id ;

在Group By 中使用Rollup 产生常规分组汇总行 以及分组小计

在Group By 中使用Cube  产生Rollup结果集 + 多维度的交叉表数据源

GROUPING函数:Rollup 和 Cube有点抽象,他分别相当于n+1 和 2的n次方常规 Group by 运 算;那么在Rollup  和 Cube的结果集中如何很明确的看出哪些行是针对那些列或者列的组合进行 分组运算的结果的?  答案是可以使用Grouping 函数; 没有被Grouping到返回1,否则返回0

 使用Grouping Set 来代替多次UNION: 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值