Oracle基础练习题及答案(多表查询1)

合集下载

Oracle经典练习题及标准答案

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练习及答案

oracle练习及答案

oracle练习及答案测试⼀1.SQL*PLUS命令可以控制数据库(no)2.下⾯的语句是否可以执⾏成功(yes)select last_name , job_id , salary as salfrom employees;3.下⾯的语句是否可以执⾏成功(yes)select * from employees;4.找出下⾯语句中的错误select employee_id , last_namesal * 12 ANNUAL SALARYfrom employees;列于列之间未⽤逗号分隔别名应⽤引号括起来5.显⽰表departments的结构,并查询其中的全部数据desc departmentsselect * from departments;6.显⽰出表employees中的全部job_id(不能重复)select distinct job_idfrom employees;7.显⽰出表employees的全部列,各个列之间⽤逗号连接,列头显⽰成OUT_PUTselect EMPLOYEE_ID||','|| FIRST_NAME||','||LAST_NAME||','||EMAIL||','||PHONE_NUMBER||','||HIRE_DATE||','||JOB_ID||','||SALARY||','||COMMISSION_PCT||','||MANAGER_ID||','|| DEPARTMENT_ID as "OUT_PUT" from employees;测试⼆1.查询⼯资⼤于12000的员⼯姓名和⼯资SELECT FIRST_NAME, salaryFROM employeesWHERE salary > 12000;2.查询员⼯号为176的员⼯的姓名和部门号SELECT FIRST_NAME, department_idFROM employeesWHERE employee_id = 176;3.选择⼯资不在5000到12000的员⼯的姓名和⼯资SELECT FIRST_NAME, salaryFROM employeesWHERE salary NOT BETWEEN 5000 AND 12000;4.选择雇⽤时间在1998-02-01到1998-05-01之间的员⼯姓名,job_id和雇⽤时间SELECT FIRST_NAME, job_id, hire_dateFROM employeesWHERE hire_date BETWEEN '01-2⽉-98' AND '01-5⽉-98';5.选择在20和50号部门⼯作的员⼯姓名和部门号SELECT FIRST_NAME, department_idFROM employeesWHERE department_id IN (20, 50);6.选择在1994年雇⽤的员⼯的姓名和雇⽤时间SELECT FIRST_NAME, hire_dateFROM employeesWHERE hire_date LIKE '%94';7.选择公司中没有管理者的员⼯姓名及job_idSELECT FIRST_NAME, job_idFROM employeesWHERE manager_id IS NULL;8.选择公司中有奖⾦的员⼯姓名,⼯资和奖⾦SELECT FIRST_NAME, salary, commission_pctFROM employeesWHERE commission_pct IS NOT NULL;9.选择员⼯姓名的第三个字母是a的员⼯姓名SELECT FIRST_NAMEFROM employeesWHERE FIRST_NAME LIKE '__a%';10.选择姓名中有字母a和e的员⼯姓名SELECT FIRST_NAMEFROM employeesWHERE (FIRST_NAME LIKE '%e%a%' OR FIRST_NAME LIKE '%a%e%')测试三1.显⽰系统时间Select sysdate "Date" from dual2.查询员⼯号,姓名,⼯资,以及⼯资提⾼百分之20%后的结果(new salary)select empno,ename,sal, round(sal*1.20,0) as“new salary” from emp;3.将员⼯的姓名按⾸字母排序,并写出姓名的长度(length)select ename "Name" ,length(ename) "Length" from emp order by substr(ename,1,1);4.查询各员⼯的姓名,并显⽰出各员⼯在公司⼯作的⽉份数(worked_month)。

Oracle数据库基础题库【含答案】(小编推荐)

Oracle数据库基础题库【含答案】(小编推荐)

Oracle数据库基础题库【含答案】(小编推荐)第一篇:Oracle数据库基础题库【含答案】(小编推荐)一、判断题,正确请写写“T”,错误请写写“F”,1、oracle 数据库系统中,启动数据库的第一步是启动一个数据库实例。

(T)2、Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客户机的连接请求。

(F)3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。

(T)4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。

(F)5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。

(F)8、数据字典中的内容都被保存在SYSTEM表空间中。

(T)9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等,WHERE 后面的条件中也可以有聚集函数。

(F)10、“上海西北京” 可以通过like ‘%上海_’查出来。

