李兴华oracle ppt,魔乐科技Oracle笔记超经典李兴华doc.ppt

魔乐科技Oracle笔记超经典李兴华doc

连接符 ||

图表 1

多表查询的基本语法

查一张以上的表,就叫做多表查询

例子:查询出雇员名称,部门名称和部门所在地的(一般多表查询要用别名)

统计记录数:

查询emp有多少条纪录

左右连接(重点)

select e.empno,e.ename,d.deptno,d.dname,d.loc

from

emp e,dept d where e.deptno=d.deptno;

部门一共四个,这里只查询出三个,因为在雇员表中没有指定40部门的雇员,所以在消除笛卡尔乘机的时候没有条件符合40,如果喜欢40部门显示出来,就要用左右连接了。

select e.empno,e.ename,d.deptno,d.dname,d.loc

from

emp e,dept d where e.deptno(+)=d.deptno;

(+)在左边,表示以右边的表为准,表示右链接。

40部门出来了,所以此时就用到了有连接,证明以下规律

(+)在左表示右连接

(+)在右表示左连接

.SQL:1999对SQL的支持(了解)

范例:交叉连接(cross join)产生笛卡尔积

select * from empt CROSS JOIN dept;

查询结果 产生笛卡尔积

CREATE TABLE EMP10 AS SELECT * FROM EMP WHERE DEPTNO=10;

select * from emp NATURAL JOIN dept; 自动进行匹配

范例:USING子句,直接关联的操作列

select * from emp e JOIN dept d USING (deptno) where deptno=30;

把两张表的详细信息进行打印输出

范例:ON子句 自己编写连接条件

select * from emp e JOIN dept d ON (e.deptno=d.deptno) where e.deptno=30;

范例:左连接(左外连接)右连接(右外连接)LEFT JOIN RIGHT JOIN

组函数和分组统计(重点)

组函数

在SQL常用组函数有如下几个:

COUNT()求全部记录数

MAX()求最大记录数

MIN()求最小记录数

AVG()平均

SUM()求和

分组统计

Group by

select deptno,COUNT(empno) from emp GROUP BY deptno;

算出部门表的平均工资:

select AVG(sal) from emp ;

算出每个部门的平均工资:

Select deptno,AVG(sal) from emp ;

?之所以会出现这个错误是因为数据库不知道怎样在结果集中处理列。考虑一下:这个查询既试图使用AVG聚合函数对多 行记录进行操作,却又试图从每行中获得列的值;这两个操作是不可能同时完成的。此时必须提供一个GROUP BY子句告诉数据库将列相同的行分组在一起,然后数据库就可以将这些组中的行传递给AVG函数。

警告:

如果查询中包含聚合函数,而所选择的列并不在聚合函数中,那么这些列就必须在GROUP BY子句中。

select d.dname,count(e.empno) from dept d,emp e

where d.deptno=e.deptno

GROUP BY d.dname;

要求查出平均工资大于2000的部门编号和平均工资

select deptno,AVG(sal) from emp WHERE AVG(sal) >2000 GROUP BY deptno;

?之所以会出现这个错误是因为WHERE子句只能用来对单行而不是行组进行过滤。要过滤行组,可以使用HAVING子句。’SALESMAN’

select * from emp where job<>'salesman';

2.按工作分组同时求出工资的总和

Select job,SUM(sal) from emp WHERE job<>’SALESMAN’ GROUP BY job;

3.对分组条件进行限制

Select job,SUM(sal) from emp WHERE job<>’SALESMAN’ GROUP BY job HAVING SUM(sal)>5000;

4.使用排序,按升序排列

Select job,SUM(sal) su from emp WHERE job<>’SALESMAN’ GROUP BY job HAVING SUM(sal)>5000 order by su;

分组的简单原则:

只要一列上存在重复的内容才考虑用分组

注意:分组函数可以嵌套使用,但是在组函数嵌套的时候不能再出现分组条件的查询语句

范例:求出平均工资最高的部门

错误代码:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值