oracle练习题目
Oracle 考试试题(带答案)

a) b) c) d) 参考答案
OracleHOME_NAMETNSListener OracleServiceSID OracleHOME_NAMEAgent OracleHOME_NAMEHTTPServer
B
9) 在 Oracle 中创建用户时,若未提及 DEFAULT TABLESPACE 关键字,则 Oracle 就将()表空间分配 给用户作为默认表空间。。
DATEPART EXTRACT TO_CHAR TRUNC
bc
5) 在Oracle中,有一个教师表teacher的结构如下: ID NUMBER(5) NAME VARCHAR2(25) EMAIL VARCHAR2(50) 下面哪个语句显示没有Email地址的教师姓名()。
a) b) c) d) 参考答案
a) b) c) d) 参考答案
OracleHOME_NAMETNSListener OracleServiceSID OracleHOME_NAMEAgent OracleHOME_NAMEHTTPServer
a
8) 在Windows操作系统中,Oracle的()服务是使用 iSQL*Plus必须的。
A
12) 在Oracle中,下面用于限制分组函数的返回值的子句是 ()。
a) WHERE b) HAVING c) ORDER BY d) 无法限定分组函数的返回值
参考答案 b
13) 在Oracle中,有一个名为seq的序列对象,以下语句能返 回序列值但不会引起序列值增加的是()。
a) b) c) d) 参考答案
%NOTFOUND %FOUND %ROWTYPE %ISOPEN %ROWCOUNT
c
15) 在Oracle中,当控制一个显式游标时,下面哪种命令包 含INTO子句()。
Oracle经典练习题及标准答案

