oracle查询语句练习题与答案(scott用户)

合集下载

Oracle测试题+答案

Oracle测试题+答案

1) PL/SQL块中可以使用下列()命令。

(选择两项)a) TRUNCATEb) DELETEc) SA VEPOINTd) ALTER TABLE2) 授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是(B)〔选择一项〕a) GRANT CHANGE ON SCOTT.EMP TO SAb) GRANT UPDA TE ON SCOTT.EMP(SAL) TO SAc) GRANT UPDA TE (SAL) ON SCOTT.EMP TO SAd) GRANT MODIFY ON SCOTT.EMP(SAL) TO SA3) EMP表有14条记录,则语句SELECT ‘Aptech’FROM EMP 的执行结果是(C)〔选择一项〕a) Aptechb) 无输出c) 14行Aptechd) 编译出错4) PL/SQL块中哪几部分是可选的()〔选择二项〕a) Declareb) Beginc) Exceptiond) Constant5) 在创建序列的过程中,下列()选项指定序列在达到最大值或最小值后,将继续从头开始生成值。

(选择一项)a) Cycleb) Nocyclec) Cached) Nocache6) 同义词有以下()用途。

(选择三项)a) 简化SQL 语句b) 隐藏对象的名称和所有者c) 提供对对象的公共访问d) 显示对象的名称和所有者7) Oracle中用来释放锁的语句有()〔选择二项〕a) commitb) Drop lockc) rollbackd) unlock8) 关于类型定义Number(9,2)说法正确的有()〔选择一项〕a) 整数部分9位,小数部分2位,共11位b) 整数部分7位,小数部分2位,共9位c) 整数部分6位,小数点一位,小数部分2位,共9位d) 以上说法均不正确9) 下列哪种Lob类型用来存储数据库以外的操作系统文件()〔选择一项〕a) CLOBb) BLOBc) CFILEd) BFILE10) Oracle中的三种系统文件分别是()〔选择三项〕a) 数据文件b) 归档文件c) 日志文件d) 控制文件11) 下列哪项不是Oracle中常用的分区方法?()〔选择一项〕a) 范围分区b) 散列分区c) 列表分区d) 条件分区12) 查看Test中名称为P1的分区中的记录的查询语句为()〔选择一项〕a) Select * from Test Where PartitionName=’p1’b) Select * from Test(p1)c) Select * from Test Partition(p1);d) 以上均正确13) 创建序列时,若未指定Cycle选项,则当当前值大于MaxValue时将()〔选择一项〕a) 从MinValue重新开始循环b) 重复使用MaxValue 值c) 执行出错d) 使用随机值14) 下列哪项是创建索引组织表所必需的()〔选一项〕a) Primary Keyb) Order Byc) Group Byd) 以上均不是15) 若表的某字段值存在大量的重复,则基于该字段适合创建哪种索引?()〔选一项〕a) 标准索引b) 唯一索引c) 位图索引d) 分区索引16) 在PL/SQL块中定义一个名为PI值为3.14的Real型常量的语法是()〔选一项〕a) A.Pi Const Real=3.14;b) B.Pi Real Const =3.14;c) C.Constant Pi Real:=3.14d) D.Pi Constant Real:=3.1417) 22.当Select语句没有返回行时,将引发下列哪个异常?()[选择一项]a) A.No_rows_foundb) B.No_data_foundc) C.No_Data_rows_foundd) D.Invalid_Number18) Oracle中提供的两种游标是()〔选择二项〕a) A.隐式游标b) B.静态游标c) C.REF游标d) D.显式游标19) 若Emp表中有14条记录,则用户执行了以下操作,结果是:()〔选择一项〕Cursor mycur is Select * From emp;。

oracle试题及答案

oracle试题及答案
一、选择题
1、 段是表空间中一种逻辑存储结构,以下( )不是ORACLE数据库使用的段类型。
(A) 索引段 (B)临时段 (C)回滚段 (D)代码段
2、 ORACLE数据库物理结构包括以下三种文件,以下不属于的是( )。
(A) 系统文件 (B)日志文件 (C)数据文件 (D)控制文件
When ‘st’ then 1.15* salary
Else salary end “revised salary”
From hr.employees;
上述语句的含义是?
53、使用OEM创建 表“学生信息”,机器号为wjs24-学号,使用端口为1150,用户角色sysdba。写出创建步骤
c、查询课程成绩>75的女生人数。
56、写出命令行创建存储过程pro_sum,该存储过程带一个字符型传入参数TYPE,实现统计籍贯编号为TYPE的人数并输出,然后依次实现执行、查看、修改和删除操作。(籍贯编号在表stem.员工信息 中)
57写出命令行创建存储函数func_sum,该存储过程带一个字符型传入参数age,实现统计年龄为age的人数并作为返回值,然后依次实现执行、查看、修改和删除操作。(年龄在表user.社区信息 中)
19、用二维表数据来表示实体及实体之间联系的数据模型称为_ ___。
A、实体--联系模型 B、层次模型 C、网状模型 D、关系模型
20、( )语言是过程化SQL的缩写
A、SQL B、Tran-SQL C、PL/SQL D、以上都不对
填空题
21、关系模型的数据操纵即是建立在关系上的数据操纵,一般有______、增加、删除和修改四种操作
25、ORACLE是 数据库管理系统。

根据Oracle数据库scott模式下的emp表和dept表

