- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
select distinct 去重复
set timing on 设置操作后的时间有多久
在实际的项目的开发中我们不要使用select *from 表名
使用
使用 nvl处理为空的字段值
SQLselectsal*12+nvl(comm,0)*12ascount fromemp;
在什么之间
Between
and
使用like的模糊查询
%表示0到多个
_表示任意单个字符
月工资800-3000并且职位是销售员的所有员工信息
select * fbetween800and3000
romemp
where sal and job=SALESMAN;
查询出没有上级的员工?
select*fromemp wheremgrisnull
查询出工资高于600或者岗位为manager的雇员并且名字满足姓名首字母是J?
select*fromemp
wheresal600 or enamelikeJ%and job=MANAGER;
按照部门编号升序而雇员工资是降序的排列显示出员工的姓名 工资和部门编号?
select*fromemp
orderbydeptno,saldesc;
复杂查询
MAX MIN SUM COUNT AVG 为分组函数
显示员工中最高工资和最低工资?
selectmax(sal)as 最高工资,min(sal)fromemp;
显示所有员工的平均工资和总工资?
selectavg(sal)平均工资,sum(sal)fromemp;
计算共有多少员工?
select count(sal,deptno,enmae)fromemp;
显示出工资高于平均工资员工的信息?
查询出工资最高人的名和工资是多少?
------------------------------------
Groupby:y用于对查询的结果进行分组的统计
having :用于限制分组后的显示的结果
分组函数使用的条件:
如果程序中使用了分组函数,有两种可以使用的条件
1、程序中存在groupby并指定了分组的条件,这样可以将分组条件一起查询出来
2、如果不使用分组的话,则只能单独的使用分组函数分组函数的小总结;
1分组函数只能出现在选择列表 having orderby子句中
、如果在select语句中同时包含groupby havingorderby那么他们的顺序是
Groupby having orderby
如果选select是有列名,分组函数,表达式那么这些列和表达式必须有一个出现在
Groupby中否则会出错
Groupby中否则会出错
练习题:显示非销售人员工作名称,以及从事同一工作雇员的月工资总和,并满足从事同一
工作的雇员的月工资的月工资合计大于5000,并且显示的结果是按照月工资合计升序来排列?
selectjob,sum(SAL)
fromemp
where
group
jobnotinSALESMAN
by
job
havingsum(SAL)5000
orderbysum(sal)
!分组还要记住一个简单的原则
只要一列上存在重复的内容才有可能使用分组
多表查询
多表查询
多表查询:多表是基于两个或者两个以上表的查询
1.、显示雇员名,雇员工资及所在的部门的名字(笛卡尔积)
如果是两张表那么至少有一个条件如果是两张表那么就需要有两两个条件
2、如何显示部门号是10的部门名,员工名,和工资
select dept.dname,emp.ename,emp.salformemp,dept
where dept.
3、显示雇员的名字,雇员工资及所在部门的名字并按部门排列
自连接
自连接
Select
From
GroupHaving
avg(sal)
empdeptno
deptn
avg(sal)2000
一张表的链接查询
如何显示某个员工上级的姓名?比如scott
selecta.ename,b.ename
fromempa,empb
wherea.mgr=b.empno
子查询
子查询
也叫做嵌套查询1
也叫做嵌套查询
1。例子:查询出和simth同一部门的所有员工
2、查询出工资比30号部门所有员工工资都高的员工的姓名,工资和部门号码
select
*fromempwheresal
(selectmax(sal)as salfrom emp
group bydeptno
having deptno=30);
Select *
From emp
Wheresalall(select
文档评论(0)