(F)11、表空间是oracle 最大的逻辑组成部分。

Oracle数据库由一个或多个表空间组成。

一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。

(T)12、表空间分为永久表空间和临时表空间两种类型。

(T)13、truncate是DDL操作,不能 rollback。

(T)14、如果需要向表中插入一批已经存在的数据,可以在INSERT 语句中使用WHERE语句。

(F)15、Oracle数据库中字符串和日期必须使用双引号标识。

(F)16、Oracle数据库中字符串数据是区分大小写的。

(T)17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。

(F)18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。

(T)20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接。

(T)21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义。

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练习题及答案

oracle练习题及答案Oracle练习题及答案Oracle是一种强大的关系数据库管理系统,被广泛应用于企业级应用程序和数据管理中。

为了帮助大家更好地掌握Oracle数据库的知识,以下是一些Oracle练习题及答案,希望能够帮助大家更好地理解和掌握Oracle数据库的知识。

1. 什么是Oracle数据库?Oracle数据库是一种关系数据库管理系统,由美国Oracle公司开发。

它是一种高性能、可靠性高的数据库系统,被广泛应用于企业级应用程序和数据管理中。

2. Oracle数据库的特点有哪些?Oracle数据库具有以下特点:高性能、高可用性、可伸缩性、安全性高、灵活性强、易管理等。

3. 如何创建一个新的数据库用户?在Oracle数据库中,可以使用以下SQL语句来创建一个新的数据库用户:```CREATE USER username IDENTIFIED BY password;```4. 如何查看Oracle数据库中所有的表?可以使用以下SQL语句来查看Oracle数据库中所有的表:```SELECT table_name FROM user_tables;```5. 如何在Oracle数据库中插入一条新的记录?可以使用以下SQL语句来在Oracle数据库中插入一条新的记录:```INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);```6. 如何在Oracle数据库中更新一条记录?可以使用以下SQL语句来在Oracle数据库中更新一条记录:```UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;```7. 如何在Oracle数据库中删除一条记录?可以使用以下SQL语句来在Oracle数据库中删除一条记录:```DELETE FROM table_name WHERE condition;```通过以上Oracle练习题及答案的学习,相信大家对Oracle数据库有了更深入的了解。

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

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

Oracle基础练习题及答案(基本查询)练习题使用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*0.3);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 考试试题(带答案)
--显示结果(1000)条
session2 ---------------------------------------
T2 delete from t where rownum <=100;
T3
begin
delete from t where rownum <=100;
commit;
end;
/
T4 truncate table t;
select seq.ROWNUM from dual; select seq.ROWID from dual; select seq.CURRVAL from dual; select seq.NEXTVAL from dual;
c
14) 在Oracle中,游标都具有下列属性,除了()。
a) b) c) d) e) 参考答案
SELECT name FROM teacher WHERE email = NULL;
SELECT name FROM teacher WHERE email <> NULL;
SELECT name FROM teacher WHERE email IS NULL;
SELECT name FROM teacher WHERE email IS NOT NULL;
a) b) c) d) 参考答案
归档日志运行模式 RECOVER命令 恢复管理器(RMAN) Export和Import工具
d
18 有表一的查询结果如下,该表为学生成绩表
select id,grade from student_grade
ID
GRADE
--------
-----------
1

Oracle数据库基础题库【含答案】

Oracle数据库基础题库【含答案】

1、判断题,正确请写写"T",错误请写写"F",1、oracle数据库系统中,启动数据库的第一步是启动一个数据库实例。

( T )2、Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客户机的连接请求。

( F)3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。

( T)4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。

( F )5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。

( F )8、数据字典中的内容都被保存在SYSTEM表空间中。

( T )9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。

( F )10、"上海西北京" 可以通过like ‘%上海_’查出来。

( F )11、表空间是oracle 最大的逻辑组成部分。

Oracle数据库由一个或多个表空间组成。

一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。

( T )12、表空间分为永久表空间和临时表空间两种类型。

( T )13、truncate是DDL操作,不能 rollback。

( T )14、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用WHERE语句。

( F )15、Oracle数据库中字符串和日期必须使用双引号标识。

( F )16、Oracle数据库中字符串数据是区分大小写的。

( T )17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。

( F )18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。

( T )20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接。

史上最全Oracle数据库基本操作练习题(含答案)

史上最全Oracle数据库基本操作练习题(含答案)