根据Oracle数据库scott模式下的emp表和dept表

根据Oracle数据库scott模式下的emp表和dept表题目要求:根据Oracle数据库scott模式下的emp表和dept表,完成下列操作。

(1)查询20号部门的所有员工信息。

select * from emp where deptno = 20;(2)查询所有工种为CLERK的员工的工号、员工名和部门名。

select empno,ename,deptno from emp where job like 'CLERK';查询奖金(COMM)高于工资(SAL)的员工信息。

select * from emp where comm > sal;查询奖金高于工资的20%的员工信息。

select * from emp where comm > (sal*;查询10号部门中工种为MANAGER和20号部门中工种为CLERK 的员工的信息。

select * from empwhere (deptno = 10 and job like 'MANAGER') or (deptno = 20 and job like 'CLERK');查询所有工种不是MANAGER和CLERK,且工资大于或等于2000的员工的详细信息。

select * from empwhere job not in ('MANAGER','CLERK') and sal >= 2000 ;查询有奖金的员工的不同工种。

select distinct job from emp where comm is not null;查询所有员工工资和奖金的和。

select ename,(sal+nvl(comm,0)) salcomm from emp;查询没有奖金或奖金低于100的员工信息。

select * from emp where (comm is null or comm < 100) ;查询各月倒数第2天入职的员工信息。

Oracle查询练习及答案

Oracle查询练习及答案

Oracle查询练习及答案分类:技术文档2012-09-16 15:30 383人阅读评论(0) 收藏举报oracletableinsertdelete工作null--1 显示所有部门名select dnamefrom dept--2 显示所有雇员名及其全年收入(工资+补助),并指定列别名"年收入"select ename,nvl2(comm,sal+comm,sal) as 年收入from emp--3 显示存在雇员的所有部门号select distinct deptnofrom emp--4 显示工资超过2850的雇员名和工资select ename,salfrom empwhere sal > 2850--5 显示工资不在1500到2850之间的所有雇员名及工资select ename,salfrom empwhere sal not between 1500 and 2850--6 显示雇员代码为7566的雇员名及所在部门号select ename,deptnofrom empwhere empno = 7566--7 显示部门代码为10和30中工资超过1500的雇员名及工资select ename,salfrom empwhere sal > 1500 and deptno in (10,30)--8 显示无管理者的雇员名及岗位select ename,jobfrom empwhere mgr is null--9 显示所有雇员的平均工资、总计工资、最高工资、最低工资select avg(sal) as 平均工资,sum(sal) as 总计工资max(sal) as 最高工资min(sal) as 最低工资from emp--10 显示每种岗位的雇员总数、平均工资select job,count(*),avg(sal)from empgroup by job--11 显示雇员总数,以及获得补助的雇员数select count(*),count(comm)from emp--12 显示管理者的总人数select count(distinct mgr)from emp--13 显示雇员工资的最大差额select max(sal) - min(sal)from emp--14 显示部门代码为20的部门号,以及该部门的所有雇员名、雇员工资及岗位select ename,sal,jobfrom empwhere deptno = 20--15 显示获得补助的所有雇员名、补助额以及所在部门号select deptno,ename,commfrom empwhere comm is not null--16 显示所有雇员的姓名、部门编号、工资,并且列名要显示为中文select ename as 姓名,deptno as 部门编号,sal as 工资from emp--17 显示每个部门每个岗位的平均工资、每个部门的平均工资、每个岗位的平均工资select deptno,job,avg(sal)from empgroup by cube(deptno,job)--18 显示工资大于1500的雇员名和工资,并且按照工资的降序排列select ename,salfrom empwhere sal > 1500order by sal desc--19 显示雇员部门编号为10或20的信息(要求使用IN关键字)select *from empwhere deptno in (10,20)--20 显示雇员名的第二个字母为A的信息select enamefrom empwhere ename like '_A%'--21 显示没有发放补助的雇员信息select *from empwhere comm is null--22 显示雇员表中记录总数select count(*)from emp以scott/tiger登录数据库,完成以下题目--1 显示所有雇员名、雇员工资及所在部门名select d.dname,e.ename,e.salfrom dept d,emp ewhere d.deptno = e.deptno--2 显示部门代码为20的部门名,以及该部门的所有雇员名、雇员工资及岗位select d.dname,e.ename,e.salfrom dept d,emp ewhere d.deptno = e.deptnoand d.deptno = 20--3 显示所有雇员名、雇员工资及工资级别select e.ename,e.sal,s.gradefrom emp e,salgrade swhere e.sal >= s.losal and e.sal <= s.hisal--4 显示雇员"SCOTT"的管理者名select m.enamefrom emp e,emp mwhere e.mgr = m.empnoand e.ename = 'SCOTT'--5 显示获得补助的所有雇员名、补助额以及所在部门名select d.dname,e.ename,mfrom dept d,emp ewhere d.deptno = e.deptnoand m is not null--6 查询EMP表和SALGRADE表,显示部门代码为20的雇员名、工资及其工资级别select e.ename,e.sal,s.gradefrom emp e,salgrade swhere e.sal >= s.losal and e.sal <= s.hisaland e.deptno = 20--7 显示部门代码为10的所有雇员名、部门名,以及其他部门名select e.ename,d.dnamefrom dept d,emp ewhere d.deptno = e.deptno(+)and e.deptno(+) = 10--8 显示部门代码为10的所有雇员名、部门名,以及其他雇员名select e.ename,d.dnamefrom dept d,emp ewhere d.deptno(+) = e.deptnoand d.deptno(+) = 10--9 显示部门代码为10的所有雇员名、部门名,以及其他部门名和雇员名select e.ename,d.dnamefrom dept d full join emp eon d.deptno = e.deptnoand d.deptno = 10--10显示"BLAKE"同部门的所有雇员,但不显示"BLAKE"select e.ename,e.deptnofrom emp e,emp bwhere e.deptno = b.deptnoand e.ename <> 'BLAKE'and b.ename = 'BLAKE'--01 按以下格式显示下面的信息,条件是工资大于1500的。

oracle考题

oracle考题

1.下面对数据库文件的叙述中,正确的是CA、一个表空间只能对应一个人数据库文件B、一个数据文件可以对应多个表空间C、一个表空间可以对应多个数据库文件D、数据库文件存储了数据库中的所的日志信息2.下面对数据库逻辑存储结构叙述中,正确的是__AB__A、一个数据库实例由多个表空间组成B、一个人段由多个区组成C、一个人区由多个段组成D、一个人块由多个区组成3.下面哪种后台进程用于将数据缓冲区中的数据写入数据文件?__B__A、LGWRB、DBWnC、CKPTD、ARCn4.系统全局区包括下面那些区域?__ACD__A、java池B、软件代码区C、数据缓冲区D、日志缓冲区5.解析后的sql语句会缓存到下面的SGA哪个区域中?_C___A、java池B、大型池C、共享池D、数据缓冲区1.在SQL*Plus中链接数据库时,可以使用CONNECT命令。

下面的4个选项中,哪几个命令是正确的?其中,用户名为scott,密码为tiger,数据库名为orcl。

____D________A.CONNECT scott/tiger;B.CONNECT tiger /scott;C.CONN scott/tiger as sysdba;D.CONN scott/tiger@orcl as sysdba;2.执行语句SAVE scott_emp_query.sql APPEND,执行结果表示_____C_____。

A.如果scott_emp_query.sql文件不存在,则出现错误B.如果scott_emp_query.sql文件已经存在,则出现错误C.将缓冲区中的内容追加到scott_emp_query.sql文件中,如果该文件不存在,会创建该文件D.将缓冲区中的内容替换掉 scott_emp_query.sql文件的内容,如果该文件不存在,会创建该文件3.使用SQL*Plus中的____B_______,可以将文件中的内容检索到缓冲区,并且不执行。

Scott下的练习及答案

Scott下的练习及答案

/*1、找出奖金高于工资的员工*/select*from emp where comm>sal;/*2、找出每个员工奖金和工资的总和*/select ename,decode(comm,null,0,comm)+sal from emp/*3、找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK) */select*from emp where deptno=10and job='MANAGER'or deptno='20' and job='CLERK';/*4、找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工*/ select*from emp where deptno=10and job<>'MANAGER'andjob<>'CLERK'and sal>=2000;select*from emp where deptno=10and job not in('MANAGER','CLERK')and sal>=2000;/*5、找出有奖金的员工的不同工作*/select distinct(job)from emp where comm is not null/*6、找出没有奖金或者奖金低于500的员工*/select * from emp where comm is null or comm<500;/*7、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面*/select ename,hiredate from emp order by hiredate,ename;/*8、找出每个月倒数第三天受雇的员工*/select*from emp where hiredate = last_day(hiredate)-2;/*9、分别用case和decode函数列出员工所在的部门,deptno=10显示'部门10', deptno=20显示'部门20' deptno=30显示'部门30' deptno=40显示'部门40' 否则为'其他部门'*/ select ename,decode(deptno,10,'部门10',20,'部门20',30,'部门30',40,'部门40','其他部门')from emp;select ename,case deptnowhen10then'部门10'when20then'部门20'when30then'部门30'when40then'部门40'else'其他部门'endfrom emp;/*10、分组统计各部门下工资>1500的员工的平均工资*/select deptno,avg(sal)from emp where sal>1500group by deptno /*11、统计各部门下平均工资大于1500的部门*/select deptno,avg(sal)from empgroup by deptnohaving avg(sal)>1500;/*12、算出部门30中得到最多奖金的员工奖金*/select max(comm)from emp where deptno=30/*13、算出部门30中得到最多奖金的员工姓名*/select ename,comm from emp where comm in(select max(comm)from emp where deptno=30)/*14、算出每个职位的员工数和最低工资*/select job,count(*),min(sal)from empgroup by job;/*15、列出员工表中每个部门的员工数,和部门no */select deptno,count(*)from emp group by deptno/*16、得到工资大于自己部门平均工资的员工信息*/select*from emp e,(select avg(sal) b from emp group by deptno) awhere e.sal>a.b;/*17、分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金) */select deptno,job ,avg(nvl(comm,0)),sum(sal +nvl(comm,0)) from scott.empgroup by deptno,job/*18、显示员工ID,名字,直属主管ID,名字*/select empno,ename,mgr,(select ename from emp e1 where e1.empno = e2.mgr)from emp e2 ;/*19、列出员工表中每个部门的员工数,和部门no */select deptno,count(*)from emp group by deptno/*20、列出员工表中每个部门的员工数(员工数必须大于3),和部门名称*/select e.deptno,d.dname,count(*)from emp e,dept dwhere e.deptno=d.deptnogroup by e.deptno,d.dnamehaving count(*)>3;/*21、找出工资比jones多的员工*/select*from emp ewhere e.sal>(select sal from emp where ename='JONES');/*22、列出所有员工的姓名和其上级的姓名*/select a.ename 员工,b.ename 上级from emp a,emp bwhere b.empno=a.mgr;select*from emp;select ename,(select ename from emp e1 where e1.empno = e2.mgr) from emp e2/*23、以职位分组,找出平均工资最高的两种职位*/select avg(sal)from empgroup by jobhaving avg(sal)in(select max(sal)from emp group by job)/*24、查找出不在部门20,且比部门20中任何一个人工资都高的员工姓名、部门名称*/ select e.ename,d.dname from emp e,dept dwhere e.deptno=d.deptno and e.deptno<>20and e.sal>(select max(sal)from emp where deptno=20);/*25、得到平均工资大于2000的工作职种*/select JOB,avg(sal)from empgroup by JOBhaving avg(sal)>2000;/*26、分部门得到工资大于2000的所有员工的平均工资,并且平均工资还要大于2500 */ select avg(sal)from empwhere sal>2000group by deptnohaving avg(sal)>2500;/*27、查找出收入(工资加上奖金),下级比上级还高的员工编号,员工名字,员工收入*/ select empno,ename,sal+nvl(comm,0)from emp e1where sal+nvl(comm,0)>(select sal+nvl(comm,0)from emp where empno=e1.mgr)/*28、查找出不属于任何部门的员工*/select*from emp where deptno is null;/*29、查询出king所在部门的部门号\部门名称\部门人数*/select d.deptno,d.dname,count(*)from dept d,emp ewhere d.deptno=e.deptno and d.deptno=(select deptno from emp where ename='KING')group by d.deptno,d.dname;/*30、查询出king所在部门的工作年限最大的员工名字*/select min(e.hiredate)from emp ewhere deptno in(select deptno from emp where ename='KING') /*31、查询出工资成本最高的部门的部门号和部门名称*/。

Oracle基础练习题及答案(基本查询)

Oracle基础练习题及答案(基本查询)

O r a c l e基础练习题及答案(基本查询)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March练习题使用SQL PLUS工具登陆,用户名用scott。

1.1 在emp表中查询出所有记录的姓名、部门编号、薪水,并且列名要显示为中文。

select empno"员工编号",ename"员工姓名",job"职位",mgr"上级领导",hiredate"入职日期",sal"薪资",comm"奖金",deptno"部门编号" from emp;1.2 在emp表中查询出薪水大于1500的记录,并且按照薪水的降序排列。

select * from emp where sal>1500order by sal desc;1.3 在emp表中查询出comm字段为空值的记录。

select * from emp where comm is null;1.4 查询出emp表中含有几个部门的记录。

(用DISTINCT去除重复记录)select distinct deptno from emp;1.5 在emp表中查询出部门编号为10或20的记录(要求使用IN关键字)select * from emp where deptno in(10,20);1.6 在emp表中查询出姓名的第二个字母为A的记录。

select ename from emp where ename like'_A%';1.7 查询出emp表中总共有多少条记录。

select count(*) from emp;1.8 查询emp表中出每个部门的部门代码、薪水之和、平均薪水。

select deptno,sum(sal),avg(sal) from emp group by deptno;使用scott用户登录,利用原有的四张表完成如下作业1.选择部门30的所有员工select * from emp where deptno=30;2.列出所有办事员(CLERK)的姓名,编号和部门编号select ename,empno,deptno from emp where job='CLERK';3.找出佣金高于薪金的所有员工select * from emp where comm>sal;4.找出佣金高于薪金30%的所有员工select * from emp where comm>(sal*;5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料select* from emp where(deptno=10and job='MANAGER')or(deptno=20and job='CLERK');6.找出部门10中所有经理(MANAGER),部门20 中所有办事员(CLERK),既不是经理又不是办事员(CLERK)但其薪金大于或等于2000的所有员工的详细资料。

ORACLE经典查询答案

ORACLE经典查询答案

select * from dept;select * from emp;--1.列出至少有一个员工的所有部门。

select dname from dept where deptno in(select deptno from emp);select dname from dept where deptno in(select deptno from emp group by deptno having count(deptno)&gt;=1);--2.列出薪金比“SMITH”多的所有员工。

select ename from emp where sal&gt;(select sal from emp where ename='SMITH');--3.列出所有员工的姓名及其直接上级的姓名。

select a.ename,(select ename from emp b where b.empno=a.mgr) as boss_name from empa;--4.列出受雇日期早于其直接上级的所有员工。

select a.ename from emp a where a.hiredate&lt;(select hiredate from emp b whereb.empno=a.mgr);--5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门select a.dname,b.empno,b.ename,b.job,b.mgr,b.hiredate,b.sal,b.deptno;from dept a left join emp b on a.deptno=b.deptno;--6.列出所有“CLERK”(办事员)的姓名及其部门名称。

select ename,dname from emp join dept on emp.deptno=dept.deptno where job='CLERK'; select a.ename,b.dname from emp a join dept b on a.deptno=b.deptno and a.job='CLERK';--7.列出最低薪金大于1500的各种工作。

Oracle简单Scott用户表练习带答案

Oracle简单Scott用户表练习带答案

Oracle简单Scott用户表练习带答案一、使用scott/tiger用户下的emp表和dept表完成下列练习,表的结构说明如下:emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号) dept部门表(deptno部门编号/dname部门名称/loc地点)工资=薪金+佣金1. 列出在每个部门工作的员工数量、平均工资和平均服务期限。

Select deptno,count(*),avg(sal+nvl(comm,0)),avg(sysdate-hiredate) from emp group by deptno;2. 列出所有员工的姓名、部门名称和工资。

Select ename,bname,sal+nvl(comm,0) from dept,emp where dept.deptno=emp.deptno;3. 列出从事同一种工作但属于不同部门的员工的一种组合。

Select distinct a.ename ,a.job,a.deptno from emp a,emp b where (a.deptno>b.deptno) or (a.deptno<="" and="" by="" order="" p="">4. 列出所有部门的详细信息和部门人数。

[*]selecta.deptno,a.dname,a.loc,count(b.empno )from dept a,emp b where a.deptno = b.deptno group bya.deptno,a.dname,a.loc;5. 列出各种工作的最低工资。

select deptno,min(sal+nvl(comm,0) from emp group by deptno;6. 列出各个部门的MANAGER(经理)的最低薪金。

oracle考试题

oracle考试题

oracle考试题姓名________________________下⾯试题基于scott/tiger⽤户下的emp表和dept表。

1、列出⾄少有⼀个员⼯的所有部门。

2、列出薪⾦⽐“SMITH”多的所有员⼯。

3、列出所有员⼯的姓名及其直接上级的姓名。

4、列出受雇⽇期晚于其直接上级的所有员⼯。

5、列出部门名称和这些部门的员⼯信息,同时列出那些没有员⼯的部门。

6、列出最低薪⾦⼤于1500的各种⼯作。

7、列出薪⾦⾼于公司平均薪⾦的所有员⼯。

8、列出薪⾦等于部门30中员⼯的薪⾦的所有员⼯的姓名和薪⾦。

9、列出在每个部门⼯作的员⼯数量、平均⼯资和平均服务期限。

10、列出所有部门的详细信息和部门⼈数。

11、列出所有员⼯的年⼯资,按年薪从低到⾼排序。

12、找出早于25年之前受雇的雇员13、列出各个部门的MANAGER(经理)的最低薪⾦14、列出与“SCOTT”从事相同⼯作的所有员⼯。

15、查询平均⼯资最⾼的部门名称16、编写⼀个存储过程,实现如下功能:对所有员⼯:a)如果该员⼯职位是MANAGER,并且在DALLAS⼯作那么就给他薪⾦加15%;b)如果该员⼯职位是CLERK,并且在NEW YORK⼯作那么就给他薪⾦扣除5%;c)其他情况不作处理。

