首页 查询

查询

举报
开通vip

查询 《Oracle 数据库》 Copyright 2008, Oracle HJC Chapter 6 – Page 1 第 6 章 数据查询 第 6 章 数据查询 本章重点介绍 Oracle 数据库的查询技术。所谓查询,就是从已经存在的表中检索数 据,并显示检索的结果。查询按功能分成多种类型。查询语句在书写上也有特定的语法 要求。 基本查询 查询结果的排序 条件查询 高级查询 Oracle 2008 HJC 第 6 章 数据查询 Copyright 2008, Oracle H...

查询
《Oracle 数据库》 Copyright 2008, Oracle HJC Chapter 6 – Page 1 第 6 章 数据查询 第 6 章 数据查询 本章重点介绍 Oracle 数据库的查询技术。所谓查询,就是从已经存在的 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 中检索数 据,并显示检索的结果。查询按功能分成多种类型。查询语句在 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 写上也有特定的语法 要求。 基本查询 查询结果的排序 条件查询 高级查询 Oracle 2008 HJC 第 6 章 数据查询 Copyright 2008, Oracle HJC Chapter 6 – Page 2 6.1 基本查询 【训练 1】指定检索字段。 Select * from emp; Select * from scott.emp; Select deptno,dname form dept; 【训练 2】显示行号。 Select rownum,ename from emp; [说明] 显示的行号是查询结果的行号,数据在数据库中是没有行号的。 【训练 3】显示计算列。 Select ename,sal,sal*(1+20/100) from emp; 【训练 4】在查询中使用列别名。 Select ename as 名称,sal 工资 from emp; 【训练 5】在列名上使用双引号。 Select ename as "Name",sal*12+5000 as "年度工资(加年终奖)" from emp; [说明] 别名"Name"中有大小写区别,别名"年度工资(加年终奖)"中出现了括号,属于 特殊符号,所以需要使用双引号。 【训练 6】连接运算符的使用。 Select ename||':'||job as 雇员和职务表 from emp; 【训练 7】在查询中使用字符串常量。 Select ename||' IS '||job AS " 雇员和职务表" from emp; 【训练 8】消除重复行。 Select distinct job from emp; 《Oracle 数据库》 Copyright 2008, Oracle HJC Chapter 6 – Page 3 6.2 查询结果的排序 【训练 1】升序排序。 Select ename,sal from emp order by sal; [说明] 若省略 ASC 和 DESC,默认为 ASC,即升序排列。 【训练 2】降序排序。 Select ename,hiredate From emp Order by hiredate desc; 【训练 3】多列排序。 Select ename,deptno,hiredate From emp Order by deptno,hiredate; 【训练 4】在排序中使用别名。 Select empno,ename,sal*12 as total From emp Order by total; 第 6 章 数据查询 Copyright 2008, Oracle HJC Chapter 6 – Page 4 6.3 条件查询 【训练 1】简单查询: > < >= <= = <> Select ename,job,sal From emp Where job=’SALESMAN’; [说明] 字符串和日期型数据的是包含在单引号中的。 【训练 2】简单查询:显示工资大于等于 3000 的雇员姓名、职务和工资。 Select ename 姓名,job 职务,sal 工资 From emp Where sal>=3000; 【训练 3】简单查询:显示 1982 年以后雇佣的职员姓名和雇佣时间。 Select ename,hiredate From emp Where hiredate>=’1-1 月-82’; 【训练 4】复合条件查询:逻辑与-AND Select ename,job,sal From emp Where sal>1000 and sal<2000; 【训练 5】复合条件查询:逻辑或-OR Select * From emp Where job=’CLERK’ OR job=’MANAGER’; 【训练 6】复合条件查询:逻辑非-NOT Select * From emp Where NOT deptno=10; 【训练 7】复合条件查询:逻辑或和逻辑与:显示部门 10 和部门 20 中工资小于 1500 的雇员。 Select * From emp Where (deptno=10 or deptno=20) and sal<1500; 【训练 8】条件特殊表示法:[NOT] BETWEEN…AND…的用法。 Select * From emp Where sal between 1000 and 2000; [说明] between 包括边界,not between 不包括边界。 【训练 9】条件特殊表示法:[NOT] IN (…)的用法。 Select * 《Oracle 数据库》 Copyright 2008, Oracle HJC Chapter 6 – Page 5 From emp Where job in (‘SALESMAN’,’CLERK’,’MANAGER’); 【训练 10】条件特殊表示法:[NOT] LIKE 匹配模式 的用法。 Select * From emp Where ename like ‘S%’; Select * From emp Where ename like ‘_A%’; [说明] “_”代表任意一个字符; “%”代表任意字符,个数任意。 【训练 11】条件特殊表示法:判断空值 NULL,用法: IS [NOT] NULL。 Select ename,mgr From emp Where mgr is null; 第 6 章 数据查询 Copyright 2008, Oracle HJC Chapter 6 – Page 6 6.4 高级查询 6.4.1 多表联合查询 两个表的连接有四种连接方式:相等连接、不等连接、外连接和自连接。 【训练 1】相等连接。 --显示雇员的名称和所在的部门的编号和名称 Select emp.ename 姓名,emp.deptno 部门编号,dept.dname 部门名称 From emp,dept Where emp.deptno=dept.deptno; --使用表别名 Select ename 姓名,e.deptno 部门编号,dname 部门名称 From emp e,dept d Where e.deptno=d.deptno; --显示工资大于 3000 的职工的姓名、工资和所在的部门名称。 Select ename,sal,dname From emp,dept Where emp.deptno=dept.deptno and sal>3000; 【训练 2】外连接:外连操作符为(+),它可以出现在相等连接条件的左侧或右侧。 --使用外连显示不满足相等条件的记录。 --显示雇员的姓名、工资和所在的部门名称及没有任何雇员的部门。 Select ename 姓名,sal 工资,dname 部门名称 From emp,dept Where emp.deptno(+)=dept.deptno; --显示雇员的姓名、工资和所在的部门名称及没有属于任何部门的雇员 Select ename 姓名,sal 工资,dname 部门名称 From emp,dept Where emp.deptno=dept.deptno(+); 【训练 3】不等连接。 --显示 salgrade 表的结构 desc salgrade 名称 是否为空? 类型 -------------------------------- -------- ----------- GRADE NUMBER LOSAL NUMBER HISAL NUMBER --显示 salgrade 表的记录 select * from salgrade; GRADE LOSAL HISAL 《Oracle 数据库》 Copyright 2008, Oracle HJC Chapter 6 – Page 7 ----- ---------- ---------- 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 --显示雇员名称,工资和所属工资等级 select e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal; [说明] 通过将雇员工资与工资上下限范围的比较,取得工资的等级,并在查询结果中 显示出雇员的工资等级。 【训练 4】自连接:一个表同本身进行的连接。 --显示雇员姓名和雇员的经理姓名。 select worker.ename||' 的经理是 '||manager.ename as 雇员经理 from emp worker,emp manager where worker.mgr=manager.empno; 6.4.2 统计查询 常用的组函数: AVG 求平均值 COUNT 求统计值,返回非空行数,*表示返回所有行 MAX 求最大值 MIN 求最小值 SUM 求和 STDDEV 求标准偏差,是根据差的平方根得到的 VARIANCE 求统计方差 【训练 1】统计查询。 --统计雇员总人数 Select count(*) from emp; --求有佣金的雇员人数 Select count(comm) from emp; --求部门 10 的雇员的平均工资 Select avg(sal) from emp where deptno=10; --求最晚和最早雇佣的雇员的雇佣日期 Select max(hiredate),min(hiredate) From emp; --求雇员表中不同职务的个数 Select count(distinct job) 第 6 章 数据查询 Copyright 2008, Oracle HJC Chapter 6 – Page 8 From emp; 【训练 2】分组统计。 --按职务统计工资总和 Select job,sum(sal) From emp Group by job; [说明] 在查询列中,不能使用分组列以外的其他列,否则会产生错误信息。 【训练 3】多列分组统计。 --按部门和职务分组统计工资总和 Select deptno,job,sum(sal) From emp Group by deptno,job; [说明] 该查询统计每个部门中每种职务的工资总合。 【训练 4】分组统计结果限定。 --统计各部门的最高工资,排除最高工资小于 3000 的部门 Select deptno,max(sal) From emp Group by deptno Having max(sal)>=3000; 【训练 5】分组统计结果排序。 --按职务统计工资总合并排序 Select job 职务,sum(sal) 工资总合 From emp Group by job Order by sum(sal); 【训练 6】组函数的嵌套使用。 --求各部门平均工资的最高值 Select max(avg(sal)) 最高工资 From emp Group by deptno; 6.4.3 子查询 【训练 1】单行子查询。 --查询比 SCOTT 工资高的雇员名字个工资 Select ename,sal From emp Where sal>(select sal from emp where ename=’SCOTT’); --查询和 SCOTT 同一部门且比他工资低的雇员的名字和工资 《Oracle 数据库》 Copyright 2008, Oracle HJC Chapter 6 – Page 9 Select ename,sal From emp Where sal<(select sal from emp where ename=’SCOTT’) And deptno=(select deptno from emp where ename=’SCOTT’); --查询工资高于平均工资的雇员名字和工资 Select ename,sal from emp where sal>(select avg(sal) from emp); 【训练 2】多行子查询:一般要使用 IN、ANY 和 ALL。 --查询工资低于任何一个“CLERK”的工资的雇员信息 Select empno,ename,job,sal From emp Where sal’CLERK’; --查询工资比所有的“SALESMAN”都高的雇员的编号、名字和工资 Select empno,ename,sal From emp Where sal>all(select sal from emp where job=’SALESMAN’); --查询部门 20 中职务同部门 10 的雇员一样的雇员信息 Select empno,ename,sal From emp Where job in (select job from emp where deptno=10) and deptno=20; --查询职务和“SCOTT”相同,比“SCOTT”雇佣时间早的雇员信息 Select empno,ename,job From emp Where job=(select job from emp where ename=’SCOTT’) and hiredate<(select hiredate from emp where ename=’SCOTT’); 【训练 3】多列子查询。 --查询职务和部门与 SCOTT 相同的雇员的信息 select empno,ename,job from emp where (job,deptno)=(select job,deptno from emp where ename='SCOTT'); 【训练 4】在 FROM 从句中使用子查询。 --查询职员表中排列在第 6~9 位置上的雇员 select num,ename,sal from (select rownum as num,ename,sal from emp where rownum<=9) where num>=6; 6.4.4 集合运算 Oracle 共有 4 个集合操作: 第 6 章 数据查询 Copyright 2008, Oracle HJC Chapter 6 – Page 10 UNION 并集,合并两个操作的结果,去掉重复的部分 UNION ALL 并集,合并两个操作的结果,保留重复的部分 MINUS 差集,从前面的操作结果中去掉与后面操作结果相同的部分 INTERSECT 交集,取两个操作结果中相同的部分 【训练 1】使用集合的并运算。 --查询部门 10 和部门 20的所有职员 select deptno,job from emp where deptno=10 union select deptno,job from emp where deptno=20; 【训练 2】使用集合的交运算。 --查询部门 10 和 20 中是否有相同的职务和工资 select job,sal from emp where deptno=10 intersect select job,sal from emp where deptno=20; 【训练 3】使用集合的差运算。 --查询只在部门表中出现,但没有在雇员表中出现的部门编号 select deptno from dept minus select deptno from emp; 《Oracle 数据库》 Copyright 2008, Oracle HJC Chapter 6 – Page 11 综合练习 6 综合练习 6 设计针对 emp 和 dept 表的综合查询: 1、显示人数最多的部门名称。 2、显示各部门的平均工资、最高工资、最低工资和总工资列 表,并按平均工资高低顺序排列。 Oracle 2008 HJC 第6章 数据查询 6.1 基本查询 6.2 查询结果的排序 6.3 条件查询 6.4 高级查询 6.4.1 多表联合查询 6.4.2 统计查询 6.4.3 子查询 6.4.4 集合运算 综合练习6
本文档为【查询】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_737488
暂无简介~
格式:pdf
大小:125KB
软件:PDF阅读器
页数:11
分类:互联网
上传时间:2011-07-29
浏览量:43