Oracle基本操作练习题使用表:员工表(emp):(empno NUMBER (4)notnull,--员工编号,表示唯一ename VARCHAR2 (10),--员工姓名job VARCHAR2 (9),--员工工作职位mgr NUMBER (4),--员工上级领导编号hiredate DATE,--员工入职日期salNUMBER (7,2),--员工薪水comm NUMBER (7,2),--员工奖金dept no NUMBER (2)—员工部门编号)部门表(dept):(deptno NUMBER (2)notnull,--部门编号dname VARCHAR2 (14),--部门名称locVARCHAR2 (13)—部门地址)说明:增删改较简单,这些练习都是针对数据查询,查询主要用到函数、运算符、模糊查询、排序、分组、多变关联、子查询、分页查询等。

建表脚本(根据需要使用): 建表脚本.txt练习题:1. 找出奖金高于薪水60%的员工信息。

SELECT * FROM emp WHERE comm>sal*0.6;2. 找出部门10中所有经理(MANAGER )和部门20中所有办事员(CLERK)的详细资料。

SELECT * FROM emp WHERE (JOB二'MANAGER' AND DEPTNO=10) OR (JOB二'CLERK' AND DEPTNO=20);3. 统计各部门的薪水总和。

SELECT dept no,SUM(sal) FROM emp GROUP BY dept no;4. 找出部门10中所有理(MANAGER ),部门20中所有办事员(CLERK)以及既不是经理又不是办事员但其薪水大于或等 2000的所有员工的详细资料。

SELECT * FROM emp WHERE (JOB二'MANAGER' AND DEPTNO=10) OR (JOB 二'CLERK' AND DEPTNO=20) OR (JOB NOT IN('MANAGER','CLERK') ANDSAL>2000);5. 列出各种工作的最低工资。

Oracle基础(习题卷1)

Oracle基础(习题卷1)

Oracle基础(习题卷1)第1部分:单项选择题,共63题,每题只有一个正确答案,多选或少选均不得分。

1.[单选题]以下()用户默认拥有SYSDBA权限A)A-SYSTEMB)B-SYSC)C-SAD)D-DBADMIN答案:B解析:2.[单选题]你使用 IMMEDIATE 选项关闭数据库实例。

考虑打开数据库需要执行的步骤:1. 分配 SGA2. 读取控制文件3. 读取日志文件4. 开始实例恢复5. 启动后台进程6. 检查数据文件一致性7. 读取 spfile 或者 pfile哪个选项是正确的关于这些步骤()A)7, 1, 5, 2, 3, 6, 4B)1, 5, 7, 2, 3, 6; step 4 is not requiredC)7, 1, 5, 2, 3, 6 step 4 is not requiredD)1, 2, 3, 5, 6, 4; step 7 is not required答案:C解析:3.[单选题]执行下面的命令备份 USERS 表空间SQL> ALTER TABLESPACE users BEGIN BACKUP;ALTER TABLESPACE users BEGIN BACKUP*ERROR at line 1:ORA-01123: cannot start online backup;media recovery not enabled什么原因导致整个错误()A)MTTR Advisor 禁用B)数据库处于 NOARCHIVELOG 模式C)表空间已经处于备份模式D)Flash Recovery Area 没有配置答案:B解析:4.[单选题]当执行介质数据库恢复时,有个归档日志文件丢失或者损坏,那么此时只能执行哪种操作?什么A)Until SCNB)Until timeC)Recover using backup control file.D)Until cancel答案:D解析:5.[单选题]oracle逻辑存储结构正确的是( )A)tablespace--segment--osblock--blockB)tablespace--segment--extent--blockC)tablespace--extent--segment--blockD)tablespace--extent--block -segment答案:B解析:6.[单选题]如何将变量v_row 定义为emp表的记录类型( )A)v_row emp%type;B)v_row emp%record;C)v_row emp%tabletype;D)v_row emp%rowtype;答案:D解析:7.[单选题]The schema SALES exists in two databases, ORCL1 and ORCL2, and has the same password,SALES123. User SALES has CREATE DATABASE LINK and CREATE SESSION privileges on bothDatabases.Eaxmine these command:Conn SALES/SALES123CREATE DATABASE LINK orcl2 USING ‘orcl12’;What is the outcome of executing these commands in the ORCL1 database?A)ORCL2 is created as a shared database link to connect multiple sessions to the SALES schema in the ORCL2 databaseB)ORCL2 database link creation failsC)ORCL2 is created as a private database link to connect to only the SALES schema in the ORCL2 databaseD)ORCL2 is created as a public link to connect a single session to the SALES schema in the ORCL2 database答案:C解析:8.[单选题]分析以下的SQL 命令:SELECT manufacturer_idFROM inventoryWHERE manufacturer_id LIKE '%N\%P\%O%' ESCAPE '\';命令执行的返回结果是( )。