Oracle经典练习题及标准答案oracle经典练习sql/*1、选择在部门30中员工的所有信息*/select * from scott.emp where deptno = '30'/*2、列出职位为(MANAGER)的员工的编号,姓名*/select empno, ename from scott.emp where job = 'MANAGER'/*3、找出奖金高于工资的员工*/select * from scott.emp where comm > sal/*4、找出每个员工奖金和工资的总和*/select ename, sal + nvl(comm, 0) from scott.emp/*5、找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK) */select *from scott.empwhere deptno = '10'and job = 'MANAGER'unionselect *from scott.empwhere job = 'CLERK'and deptno = '20'/*6、找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工*/ select *from scott.empwhere job != 'MANAGER'and job != 'CLERK'and sal > 2000/*7、找出有奖金的员工的不同工作*/select distinct(job) from scott.emp where comm is not null /*8、找出没有奖金或者奖金低于500的员工*/select *from scott.empwhere comm is not nulland comm > 500/*9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面*/select enamefrom scott.emporder by (months_between(sysdate, hiredate) / 12) descselect ename,hiredate from scott.emp order by hiredate/*10、找出每个月倒数第三天受雇的员工*/select * from scott.emp where hiredate = last_day(hiredate) - 2/*11、分别用case和decode函数列出员工所在的部门,deptno=10显示'部门10',deptno=20显示'部门20'deptno=30显示'部门30'deptno=40显示'部门40'否则为'其他部门'*/select ename,case deptnowhen 10 then'部门10'when 20 then'部门20'when 30 then'部门30'when 40 then'部门40'else'其他部门'end 工资情况from scott.empselect ename,decode(deptno,10,'部门10',20,'部门20',30,'部门30',40,'部门40','其他部门') 工资情况from scott.emp/*12、分组统计各部门下工资>500的员工的平均工资*/select avg(sal) from scott.emp where sal > 500 group by deptno/*13、统计各部门下平均工资大于500的部门*/select deptno from scott.emp group by deptno having avg(sal) > 500 /*14、算出部门30中得到最多奖金的员工奖金*/ select max(comm) from scott.emp where deptno = 30/*15、算出部门30中得到最多奖金的员工姓名*/select enamefrom scott.empwhere deptno = 30and comm = (select max(comm) from scott.emp where deptno = 30) /*16、算出每个职位的员工数和最低工资*/select count(ename), min(sal), job from scott.emp group by job/*17、列出员工表中每个部门的员工数,和部门no */select count(ename), deptno from scott.emp group by deptno/*18、得到工资大于自己部门平均工资的员工信息*/select *from scott.emp ewhere sal > (select avg(sal) from scott.emp where e.deptno = deptno)select *from scott.emp e1,(select avg(sal) sals, deptno from scott.emp group by deptno) e2where sal > salsand e1.deptno = e2.deptno/*19、分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金) */select avg(nvl(comm,0)), sum(sal + nvl(comm, 0))from scott.empgroup by deptno,job/*20、笛卡尔集*/select * from scott.emp, scott.dept/*21、显示员工ID,名字,直属主管ID,名字*/select empno,ename,mgr,(select ename from scott.emp e1 where e1.empno = e2.mgr) 直属主管名字from scott.emp e2/*22、DEPT表按照部门跟EMP表左关联*/select *fromscott.dept, scott.empwherescott.dept.deptno = scott.emp.deptno(+)/*23、使用此语句重复的内容不再显示了*/select distinct (job) from scott.emp/*24、重复的内容依然显示*/select *from scott.empUNION ALLselect * from scott.emp/*23和24题和22题是一样的*//*25、只显示了两个表中彼此重复的记录。
oracle试题答案解释版

要求20道判断、20道单选选择10道多选7道问答3道编程,再加20道填空一、单项选择题(每题1分,共20分)1、在Oracle中,一个用户拥有的所有数据库对象统称为(B )A)数据库B)模式C)表空间D)实例2、在Oracle 中创建用户时,若未提及DEFAULT TABLESPACE 关键字,则Oracle 就将(D )表空间分配给用户作为默认表空间。
A) USER B) SYS C)DEFAULT D) SYSTEM3、在oracle中获取前10条的关键字是(D)A) top B)Limit C)first D) rownum解释:top 是sql server数据库的关键字,limit 是mysql数据库的关键字,first是informix 数据库的关键字4、在Oracle中,( B)操作符返回并集操作并不包括重复行A) Intersect B)Union C)Union all D) Minus解释:Intersect返回交集,union返回并集,不包括重复行,union all 返回并集,包括重复行,minus返回差集5、下面那个语句是错误的(D)A) create synonym dept_synon for scott。
deptB) create sequence dept_seque increment by 1C)alter sequence dept_seque increment by 2D)drop dept_synon6、oracle数据库中,通过( C)可以以最快的方式访问表中的一行.A) 主键B) 唯一索引C)rowid D) 全表扫描7、下面那个不是oracle程序设计中的循环语句(A)A)for… end for B) loop…end loopC)while…end loop D) for… end loop8、oracle存储结构正确的是(B)A) tablespace--segment--osblock——blockB) tablespace-—segment——extent——blockC)tablespace-—extent——segment--blockD) tablespace-—extent-—block –segment9、若tnsnames.ora文件中部分配置如下:xfhtdb =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hello)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = scce)))则表明:(C)A) Oracle服务器所在的主机名为DEDICATEDB) Oracle服务器所在的主机名为scceC) 对应数据库的SID为scceD)对应数据库的SID为xfhtdb10、现在要启动数据库,那么下面哪一个启动语句是错误的(A)A) STRATUP NORMAL B) STRATUP FORCEC)STRATUP NOMOUNT D)STARTUP MOUNT11、授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是:( C )A) GRANT CHANGE ON SCOTT.EMP TO SAB) GRANT UPDATE ON SCOTT.EMP(SAL) TO SAC)GRANT UPDATE(SAL) ON SCOTT。
Oracle-100道选择题(附答案)

1.下列不属于ORACLE的逻辑结构的是(C)A.区B.段C.数据文件D.表空间2. 下面哪个用户不是ORACLE缺省安装后就存在的用户(A)A . SYSDBAB. SYSTEMC. SCOTTD. SYS3.下面哪个操作会导致用户连接到ORACLE数据库,但不能创建表(A)A.授予了CONNECT的角色,但没有授予RESOURCE的角色B.没有授予用户系统管理员的角色C.数据库实例没有启动D.数据库监听没有启动4.函数通常用来计算累计排名,移动平均数和报表聚合。
(B)A . 汇总B. 分析C 分组D 单行5.带有(B)字句的SELECT语句可以在表的一行或多行放置排他锁。
A . FOR INSERTB. FOR UPDATEC. FOR DELETED. FOR REFRESH6.在Oracle中,你以SYSDBA登录,CUSTOMER表位于Mary用户方案中,下面哪条语句为数据库中的所有用户创建CUSTOMER表的同义词(B)。
CREATE PUBLIC SYNONYM cust ON mary.customer;CREATE PUBLIC SYNONYM cust FOR mary.customer;CREATE SYNONYM cust ON mary.customer FOR PUBLIC;不能创建CUSTOMER的公用同义词。
7. 在Oracle中,当FETCH语句从游标获得数据时,下面叙述正确的是(C)。
A.游标打开B.游标关闭C.当前记录的数据加载到变量中D.创建变量保存当前记录的数据8. 在Oracle中,下面关于函数描述正确的是(AD)。
A.SYSDATE函数返回Oracle服务器的日期和时间B.ROUND数字函数按四舍五入原则返回指定十进制数最靠近的整数C.ADD_MONTHS日期函数返回指定两个月份天数的和D.SUBSTR函数从字符串指定的位置返回指定长度的子串9. 阅读下面的PL/SQL程序块:BEGININSERT INTO employee(salary,last_name,first_name) VALUES(35000,’Wang’,'Fred’);SAVEPOINT save_a;INSERT INTO employee(salary,last_name,first_name) VALUES(40000,’Woo’,'David’);SAVEPOINT save_b;DELETE FROM employee WHERE dept_no=10; SAVEPOINT save_c;INSERT INTO employee(salary,last_name,first_name) VALUES(25000,’Lee’,'Bert’);ROLLBACK TO SAVEPOINT save_c;INSERT INTO employee(salary,last_name,first_name) VALUES(32000,’Chung’,'Mike’);ROLLBACK TO SAVEPOINT save_b;COMMIT;END;运行上面的程序,哪两个更改永久保存到数据库(CD)。
Oracle数据库试题100题(附答案)

Oracle数据库试题100题(附答案)1.当Oracle服务器启动时,下列哪种文件不是必须的(D)。
A.数据文件B.控制文件C.日志文件D.归档日志文件2.在Oracle中,当用户要执行SELECT语句时,下列哪个进程从磁盘获得用户需要的数据(B)。
A.用户进程B.服务器进程C.日志写入进程(LGWRD.检查点进程(CKPT)3.在Oracle中,一个用户拥有的所有数据库对象统称为(B)。
A.数据库B.模式C.表空间D.实例4.在Oracle中,有一个教师表teacher的结构如下:ID NUMBER(5)NAME V ARCHAR2(25)EMAIL VARCHAR2(50)下面哪个语句显示没有Email地址的教师姓名(C)。
A.SELECT name FROM teacher WHERE email = NULL;B.SELECT name FROM teacher WHERE email NULL;C.SELECT name FROM teacher WHERE email IS NULL;D.SELECT name FROM teacher WHERE email IS NOT NULL;5.在Oracle数据库的逻辑结构中有以下组件:A 表空间B 数据块C 区D 段这些组件从大到小依次是(B)。
A.A→B→C→DB.A→D→C→BC.A→C→B→DD.D→A→C→B6.在Windows操作系统中,Oracle的(A)服务监听并接受来自客户端应用程序的连接请求。
A.OracleHOME_NAMETNSListenerB.OracleServiceSIDC.OracleHOME_NAMEAgentD.OracleHOME_NAMEHTTPServer7.在Oracle 中创建用户时,若未提及DEFAULT TABLESPACE关键字,则Oracle 就将(B)表空间分配给用户作为默认表空间。
Oracle题库

Oracle题库⼀、选择题1、对于Oracle数据库软件的应⽤,主要分为哪两⼤块(AB )。
〖2个答案〗A.开发B.管理C.安装D.调试2、以下哪项不是Oracle数据库物理组件的类型(D)。
〖1个答案〗A. 数据⽂件B. 控制⽂件C. ⽇志⽂件D. 表空间3、以下哪项不是Oracle数据库的逻辑组件的类型(D)。
〖1个答案〗A. 表空间B. 段C. 扩展区D. ⽇志⽂件4、关于数据控制语⾔中,收回所授予的权限的语句是(B)。
〖1个答案〗A. CreateB. RevokeC. GrantD. Update5、Oracle数据库中,取余数的运算符是(B)。
〖1个答案〗A. %B. modC. /D. ||6、Oracle数据库中,连接字符串的运算符是( D)。
〖1个答案〗A. +B. &C. isD. ||7、Oracle数据库中返回字符串长度的函数是(D)。
〖1个答案〗C. InStrD. Length8、Oracle数据库中按指定的精度进⾏四舍五⼊的函数是(C)。
〖1个答案〗A. SignB. TruncC. RoundD. Mod9、转换⽇期类型为字符串的转换函数是(C)。
〖1个答案〗A. to_dateB. to_datetimeC. to_charD. to_number10、在数据库中,对象Index表⽰(D)。
〖1个答案〗A.同义词B.表C.包D.索引11、关于通配符中的“%”,以下说法正确的两项是(BD)。
〖2个答案〗A. 代表任意⼀个字符,与Like结合使⽤B. 代表任意多个字符,与Like结合使⽤C. 代表任意⼀个字符,在Like后的表达式中只能使⽤⼀次“%”D. 代表任意多个字符,在Like后的表达式中可以使⽤多次“%”12、要统计某表中记录的总个数,以下哪项是正确的SQL语句(C)。
〖1个答案〗A. select Max(*) from 表名B. select Sum(*) from 表名C. select Count(*) from 表名D. select Min(*) from 表名13、要求表中数据的最⼤值,应使⽤什么函数(A)。
Oracle基础(习题卷3)
Oracle基础(习题卷3)第1部分:单项选择题,共63题,每题只有一个正确答案,多选或少选均不得分。
1.[单选题]如果想要配置Oracle 以使用校验和来验证数据块,将初始化参数()设置为TRUE 。
A)DB_BLOCK 。
B)DB_EXTENT_CHECKSUM 。
C)DB_BLOCK_CHECKSUM 。
D)DB_SEQENT_CHECKSUM 。
答案:C解析:2.[单选题]()是ORACLE 最基本的逻辑存储单位。
A)盘区。
B)段。
C)表空间。
D)数据块。
答案:D解析:3.[单选题]请看一个 SQL 语句:ALTER USER jinlian DEFAULT ROLL ALL;以上这个 DDL 语句将完成下面的哪一项工作?( )A)赋予 jianlian 用户 ALL 这个角色B)将所有的角色都设置成 jinlian 用户的默认角色C)移除 jinlian 用户的所有默认角色D)没有完成任何工作,因为这个命令将不会执行答案:B解析:4.[单选题]()是在分区中使用范围分区分区数据,而在子分区中使用散列分区方法,它适合于历史数据和条块数据,改善范围分区及其数据放置的管理性,提供了散列分区的并行机制优点A)列表分区。
B)组合分区。
C)交叉分区。
D)时间分区。
答案:B解析:5.[单选题]INSERT INTO TEST VALUES(‘&ID’, ’&NAME’); 语句在执行时将( )A)编译错:提示变量未定义B)运行错:提示不能识别符号C)将值&ID和&NAME插入到表中D)提示用户输入输入ID和NAME的值,再将输入值插入表中答案:D解析:A)执行游标B)执行SQL语句的UUPDATE语句C)对要更新的列进行加锁D)都不对答案:B解析:7.[单选题]在Oracl中,哪种表分区维护操作可以将非分区表转换为分区表的分区( )。
A)添加分区B)结合分区C)交换表分区D)合并分区答案:C解析:8.[单选题]当用SQL*Plus已经登录到某数据库,此时想登录到另一数据库,应该用命令( )。
oracle期末考试题及答案
oracle期末考试题及答案一、选择题(每题2分,共20分)1. Oracle数据库中的用户和模式是什么关系?A. 完全相同B. 完全不同C. 模式是用户的集合D. 用户是模式的集合答案:C2. 在Oracle数据库中,以下哪个命令用于查看当前用户?A. SELECT USER FROM DUAL;B. SELECT CURRENT_USER FROM DUAL;C. SELECT SESSION_USER FROM DUAL;D. SELECT SYSTEM_USER FROM DUAL;答案:A3. Oracle数据库中的哪个参数用于设置数据库的字符集?A. DB_CHARSETB. NLS_CHARACTERSETC. DB_LANGUAGED. NLS_LANGUAGE答案:B4. 在Oracle数据库中,以下哪个不是SQL语句?A. SELECTB. UPDATEC. DELETED. PRINT答案:D5. Oracle数据库中的触发器可以在哪些时刻执行?A. 数据插入前B. 数据更新前C. 数据删除后D. 数据查询时答案:ABC二、填空题(每空2分,共20分)1. Oracle数据库的默认表空间名称是 _ 。
答案:SYSTEM2. 在Oracle数据库中,用来查看当前数据库版本信息的命令是 _ 。
答案:SELECT * FROM V$VERSION;3. Oracle数据库中,用来创建索引的SQL语句是 _ 。
答案:CREATE INDEX;4. 在Oracle数据库中,存储过程和函数的区别在于存储过程可以有_ ,而函数不能。
答案:OUT参数5. Oracle数据库中,用于实现数据完整性的约束包括主键约束、外键约束、 _ 和CHECK约束。
答案:UNIQUE约束三、简答题(每题10分,共30分)1. 解释Oracle数据库中的视图是什么,并说明其优点。
答案:视图是Oracle数据库中的一种虚拟表,它是基于一个或多个表的查询结果。
oracle练习题(打印版)
oracle练习题(打印版)### Oracle数据库练习题#### 一、选择题1. Oracle数据库中,哪个命令用于创建表?- A. CREATE TABLE- B. CREATE DATABASE- C. DROP TABLE- D. ALTER TABLE2. 以下哪个不是Oracle数据库的数据类型?- A. NUMBER- B. CHAR- C. DATE- D. IMAGE3. 在Oracle数据库中,哪个命令用于删除表?- A. DELETE FROM- B. DROP TABLE- C. REMOVE TABLE- D. ERASE TABLE4. Oracle数据库中,如何查看当前用户?- A. SELECT USER FROM DUAL;- B. SELECT CURRENT_USER FROM DUAL;- C. SELECT USERNAME FROM ALL_USERS;- D. SELECT CURRENT_USER FROM ALL_USERS;5. 以下哪个命令用于在Oracle数据库中创建索引?- A. CREATE INDEX- B. CREATE KEY- C. CREATE CONSTRAINT- D. CREATE UNIQUE#### 二、填空题1. 在Oracle数据库中,使用____命令可以查看表结构。
2. Oracle数据库中,使用____命令可以查看当前数据库的所有表。
3. 要删除Oracle数据库中的行,可以使用____命令。
4. Oracle数据库中,____用于存储二进制数据。
5. Oracle数据库中,____命令用于查看数据库中所有的索引。
#### 三、简答题1. 描述Oracle数据库中事务的ACID属性。
2. 解释Oracle数据库中的锁定机制。
3. 说明Oracle数据库中视图的作用。
#### 四、操作题1. 创建一个名为`Employees`的表,包含以下字段:- `EmployeeID` NUMBER(10) PRIMARY KEY,- `FirstName` VARCHAR2(50),- `LastName` VARCHAR2(50),- `HireDate` DATE,- `Salary` NUMBER(10, 2),- `DepartmentID` NUMBER(10).2. 向`Employees`表中插入以下数据:- `EmployeeID`: 1001, `FirstName`: 'John', `LastName`:'Doe', `HireDate`: '2023-01-01', `Salary`: 70000,`DepartmentID`: 101.- `EmployeeID`: 1002, `FirstName`: 'Jane', `LastName`:'Smith', `HireDate`: '2023-02-15', `Salary`: 50000,`DepartmentID`: 102.3. 编写一个查询,显示所有员工的姓名和工资,按工资从高到低排序。
Oracle_练习与答案
Oracle_练习与答案1.求部门中薪水最高的人select ename,sal,emp.deptno from empjoin (select deptno,max(sal) max_sal from emp group by deptno) ton (emp.deptno = t.deptno and emp.sal = t.max_sal);2.求部门平均薪水的等级select deptno, avg_sal, grade from(select deptno,avg(sal) avg_sal from emp group by deptno) tjoin salgradeon (t.avg_sal between salgrade.losal and salgrade.hisal);3.求部门平均的薪水等级select deptno, avg(grade) avg_sal_grade from(select deptno, grade from empjoin salgrade on emp.sal between salgrade.losal and salgrade.hisal) group by deptno;4.雇员中有哪些人是经理人select distinct e2.ename manager from emp e1 join emp e2 on e1.mgr = e2.empno;select ename from emp where empno in (select mgr from emp);5.不准用组函数,求薪水的最高值select distinct sal max_sal from empwhere sal not in(select e1.sal e1_sal from emp e1 join emp e2 on e1.sal < e2.sal);6.求平均薪水最高的部门的部门编号select deptno, avg_sal from(select deptno, avg(sal) avg_sal from emp group by deptno) where avg_sal =(select max(avg_sal) from(select avg(sal) avg_sal from emp group by deptno));组函数嵌套写法(对多可以嵌套一次,group by 只对内层函数有效) select deptno, avg_sal from(select deptno, avg(sal) avg_sal from emp group by deptno) where avg_sal =(select max(avg(sal)) from emp group by deptno);7.求平均薪水最高的部门的部门名称select t1.deptno, dname, avg_sal from(select deptno,avg(sal) avg_sal from emp group by deptno) t1 join dept on t1.deptno = dept.deptnowhere avg_sal =(select max(avg_sal) from(select deptno,avg(sal) avg_sal from emp group by deptno) );select dname from deptwhere deptno =(select deptno from(select deptno,avg(sal) avg_sal from emp group by deptno) where avg_sal =(select max(avg_sal) from(select deptno,avg(sal) avg_sal from emp group by deptno) ));8.求平均薪水的等级最低的部门的部门名称select dname from deptjoin(select deptno, grade from(select deptno, avg(sal) avg_sal from emp group by deptno) t join salgradeon (t.avg_sal between salgrade.losal and salgrade.hisal)) ton dept.deptno = t.deptnowhere t.grade =(select min(grade) from(select avg(sal) avg_sal from emp group by deptno) tjoin salgradeon (t.avg_sal between salgrade.losal and salgrade.hisal));9.求部门经理人中平均薪水最低的部门名称select dname from(select deptno, avg(sal) avg_sal from empwhere empno in (select mgr from emp)group by deptno) tjoin dept on t.deptno = dept.deptnowhere avg_sal =(select min(avg_sal) from(select avg(sal) avg_sal from empwhere empno in (select mgr from emp)group by deptno) t);10.求比普通员工的最高薪水还要高的经理人名称(not in) select ename from emp where empnoin (select mgr from emp) and sal >(select max(sal) from(select e2.sal fromemp e1 right join emp e2 on e1.mgr = e2.empno where e1.ename is null) t);select ename from emp where empnoin (select mgr from emp) and sal >(select max(sal) from emp where empno not in(select distinct mgr from emp where mgr is not null));//NOT IN遇到NULL则返回NULL,必须排除NULL值11.求薪水最高的前5名雇员select empno,ename from(select * from emp order by sal desc)where rownum<=5;12.求薪水最高的第6到第10名雇员(!important)select ename,sal from(select t.*,rownum r from(select * from emp order by sal desc) t) where r>=6 and r<=10;13.求最后入职的5名员工select ename, to_char(hiredate,'YYYY"年"MM"月"DD"日"') hiredate from (select t.*,rownum r from(select * from emp order by hiredate desc)t)where r<=5;select ename, to_char(hiredate,'YYYY"年"MM"月"DD"日"') hiredate from (select t.*,rownum r from(select * from emp order by hiredate)t)where r>(select count(*)-5 from emp);P。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.习题:列出至少有一个员工的所有部门
select distinct d.deptno,d.dname from emp e join dept d on e.deptno=d.deptno;
select distinct deptno from emp having count(empno)>=1 group by deptno;
2.习题:列出工资比“Smith”多的所有雇员。
select ename,sal from emp where sal>(select sal from emp where ename='SMITH');
3.习题:列出所有员工的姓名和其直接上司的姓名①
select e.ename,m.ename from emp e left join emp m on
e.mgr=m.empno;②select
emp.ename,mg.ename from emp join(select e.ename,e.empno from emp e join(select distinct mgr from emp where mgr is not null) m on empno=m.mgr) mg on emp.mgr=mg.empno;
4.习题:列出雇佣日期早于其直接上级的所有雇员的编号、姓名和部门名称
select empno,ename,dname from(select emp.empno,emp.ename,deptno dno from emp join(select
e.ename,e.empno,e.hiredate from emp e join(select distinct
mgr from emp where mgr is not null) m on empno=m.mgr) mg on emp.mgr=mg.empno and emp.hiredate<mg.hiredate)q join dept
d on dno=d.deptno;
5.习题:列出部门名称和这些部门的雇员信息,同时列出那些没有雇员的部门
select dname,ename,empno,sal,job from dept d left join emp e on d.deptno=e.deptno order by dname;
6.习题:列出所有“Cl e rk”的姓名和其部门名称,部门的人数
select ename,dname,(select count(*)from emp e,(select deptno from emp where ename ='CLARK')s where
e.deptno=s.deptno)from emp,dept where ename ='CLARK'and
emp.deptno=dept.deptno;
7.习题:列出最低工资大于1500 的各种工作以及从事此工作的全部雇员人数
select job,newsal,c from(select job,min(sal)as newsal,count(job)as c from emp group by job)where newsal>1500;
8.习题:列出在部门“Sales”工作的员工姓名,假定不知道销售部的部门编号
select ename from emp e,(select deptno from dept where dname='SALES') d where e.deptno=d.deptno;
习题:列出工资高于公司平均工资的所有雇员,所在部门,上级领导,公司的工资等级select ename,job,sal,grade,mname from(select
ename,job,sal,grade from(select ename,job,sal from
emp ,(select avg(sal)as asal from emp)where sal>asal)
join salgrade on sal between losal and hisal),(select e.ename aname,m.ename mname from emp e left join emp m on e.mgr=m.empno)
9.where ename =aname;
10.习题:列出与scott从事相同工作的所有雇员及部门名称
select ename,deptno dno from emp,(select job j from emp where ename='SCOTT')where job=j;
11.习题:列出工资等于部门30 中雇员的工资的所有雇员姓名和工资
select ename,sal from emp,(select sal s from emp where deptno=30)where sal in s;
12.习题:列出工资高于在30 部门工作的所有雇员的工资的雇员姓名和工资,部门名称
select ename,sal,dname from(select ename,sal,deptno dno from emp join(select max(sal)s from emp where deptno=30) on sal>s),dept where dno=deptno;
13.习题:列出在每个部门工作的雇员数量,平均工资和平均工龄
select
dname,count(empno),avg(sal),avg(sysdate-hiredate)from emp e right join dept d on e.deptno=d.deptno group by dname;
14.习题:列出所有雇员的姓名、部门名称和工资
select ename,dname,sal from emp e,dept d where
e.deptno=d.deptno;
15.习题:列出所有部门的详细信息和部门的人数
select deptno,dname,loc,s from dept left join(select deptno dno,count(empno) s from emp group by deptno)on deptno=dno order by deptno;
16.习题:列出各种工作的最低工资及从事此工作的雇员姓名
select ename,dsal,job from emp,(select job j,min(sal) dsal from emp group by job)where job=j;
17.习题:列出各个部门的manager的最低工资
select dname,msal from dept left join(select deptno dno,min(sal) msal from emp where job='MANAGER'group by deptno)
on deptno=dno;
18.习题:列出所有雇员的年薪,按照年薪从低到高排序
select ename,(sal*12)+(nvl(comm,0)*12)from emp order
by(sal*12)+(nvl(comm,0)*12);
19.习题:查询某个雇员的上级主管,并求出这些主管中的薪水超过3000 的
select e.ename,e.empno,e.sal from emp e join(select distinct mgr from emp where mgr is not null)m on empno=m.mgr and sal>3000;
20.习题:求出部门名称中带“S”的部门雇员的工资合计和部门人数
select sum(sal),count(empno)from emp,(select deptno dno from dept where dname like'%S%')where deptno=dno group by dno;。