练习针对Oracle的SCOTT⽅案============查询及函数部分==============第⼀部分:1、使⽤基本查询语句.(1)查询DEPT表显⽰所有部门名称.(2)查询EMP表显⽰所有雇员名及其全年收⼊(⽉收⼊=⼯资+补助),处理NULL⾏,并指定列别名为"年收⼊"。

(NVL(comm,0) comm取空值时⽤0替代)(3)查询显⽰不存在雇员的所有部门号。

2、限制查询数据(1)查询EMP表显⽰⼯资超过2850的雇员姓名和⼯资。

(2)查询EMP表显⽰⼯资不在1500~2850之间的所有雇员及⼯资。

(3)查询EMP表显⽰代码为7566的雇员姓名及所在部门代码。

ORACLE数据库习题(有答案)大题

ORACLE数据库习题(有答案)大题

ORACLE数据库习题(有答案)大题1.检索部门编号、部门名称、部门所在地及其每个部门的员工总数。

select d.deptno,d.dname,d.loc,count(*) from emp e,dept d wheree.deptno=d.deptno group by d.deptno,d.dname,d.loc;2.检索员工和所属经理的姓名。

select e.ename 雇员,m.ename 经理 from emp e,emp m wheree.mgr=m.empno;3. 检索工资等级处于第四级别的员工的姓名。