史上最全Oracle数据库基本操作练习题(含答案)

史上最全Oracle数据库基本操作练习题(含答案)

Oracl‎e基本操作‎练习题使用表:员工表(emp):(empno‎N UMBE‎R(4)notnu‎l l,--员工编号,表示唯一ename‎V ARCH‎A R2(10),--员工姓名job VARCH‎A R2(9),--员工工作职‎位mgrNU‎M BER(4),--员工上级领‎导编号hired‎a teDA‎T E,--员工入职日‎期salNU‎M BER(7,2),--员工薪水commN‎U MBER‎(7,2),--员工奖金deptn‎o NUMB‎E R(2)—员工部门编‎号)部门表(dept):(deptn‎o NUMB‎E R(2)notnu‎l l,--部门编号dname‎V ARCH‎A R2(14),--部门名称locVA‎R CHAR‎2(13)—部门地址)说明:增删改较简‎单,这些练习都‎是针对数据‎查询,查询主要用‎到函数、运算符、模糊查询、排序、分组、多变关联、子查询、分页查询等‎。

建表脚本.txt建表脚本(根据需要使‎用):练习题:1.找出奖金高‎于薪水60‎%的员工信息‎。

SELEC‎T * FROM emp WHERE‎comm>sal*0.6;2.找出部门1‎0中所有经‎理(MANAG‎E R)和部门20‎中所有办事‎员(CLERK ‎)的详细资料‎。

SELEC‎T* FROM emp WHERE‎(JOB='MANAG‎E R' AND DEPTN‎O=10) OR (JOB='CLERK‎' AND DEPTN‎O=20);3.统计各部门‎的薪水总和‎。

SELEC‎T deptn‎o,SUM(sal) FROM emp GROUP‎BY deptn‎o;4.找出部门1‎0中所有理‎(M ANAG‎E R),部门20中‎所有办事员‎(C LERK 以及既不是‎经理又不是‎办事员但其‎薪水大于或‎等2000‎的所有员工‎的‎)详细资料‎。

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 子句,并指定要分组的列名。

orcl基础练习题

orcl基础练习题

orcl基础练习题Oracle Corporation(ORCL)是全球最大的企业级软件公司之一,它的产品广泛应用于数据库管理系统、云计算、商业智能等领域。

本文将为读者提供一些ORCL基础练习题,帮助其巩固相关知识和技能。

练习题一:SQL查询1. 查询所有学生的姓名、年龄和性别。

2. 查询所有成绩大于等于80分的学生的姓名和成绩。

3. 查询年龄在20岁到25岁之间的男生的姓名和年龄。

4. 查询年龄最小的学生的姓名、年龄和性别。

5. 查询每个班级的学生数量。

练习题二:表操作1. 创建一个名为“student”的表,包含字段:学号(id,整数型)、姓名(name,字符串型)、年龄(age,整数型)、性别(gender,字符串型)。

2. 向表中插入以下学生信息:(101, 'Alice', 20, 'Female'),(102,'Bob', 22, 'Male'),(103, 'Cathy', 21, 'Female'),(104, 'David', 23,'Male')。

3. 更新学号为102的学生的姓名为'John'。

4. 删除学号为104的学生。

练习题三:数据查询与操作有以下两张表:Table: Students学号(id)姓名(name)班级(class)101 Alice A1102 Bob A2103 Cathy A1104 David A3Table: Scores学号(id)课程(course)分数(score)101 Math 88102 Math 78103 Math 92101 English 90102 English 85103 English 88请根据以上表格回答以下问题:1. 查询每个学生的姓名、所在班级和总分数。

2. 查询每个学生的姓名、班级和平均分数。

数据库基础(Oracle)试卷及答案

数据库基础(Oracle)试卷及答案

