黑马程序员c语言教程:Oracle指令(3)_黑马程序员c语言教程

其他范文 时间:2020-02-28 07:22:10 收藏本文下载本文
【www.daodoc.com - 其他范文】

黑马程序员c语言教程:Oracle指令(3)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“黑马程序员c语言教程”。

--总结一下select语法 select from where group by having order by---------------------------执行顺序very important!--首先执行where语句将原有记录过滤;--第二执行group by 进行分组;--第三执行having过滤分组;

--然后将select 中的字段值选出来;--最后执行order by 进行排序;

-------------------------/* 按照部门分组统计,求最高薪水,平均薪水 只有薪水是1200以上的才参与统计

并且分组结果中只包括平均薪水在1500以上的部门 而且按照平均薪水倒叙排列 */ select max(sal),avg(sal)from emp where sal>1200 group by deptno having avg(sal)>1500 order by avg(sal)desc

-------------------------/* 把雇员按部门分组,求最高薪水,部门号,过滤掉名字中第二个字母是'A'的,要求分组后的平均薪水>1500,按照部门编号倒序排列 */ select max(sal),deptno from emp where ename not like '_A%'group by deptno having avg(sal)>1500 order by deptno desc

/* very very important!*/ select ename, deptno from emp;select deptno, dname from dept;

--------------------------老语法:----------------------------------------等值连接:求员工姓名以及员工所在部门的名字同时显示出来

select ename,emp.deptno,dname,dept.deptno from emp,dept where emp.deptno = dept.deptno

select ename,e.deptno,dname,d.deptno from emp e,dept d where e.deptno = d.deptno

--非等值连接:要求每位雇员的薪水等级 select * from salgrade select ename,sal,grade,losal,hisal from emp,salgrade where sal >=losal and sal =losal and sal

--也可以同一个表做跨表连接:求每位员工的姓名,及其上级经理的姓名

select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr = e2.empno

--------------------------新语法------------------在SQL1992的语法规则中,语句过滤的条件和表连接的条件都被放在了where子句中,当条件过多时,容易造成混淆,--SQL1999修正了这个缺点,将连接条件和数据过滤条件区分开来,------------------------

--交叉连接

--结果会产生这两张表的笛卡尔乘积

select * from emp cro join dept--要用deptno作为等值连接条件,我们可以这样写 select * from emp join dept using(deptno)select ename, dname from emp join dept using(deptno);--相当于

select ename, dname from emp join dept on emp.deptno = dept.deptno--也可以写成这样

--也可以用于非等值连接--求每位雇员的薪水等级

select * from emp join salgrade on(sal >=losal and sal

--多个join,where组合使用

--(求工作职位是’PRESIDENT’的雇员姓名,部门名称和薪水等级时)

select * from emp join dept on emp.deptno = dept.deptno join salgrade on(sal >=losal and sal

--外连接--取出表中连接不到一起的多余的数据--没有全内连接,没有右内连接

--其中outer也可以省略,简写为left join , right join , full join--left inner join可以缩写成inner join 也可以缩写成join,意思是左内。--update emp set deptno=20 where ename='SMITH';--commit;select * from emp;select * from dept;delete from dept where deptno=99;--左内,从左往右找,匹配不上的记录不显示 select ename,emp.deptno from emp join dept on emp.deptno = dept.deptno;select ename,emp.deptno from emp inner join dept on emp.deptno = dept.deptno;--没有这种语法:select ename,emp.deptno from emp left inner join dept on emp.deptno = dept.deptno;--左外连接,从左往右找,匹配不上的记录也显示一行 select ename,dept.deptno from emp left /*outer*/ join dept on emp.deptno = dept.deptno;

--右外连接,从右往左找,匹配不上的记录,也显示一行 select ename,dept.deptno from emp right /*outer*/ join dept on emp.deptno = dept.deptno;--没有右内连接:select ename,dept.deptno from emp right inner join dept on emp.deptno = dept.deptno;

--全外连接 select ename,dept.deptno from emp full /*outer*/ join dept on emp.deptno = dept.deptno;

--左外,右外的区别

黑马程序员c语言教程:Oracle指令

--sql structured query language --DML--Data Manipulation Language--数据操作语言 query information (SELECT), add new rows (INSERT), modify existing rows (UPDATE)......

黑马程序员c语言教程:Oracle指令

------------------------- --order by的用法--员工信息按照姓名正序排列select * from emp order by ename asc; --员工信息按照倒叙排列select * from emp order by ename......

黑马程序员c语言教程:Oracle指令(5)

------------------------- --不准用组函数(即MAX()),求薪水的最高值(面试题) --第一种解决办法: --1,先把所有薪水按照倒序排列 --2,再取第一行 select * from (select sal......

黑马程序员c语言教程:Oracle指令(4)

--什么时候用外连接呢?比如领导向你要所有学生的列表,顺便把所属的班级也列出来,就需要外连接 --在Where语句中使用子查询--- --雇员中最高薪水的人员名称 --1,先求出最高薪......

黑马程序员c语言教程:Oracle指令(6)

------------------------------ --为什么in的后面不能order by ?- --求部门经理人中平均薪水最低的部门名称 (思考题) 第一步,求部门经理的雇员编号select distinct mgr fro......

下载黑马程序员c语言教程:Oracle指令(3)word格式文档
下载黑马程序员c语言教程:Oracle指令(3).doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文