select e.ename from emp e inner join salgrade s on (e.sal between s.losal and s.hisal) where s.grade=4;4.检索工资等级高于smith的员工信息。

select * from emp e join salgrade s on (e.sal between s.losal and s.hisal) where s.grade>(select distinct s.grade from emp e join salgrade s on ((select sal from emp where ename='SMITH') between s.losal and s.hisal));5.检索30部门中1980年1月份之前入职的员工信息。

显示:员工号、员工名、部门号,部门名、入职日期。

select empno,ename,d.deptno,d.dname,hiredate from emp,dept d where emp.deptno=d.deptno and d.deptno=30 and hiredate<to_date('1980-01-01','yyyy-mm-dd');< p="">6. 检索雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名。

scott用户 试题答案

scott用户 试题答案

---使用scott用户,完成如下查询---Alter user scott identified by tiger account unlock;conn scott/tigerselect table_name from user_tables;第一部分:1.列出至少有一个员工的所有部门。

2.列出薪金比“SMITH”多的所有员工。

3.列出所有员工的姓名及其直接上级的姓名。

4.列出受雇日期早于其直接上级的所有员工。

5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门6.列出所有“CLERK”(办事员)的姓名及其部门名称。

7.列出最低薪金大于1500的各种工作。

8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

9.列出薪金高于公司平均薪金的所有员工。