数据库基础(Oracle)试卷及答案数据库基础(Oracle)试卷一、填空题(每小题4分,共20分)1、数据库管理技术经历了人工管理、文件系统、数据库系统三个阶段2、数据库三级数据结构是外模式、模式、内模式3、Oracle数据库中,SGA由数据库缓冲区,重做日志缓冲区,共享池组成4、在Oracle数据库中,完正性约束类型有Primay key约束。

Foreign key约束,Unique约束,check约束,not need约束5、PL/SQL中游标操作包括声明游标,打开游标,提取游标,关闭游标二、正误判断题(每小题2分,共20分)1、数据库中存储的基本对象是数据(T)2、数据库系统的核心是DBMS(T)3、关系操作的特点是集合操作(T)4、关系代数中五种基本运算是并、差、选择、投影、连接(F)5、Oracle进程就是服务器进程(F)6、oraclet系统中SGA所有用户进程和服务器进程所共享(F)7、oracle数据库系统中数据块的大小与操作系统有关(T)8、oracle数据库系统中,启动数据库和第一步是启动一个数据库实例(F)9、PL/SQL中游标的数据是可以改变的(T)10、数据库概念模型主要用于数据库概念结构设计(F)三、简答题(每小题7分,共35分)1、何谓数据与程序的逻辑独立性和物理独立性?数据库系统中的DBMS为三级模式结构提供了两层映像机制:外模式/模式映像和模式/内模式映像。

这两层映像机制保证了数据库系统中数据的逻辑独立性和物理独立性。

外模式/模式映像定义了数据库中不同用户的外模式与数据库逻辑模式之间的对应关系。

当数据库模式发生变化时,例如关系数据库系统中增加新的关系、改变关系的属性数据类型等,可以调整外模式/模式间的映像关系,保证面向用户的各个外模式不变。

应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与应用程序的逻辑独立性,简称数据的逻辑独立性。

模式/内模式映像定义了数据库中数据全局逻辑结构与这些数据在系统中的物理存储组织结构之间的对应关系。

ORACLE试题01

ORACLE试题01

ORACLE试题一、单项选择题(每题2分,共20分)1、假如不知道该变量的基础数据库列的数据类型,在PL/SQL块中如何定义一个变量?(表名是DBTABLE,列名是COLUMNX)A、V_X NUMBER;B、V_X V ARCHAR2C、V_X DBTABLE.COLUMNX%TYPE;D、V_X COLUMNX.DBTABLE%TYPE;2、下列代码中哪一行有错?A、SELECT DNAME,ENAMEB、FROM EMP E , DEPT DC、WHERE EMP.DEPTNO=DEPT.DEPTNOD、ORDER BY 1,23、查询那一个数据字典视图,只能列出用户所拥有的表?A、ALL_TABLESB、DBA_TABLESC、USER_TABLESD、USR_TABLES4、在CREATE VIEW命令中哪个子句将阻止通过视图对基表进行更新?A、WITH CHECK OPTIONB、WITH READ ONL YC、WITH NO UPDATED、没有这样的选项;假如用户对基表有权限,用户可以更新视图5、表中的一列具有这样的特性,其值的重复度很高,我们可以使用何种索引?A、唯一索引B、组合索引C、反向建索引D、位图索引6、在出错处理部分中需要包含什么子句,以便处理前面没有指定的错误?A、ELSEB、WHEN ANYTHING ELSEC、WHEN ANY OTHERD、WHEN OTHERS THEN7、在创建序列的过程中,下列()选项指定序列在达到最大值或最小值后,将继续从头开始生成值。

A、CycleB、NocycleC、CacheD、Nocache8、在PL/SQL中,在执行任何DML语句前,SQL%NOTFOUND的值为()。

A、NOTFOUNDB、TRUEC、NULLD、FALSE9、在Oracle中,PL/SQL块中定义了一个带参数的游标:CURSOR emp_cursor(dnum NUMBER) ISSELECT sal, comm FROM emp WHERE deptno = dnum;那么正确打开此游标的语句是()A、OPEN emp_cursor(20);B、OPEN emp_cursor FOR 20;C、OPEN emp_cursor USING 20;D、FOR emp_rec IN emp_cursor LOOP … END LOOP;10、当两位用户中的每一位都对一个单独的对象进行了锁定,而他们又要获取对方对象的锁时,将会发生()。

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;

