Oracle查询语句二

1.分组函数

分组函数的结果是对记录集进行分组,每一组返回一行。

常用的分组函数:AVG,MAX,MIN,COUNT,SUM。

2.

2.分组查询

SELECT [column,] group_function(column),...

FROM table_name

[WHERE condition]

[GROUP BY column]

[HAVING condition]

[ORDER BY column];

分组查询中对null值得考虑:

分组函数会忽略包含null值得行,使用NVL函数解决此问题

GROUP BY子句的语法:

SELECT子句中没有出现在分组函数中的列或表达式必须也包含在GROUP BY子句中。

GROUP BY子句中的列,不一定要出现在SELECT子句中。

GROUP BY子句可以包含多列(表达式)。

在WHERE子句中使用分组函数要使用HAVING子句来替换。

WHERE子句的作用?

那些行参加分组。

GROUP BY子句的作用?

如何进行分组。

HAVING子句的作用?

那些分组被显示。

3.连接查询

目标:使用等值连接或非等值连接从多表中检索数据,使用外连接检索不满足等值条件的数据行,使用自连接讲一个表和自身进行连接。

笛卡尔积:列数相加,行数相乘。

--危害:产生n1*n2*...*nn行结果。

--产生的原因:没有指定连接,连接无效,第一个表中的每一行都和另外一个表的每一行进行了连接。

--解决方法:使用WHERE子句避免笛卡尔积。

连接类型:

--等值连接

--非等值连接

--外连接

--自连接

等值连接:

SELECT table1.column,table2.column 

FROM table1,table2

WHERE table1.column1 = table2.column2;

--如果多张表中有同名列,则:

--使用表前缀来明确多个表中同名的列

--使用表前缀可以提高性能

--使用列别名来区分多个表中同名得列

--如果有n个表需要进行等值连接,至少需要n-1个连接条件

非等值连接:

--使用IN,BETWEEN AND,<,>,...

外连接:

--使用外连接将那些不匹配的行也显示出来

--外连接的操作符是(+),(+)放在缺失值的那一边

--左外连接

SELECT A.a,B.b FROM A LEFT JOIN B ON B.b=A.b

等价于

SELECT A.a,B.b FROM A,B WHERE A.b = B.b(+)

--右外连接

SELECT A.a,B.b FROM A RIGHT JOIN B ON B.b=A.b

等价于

SELECT A.a,B.b FROM A,B WHERE A.b(+) = B.b

自连接:

--必须使用别名


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值