10.列出与“SCOTT”从事相同工作的所有员工。

11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

13.列出在每个部门工作的员工数量、平均工资和平均服务期限。

14.列出所有员工的姓名、部门名称和工资。

15.列出所有部门的详细信息和部门人数。

16.列出各种工作的最低工资。

17.列出各个部门的MANAGER(经理)的最低薪金。

18.列出所有员工的年工资,按年薪从低到高排序。

第二部分:1. 找出EMP表中的姓名(ENAME)第三个字母是A 的员工姓名。

2. 找出EMP表员工名字中含有A 和N的员工姓名。

3. 找出所有有佣金的员工,列出姓名、工资、佣金,显示结果按工资从小到大,佣金从大到小。

4. 列出部门编号为20的所有职位。

5. 列出不属于SALES 的部门。

6. 显示工资不在1000 到1500 之间的员工信息:名字、工资,按工资从大到小排序。

7. 显示职位为MANAGER 和SALESMAN,年薪在15000 和20000 之间的员工的信息:名字、职位、年薪。

Oracle的sql语句练习题含答案

Oracle的sql语句练习题含答案

Oracle的sql语句练习题含答案Oracle的sql语句练习题含答案(二)Oracle_SQL练习题11.选择部门30中的所有员工.Select ename from emp where emp.deptno=?30?;2.列出所有办事员(CLERK)的姓名,编号和部门编号Select ename,empno,deptno from emp where job=?CLERK?.3.找出佣金高于薪金的员工.Select ename from emp where comm>sal4.找出佣金高于薪金的60%的员工.Select ename from emp where comm>sal*0.65.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.Select * from emp where (job=?MANAGER? and deptno=10) or (job=?CLERK? and deptno=20)6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料. Select * from emp where job=?MANAGER?and deptno=10 or (job=?CLERK?) or(job not in (…MANAGER?,?CLERK?) and sal >=2000)7.找出收取佣金的员工的不同工作.Select distinct job from emp where NVL (comm,0)>08.找出不收取佣金或收取的佣金低于100的员工.Select ename from emp where NVL(comm,0)<1009.找出各月倒数第3天受雇的所有员工.Select ename from emp where last_day(hiredate)-2=hiredate10.找出早于12年前受雇的员工.Select ename from emp where months_between(sysdate,hiredate)/12 >1211.以首字母大写的方式显示所有员工的姓名.select initcap(ename) name ,job, hiredatefrom emp;12.显示正好为5个字符的员工的姓名Select ename from emp where ename like …_____?select ename,job,hiredate from emp where length(ename)=5;13.显示不带有"R"的员工的姓名.Select ename from emp where ename not lik e …%R%?14.显示所有员工姓名的前三个字符.15.显示所有员工的姓名,用a替换所有"A"16.显示满10年服务年限的员工的姓名和受雇日期.Select ename,hiredate from emp where months_between(systemdate,hiredate)/12 >=1017.显示员工的详细资料,按姓名排序.Select * from emp order by ename18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.Select ename,hiredate from emp order by months_between(sysdate,hiredate) descselect ename, hiredate from emp order by hiredate desc;19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.Select ename,job,sal from emp order by job desc,sal asc20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.Select ename,to_char(hiredate,?yyyy?) as year,to_char(hiredate,?mm?) as month from emp order by year,month asc21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.Select ename,trunk(sal/30) as dailysal from emp22.找出在(任何年份的)2月受聘的所有员工。