史上最全Oracle数据库基本操作练习试题[含答案解析]

史上最全Oracle数据库基本操作练习试题[含答案解析]

史上最全Oracle数据库基本操作练习试题[含答案解析] Oracle基本操作练习题使⽤表:员⼯表(emp):(empno NUMBER(4)notnull,--员⼯编号,表⽰唯⼀ename VARCHAR2(10),--员⼯姓名job VARCHAR2(9),--员⼯⼯作职位mgr NUMBER(4),--员⼯上级领导编号hiredate DATE,--员⼯⼊职⽇期sal NUMBER(7,2),--员⼯薪⽔comm NUMBER(7,2),--员⼯奖⾦deptno NUMBER(2)—员⼯部门编号)部门表(dept):(deptno NUMBER(2)notnull,--部门编号dname VARCHAR2(14),--部门名称loc VARCHAR2(13)—部门地址)说明:增删改较简单,这些练习都是针对数据查询,查询主要⽤到函数、运算符、模糊查询、排序、分组、多变关联、⼦查询、分页查询等。

建表脚本.txt建表脚本(根据需要使⽤):练习题:1.找出奖⾦⾼于薪⽔60%的员⼯信息。

SELECT * FROM emp WHERE comm>sal*0.6;2.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料。

SELECT * FROM emp WHERE (JOB='MANAGER' AND DEPTNO=10) OR (JOB='CLERK' AND DEPTNO=20);3.统计各部门的薪⽔总和。

SELECT deptno,SUM(sal) FROM emp GROUP BY deptno;4.找出部门10中所有理(MANAGER),部门20中所有办事员(CLERK)以及既不是经理⼜不是办事员但其薪⽔⼤于或等2000的所有员⼯的详细资料。

SELECT * FROM emp WHERE (JOB='MANAGER' AND DEPTNO=10) OR (JOB='CLERK' AND DEPTNO=20) OR (JOB NOT IN('MANAGER','CLERK') AND SAL>2000);5.列出各种⼯作的最低⼯资。

Oracle数据库入门练习题参考答案

Oracle数据库入门练习题参考答案

Oracle数据库入门练习题参考答案《数据库入门》练习题参考答案1、查询所有药品的医疗项目编码、名称和单价,按照单价的降序排序。

select ylxmbm,ylxmmc,djfrom dw.medi_itemwhere ylxmlb='1'order by dj desc;运行结果:2、查询与’安娜’医师在同一个科室工作的医师姓名。

select b.xmfrom dw.doctor a,dw.doctor bwhere a.ksbm=b.ksbm and a.xm='安娜' and b.xm<>’安娜’;运行结果:3、查询未结算的FYID及其总费用、报销费用和自付费用。

select fyid,zje,bxje,zfjefrom dw.patient_script_genlwhere jshid is null;运算结果:4、查询使用过’阿莫西林’药品的病人个人编码和姓名。

select grbm,xmfrom dw.per_natlwhere grbm in (select grbmfrom dw.medi_item a,dw.patient_script_detl b,dw.patient_script_genl cwhere ylxmmc='阿莫西林'and a.ylxmbm=b.ylxmbm andb.fyid=c.fyid);运行结果:5、查询2012年的平均报销金额。

select avg(bxje)from dw.patient_script_genlwhere to_char(fyfsrq,'YYYY.MM.DD') between '2012.01.01'and '2012.12.31';运行结果:6、查询GRBM是’320106************’的病人的姓名、出生日期、家庭住址和性别(其中性别为’1’表示男性,性别为’2’表示女性,请将数据库中的’1’和’2’转换为’男’和’女’;CDRQ以’YYYY.MM.DD’的形式显示)。

Oracle基础练习题及答案(多表查询1)

Oracle基础练习题及答案(多表查询1)