oracle练习题及答案

oracle练习题及答案

oracle练习题及答案Oracle练习题及答案Oracle数据库是全球最受欢迎的关系型数据库管理系统之一,广泛应用于企业级应用程序开发和数据管理。

为了提高对Oracle数据库的理解和应用能力,下面将提供一些常见的Oracle练习题及其答案。

1. 查询表中的所有数据答案:使用SELECT语句可以查询表中的所有数据,例如:SELECT * FROM 表名;2. 查询表中的特定列数据答案:使用SELECT语句并指定需要查询的列名,例如:SELECT 列名1, 列名2 FROM 表名;3. 查询表中满足特定条件的数据答案:使用SELECT语句并使用WHERE子句来指定条件,例如:SELECT * FROM 表名 WHERE 列名 = 值;4. 对查询结果进行排序答案:使用SELECT语句并使用ORDER BY子句来指定排序的列和排序方式,例如:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC;5. 对查询结果进行分组答案:使用SELECT语句并使用GROUP BY子句来指定分组的列,例如:SELECT 列名1, 列名2 FROM 表名 GROUP BY 列名1;6. 查询表中的唯一数据答案:使用SELECT DISTINCT语句可以查询表中的唯一数据,例如:SELECT DISTINCT 列名 FROM 表名;7. 查询表中的前N条数据答案:使用SELECT语句并使用ROWNUM关键字来限制查询结果的行数,例如:SELECT * FROM 表名 WHERE ROWNUM <= N;8. 使用聚合函数进行数据统计答案:使用聚合函数如SUM、AVG、COUNT等可以对数据进行统计,例如:SELECT COUNT(*) FROM 表名;9. 进行多表查询答案:使用SELECT语句并使用JOIN关键字来连接多个表,例如:SELECT * FROM 表名1 JOIN 表名2 ON 表名1.列名 = 表名2.列名;10. 更新表中的数据答案:使用UPDATE语句可以更新表中的数据,例如:UPDATE 表名 SET 列名 = 值 WHERE 条件;11. 删除表中的数据答案:使用DELETE语句可以删除表中的数据,例如:DELETE FROM 表名 WHERE 条件;12. 创建新表答案:使用CREATE TABLE语句可以创建新表,例如:CREATE TABLE 表名 (列名1 数据类型, 列名2 数据类型, ...);13. 修改表结构答案:使用ALTER TABLE语句可以修改表的结构,例如:ALTER TABLE 表名 ADD 列名数据类型;14. 删除表答案:使用DROP TABLE语句可以删除表,例如:DROP TABLE 表名;以上是一些常见的Oracle练习题及其答案,希望能够帮助读者更好地理解和应用Oracle数据库。

oracle练习题及答案

oracle练习题及答案

oracle练习题及答案Oracle练习题及答案Oracle是一种广泛使用的关系型数据库管理系统,它具有强大的数据处理和管理能力。

对于想要提升自己的数据库技能的人来说,练习题是一个非常有效的学习方法。

通过解答一系列的练习题,可以帮助我们更好地理解Oracle的使用和原理。

下面是一些常见的Oracle练习题及其答案,供大家参考。

1. 查询一个表中所有的数据答案:可以使用SELECT语句来查询一个表中的所有数据。

例如,假设我们有一个名为"employees"的表,可以使用以下语句来查询所有的数据:SELECT * FROM employees;2. 查询一个表中特定列的数据答案:如果我们只想查询一个表中特定列的数据,可以使用SELECT语句,并在其中指定要查询的列名。

例如,如果我们只想查询"employees"表中的"first_name"和"last_name"列,可以使用以下语句:SELECT first_name, last_name FROM employees;3. 查询满足特定条件的数据答案:如果我们只想查询满足特定条件的数据,可以在SELECT语句中使用WHERE子句来指定条件。

例如,如果我们只想查询"employees"表中工资大于5000的员工,可以使用以下语句:SELECT * FROM employees WHERE salary > 5000;4. 对查询结果进行排序答案:如果我们想对查询结果进行排序,可以在SELECT语句中使用ORDER BY子句,并指定要排序的列名。

例如,如果我们想按照"employees"表中的"last_name"列进行升序排序,可以使用以下语句:SELECT * FROM employees ORDER BY last_name ASC;5. 对查询结果进行分组答案:如果我们想对查询结果进行分组,可以在SELECT语句中使用GROUP BY 子句,并指定要分组的列名。

Orcale练习day03(附答案)

Orcale练习day03(附答案)

Orcale练习day03(附答案)1. 显示所有员工的姓名ename,部门号deptno和部门名称dname。

select ename,d.deptno,dname from emp e join dept d on e.deptno=d.deptno;2. 选择在DALLAS工作的员工的员工姓名、职位、部门编码、部门名字select ename,job,d.deptno,d.dname from emp e join dept d on e.deptno=d.deptno and loc='DALLAS';// 这里的and可以写成where3. 选择所有员工的姓名ename,员工号deptno,以及他的管理者mgr的姓名ename和员工号deptno,结果类似于下面的格式employees Emp# manager Mgr#----------------------------------SMITH 7369 FORD 7902select e1.ename employees,e1.empno Emp#,e2.ename manager,e2.empno Mgr# from emp e1,emp e2 where e1.mgr=e2.empno;select e1.ename employees,e1.empno Emp#,e2.ename manager,e2.empno Mgr# from emp e1 join emp e2 on e1.mgr=e2.empno;4. 查询各部门员工姓名和他们所在位置,结果类似于下面的格式Deptno Ename Location----------------------20 SMITH DALLASselect e.deptno, e.ename, d.loc from emp e join dept d on e.deptno=d.deptno;5. 查询出JONES的领导是谁(JONES向谁报告)。

Oracle查询题集-答案

Oracle查询题集-答案

一、现有学生表stuInfo,班级表classInfo,表结构如下:stuInfo表:sid学号,sname姓名,sex性别,birthday生日,age入学年龄,smoney缴费,cid班级IDclassInfo表:班级编号cid,班级名称cname1、查询入学年龄在18-20的女生或者未输入性别的学生信息,且年龄小的排在后面。

Select * from stuInfo where age between 18 and 20 or sex is null order by age desc;2、查询班级名称、学生姓名、性别、缴费(要求显示单位:元),相同班级的要放在一起,再按姓名升序排列。

Select cname,sname,sex,smoney||’元’ from stuInfo,classInfo where stuInfo.cid=classInfo.cid order by cid,sname;3、查询各班名称和人数。

Select cname,count(*) from stuInfo,classInfo where stuInfo.cid=classInfo.cid group by cname;4、查询各班名称和人数,但人数必须不少于2,且人数多的放在前面。

Select cname,count(*) from stuInfo,classInfo where stuInfo.cid=classInfo.cid group by cname having count(*)>=2 order by count(*) desc;5、查询1980年出生的有哪些学生。

Select * from stuInfo where to_char(birthday,’yyyy’)=’1980’;6、查询男生和女生人数,没有输入性别的当作男生计算。

Select sex,count(nvl(sex,’男’)) from stuInfo group by sex;7、查询没有人员的班级。

oracle多表查询练习题-答案