利用scott用户自带的四张表完成如下作业:1.列出至少有一个员工的所有部门select b.deptno,b.dname from emp a,dept b where a.deptno=b.deptno group by b.deptno,b.dname having count(*)>=1;2.列出薪金比SMITH高的所有员工select * from emp where sal>(select sal from emp where ename='SMITH');3.列出所有员工的姓名及其直接上级领导的姓名select a.ename,b.ename "leader" from emp a,emp b where a.mgr=b.empno;4.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称select a.empno,a.ename,a.hiredate,c.dname from emp a,emp b,dept c where a.mgr=b.empno and a.deptno=c.deptno and a.hiredate<b.hiredate;5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门select b.dname,a.* from emp a,dept b where a.deptno(+)=b.deptno ;6.列出所有CLERK(办事员)的姓名,及其部门名称,部门人数select aa.ename,aa.job,bb.dname,(select count(a.deptno) from emp a,dept bwhere a.deptno=b.deptno and b.dname=bb.dnamegroup by a.deptno )from emp aa,dept bbwhere aa.deptno(+)=bb.deptno and aa.job='CLERK';7.列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数select a.job,min(sal),count(ename) from emp a,dept b where a.deptno=b.deptno having min(sal)>1500group by a.job;8.列出在部门SALES(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用scott用户自带的四张表完成如下作业:
1.列出至少有一个员工的所有部门
selectb.deptno,b.dnamefromemp a,dept
bwherea.deptno=b.deptnogroupbyb.deptno,b.dnamehavingcount(*)>=1;
2.列出薪金比SMITH高的所有员工
select*fromempwheresal>(selectsalfromempwhereename='SMITH');
3.列出所有员工的姓名及其直接上级领导的姓名
selecta.ename,b.ename "leader"fromemp a,emp bwherea.mgr=b.empno;
4.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称
selecta.empno,a.ename,a.hiredate,c.dnamefromempa,empb,deptcwherea.mgr= b.empnoanda.deptno=c.deptnoanda.hiredate<b.hiredate;
5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
selectb.dname,a.*fromemp a,dept bwherea.deptno(+)=b.deptno ;
6.列出所有CLERK(办事员)的姓名,及其部门名称,部门人数
selectaa.ename,aa.job,bb.dname,
(selectcount(a.deptno)fromemp a,dept b
wherea.deptno=b.deptnoandb.dname=bb.dname
groupbya.deptno )
fromemp aa,dept bb
whereaa.deptno(+)=bb.deptnoandaa.job='CLERK';
7.列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数
selecta.job,min(sal),count(ename)fromemp a,dept
bwherea.deptno=b.deptnohavingmin(sal)>1500groupbya.job;
8.列出在部门SALES(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

selectenamefromemp a,dept bwherea.deptno=b.deptnoanddname='SALES';
9.列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的等级工资selecta.ename,dname,aa.ename "Leader" ,grade
fromemp a,dept b,emp aa,salgrade s
wherea.deptno=b.deptnoanda.mgr=aa.empnoand
a.sal>(selectavg(sal)fromemp)
anda.salbetweenlosalandhisal;
10.列出与SCOTT从事相同工作的所有员工的编号,姓名,职位及其部门名称selectempno,ename,job,dnamefromemp a,dept
bwherea.deptno=b.deptnoandjob=(selectjobfromempwhereename='SCOTT');
11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

selectename,salfromempwheresal=any(selectsalfromempwheredeptno=30);
12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名、薪金和部门名称
selectename,sal,dnamefromempa,deptbwherea.deptno=b.deptnoandsal>all(selectsa lfromempwheredeptno=30);
13.列出在每个部门工作的员工数量、平均工资和平均服务期限
selectdname,count(ename),avg(sal),avg(sysdate- a.hiredate)fromemp
a,deptbwherea.deptno(+)=b.deptnogroupbya.deptno,dname;
14.列出所有员工的姓名、部门名称和工资
selectename,dname,salfromemp a,dept bwherea.deptno=b.deptno;
15.列出所有部门的详细信息和部门人数
selectb.deptno,dname,loc,count(ename)fromempa,deptbwherea.deptno(+)=b.d eptnogroupbyb.deptno,dname,loc;
16.列出各种工作的最低工资及从事此工作的雇员姓名
selectb.ename,c"MIN SAL",a.jobfrom(selectjob,min(sal)cfromempgroupbyjob) a,emp bwherea.job=b.jobandc=b.sal;
17.列出各个部门的MANAGER(经理)的最低薪金
selectdeptno,min(sal)fromempwherejob='MANAGER'groupbydeptno;
18.列出员工的年工资,按年薪从低到高排序
19.查出某个员工的上级主管,并要求出这些主管中的薪水超过3000
selecta.ename,b.ename,b.sal "boss sal"fromemp a,emp
bwherea.mgr=b.empnoandb.sal>=3000;。

相关文档
最新文档