oracle多表查询练习题-答案
in
any
all
select job,count(empno)
from emp
where job in (select job from emp group by job having min(sal)>1500) group by job ;
8、列出在部门“sales”(销售部)工作的员工的姓名,假定不知道销售部的部门编号
5、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
左右连接
selecept d
where e.deptno(+)=d.deptno;
6、列出所有“CLERK”的姓名及其部门名称,部门的人数
select ename,deptno from emp where job='CLERK';
from emp group by deptno)ed
where d.deptno=ed.deptno(+);
16、列出各种工作的最低工资以及从事此工作的雇员姓名
分析:按工作分组,求出最低工资 min()
select job,min(sal) m from emp group by job;
from emp
group by deptno;
平均服务期限
hiredate
sysdate
select deptno,count(empno),round(avg(sal)) 平均工资,round(avg(months_between(sysdate,hiredate)/12)) 平均服务期限
where e.deptno=d.deptno
group by d.dname;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 找出佣金高于薪金60%的雇员。
SELECT * FROM emp WHERE comm > (sal * 0.6);
2 找出部门10中所有经理和部门20中所有办事员的详细资料。
SELECT * FROM emp WHERE (deptno = 10 AND job = 'MANAGER') OR (deptno = 20 AND job = 'CLERK');
23.求部门平均薪水的等级:
Select deptno,avg_sal,grade from (select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on (t.avg_sal between s.losal and s.hisal);
SELECT ename,job,sal FROM emp ORDER BY job DESC,sal DESC;
17显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,并将最早年份的项目排在最前面。
SELECT ename,TO_CHAR(hiredate,'yyyy-mm') FROM emp ORDER BY TO_CHAR(hiredate,'mm') ASC ,TO_CHAR(hiredate,'yyyy') ASC;
OR (sal > 2000 AND job NOT IN ('MANAGER','CLERK')));
4 找出收取佣金的雇员的不同工作。
SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL;
5 找出不收取佣金或收取的佣金低于300的雇员。
12显所有雇员的姓名,用a替换所有“A”。
SELECT REPLACE(ename,'A','a') FROM emp;
13显示所有雇员的姓名以及满10年服务年限的日期。
SELECT ename,ADD_MONTHS(hiredate,12 * 10) FROM emp;
3 找出部门10中所有经理,部门20中所有办事员以及既不是经理又不是办事员但其薪金大于或等2000的所有雇员的详细资料。
SELECT * FROM emp WHERE (deptno = 10 AND job = 'MANAGER')
OR (deptno = 20 AND job = 'CLERK'
27.求平均薪水最高的部门的部门编号
Select deptno,avg_sal from (select avg(sal) avg_sal,deptno from emp group by deptno) where avg_sal = (select max(avg_sal) from (select avg(sal) avg_sal,deptno from emp group by deptno));
25.雇员中哪些人是经理人:
Select ename from emp where empno in (select distinct mgr from emp);
26.不准用组函数,求薪水的最高值
Select distinct sal from emp where sal not in (select distinct e1.sal from emp e1 join emp e2 on(e1.sal < e2.sal));
SELECT * FROM emp WHERE LENGTH(ename) = 5;
10显示不带有“R”的雇员姓名。
SELECT * FROM emp WHERE ename NOT LIKE '%R%';
11显示所有雇员的姓名的前三个字符。
SELECT SUBSTR(ename,0,3) FROM emp;
28.求平均薪水最高的部门的部门名字
selelect deptno from (select avg(sal)
avg_sal,deptno from emp group by deptno) where avg_sal = (select max(avg_sal) from (select avg(sal) avg_sal,deptno from emp group by deptno)))
20对于每个雇员,显示其加入公司的天数。
SELECT CEIL(sysdate-hiredate) FROM emp;
21.找出所有的普通员工:
select * from emp where empno not in(select mgr from emp where mgr is not null)
SELECT * FROM emp WHERE comm IS NULL OR comm < 300;
6 找出各月最后一天受雇的所有雇员。
SELECT * FROM emp WHERE LAST_DAY(hiredate) = hiredate;
7 找出晚于26年之前受雇的雇员。
22.求部门中哪些人的薪水最高:
Select ename,sal from emp join (select max(sal) max_sal,deptno from emp group by deptno) t on (emp.sal = t.max_sal and emp.deptno= t.deptno);
18显示在一个月为30天的情况下所有雇员的日薪金,取整。
SELECT ROUND(sal / 30,0) FROM emp;
19找出在(任何年份的)2月受聘的所有雇员。
SELECT * FROM emp WHERE TO_CHAR(hiredate,'mm') = 2;
SELECT * FROM emp WHERE SYSDATE > ADD_MONTHS(hiredate,26 * 12) ;
8 显示只有首字母大写的的所有雇员的姓名。
SELECT INITCAP(ename) FROM emp;
9 显示正好为5个字符的雇员的姓名。
14显示雇员的详细资料,按姓名排序。
SELECT * FROM emp ORDER BY ename;
15显示雇员姓名,根据其服务年限,将最老的雇员排在最前面。
SELECT * FROM emp ORDER BY hiredate ASC;
16显示所有雇员的姓名、工作和薪金,按工作的降序排序,而工作按薪金排序。
24.求部门平均的薪水等级
Select deptno,avg(grade) from (select deptno,ename,grade from emp join salgrade s on (emp.sal between s.losal and s.hisal)) t group by deptno;
29.求比普通员工的最高薪水还要高的经理人名称
Select ename from emp where empno in (select distinct mgr from emp where mgr is not null) and sal >(select max(sal) from emp where empno not in(select distinct mgr from emp where mgr is not null));
相关文档
最新文档