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

史上最全Oracle数据库基本操作练习题(含答案)oracle基本操作练习题使用表格:员工表(emp):部:(deptnonumber(2)notnull,--部门编号dnamevarchar2(14),--部门名称locvarchar2(13)―部门地址)注:添加、删除和修改相对简单。
这些练习旨在进行数据查询。
查询主要使用函数、运算符、模糊查询、排序、分组、变量关联、子查询、分页查询等。
建表脚本(根据需要使用):创建表脚本1练习:2.找出部门10中所有经理(manager)和部门20中所有办事员(clerk)的详细资料。
从empwhere(job='manager'和deptno=10)或(job='clerk'和deptno=20)中选择*;3.统计各部门的薪水总和。
按deptno从empgroup中选择deptno,sum(sal);4.找出部门10中所有理(manager),部门20中所有办事员(clerk)以及既不是经理又不是办事员但其薪水大于或等2000的所有员工的详细资料。
从empwhere(job='manager'和deptno=10)或(job='clerk'和deptno=20)或(jobnotin('manager','clerk')和sal>2000)中选择*;5.列出各种工作的最低工资。
从empgroupbyjob中选择job,min(sal);26.列出每个部门经理的最低工资。
selectdeptno,min(sal)fromempwherejob='manager'groupbydeptno;7.了解领取奖金的员工的不同工作。
9.找出各月最后一天受雇的所有员工。
选择*fromempwherehiredate=最后一天(hiredate);10.显示所有员工的姓名,首字母大写。
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试题及答案

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

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数据库试题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-笔试题及答案ORACLE考题姓名一、选择题(每题1.5分)1,如何删除sales表中产品类型为toys的profits列的列值? �� (A) a) UPDATE sales SET profits = NULL WHERE product_type = 'TOYS' �� b) DELETE profits FROM sales WHERE product_type = 'TOYS'�� c) DELETE FROM sales WHEREproduct_type = 'TOYS' d) DELETE FROM sales2,在Oracle中,下面用于限制分组函数的返回值的字句是(B) a) WHRER b) HAVINGc) ORDER BYd) 无法限定分组函数的返回3,在Oracle PL/SQL中,执行动态SQL的语句是(D) a) NXECUTE b) START c) RUNd) EXECUTE IMMEDIATE4,下列表空间中��__(D)__表空间是运行一个数据库必须的一个表空间。
A)ROLLBACK B)TOOLSC)TEMPD)SYSTEM5, PL/SQL代码段中注释符号是___(C)___。
A) // B) \\\\ C) -- D) ,6,在PL/SQL代码段的异常处理块中�〔痘袼�有异常的关键词是______。
(A) A、OTHERS B、ALL C、Exception D、ERRORS7, SQL语句中修改表结构的命令是 (C) 。
A、MODIFY TABLEB、MODIFY STRUCTUREC、ALTER TABLE STRUCTURE8,在oracle中获取前10条的关键字是(D)A) top B)Limit C)first D) rownum9,下面那个不是oracle程序设计中的循环语句( A)A) for… end for B) loop…end loop C) while…end loop D、ALTER D) for…end loop10,以下哪个不是数据库的物理组件(A)。
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数据库中的一种虚拟表,它是基于一个或多个表的查询结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WORD格式
1.找出各月倒数第3天受雇的所有员工
selectenamefromempwherelast_day(hiredate)-2=hiredate;
2.找出早于12年前受雇的员工
selectenamefromempwheremonths_between(sysdate,hiredate)>=144;
3.以首字母大写的方式显示所有员工的姓名
selectinitcap(ename)fromemp;
4.显示正好为5个字符的员工的姓名
selectenamefromempwherelength(ename)=5;
5.显示不带有“R”的员工姓名
selectenamefromempwhereinstr(ename,'R',1,1)=0;
6.显示所有员工姓名的前三个字符
selectsubstr(ename,1,3)fromemp;
7.显示所有员工的姓名,用“a”替换所有的“A”
selectename,replace(ename,'A','a')fromemp;
8.显示满10年服务年限的员工的姓名和受雇日期
selectename,hiredatefromempwheremonths_between(sysdate,hiredate)>=120;
9.显示员工的详细资料,按姓名排序
select*fromemporderbyenamedesc;
10.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面selectename,hiredatefromemporderbyhiredate;
11.显示所有员工的姓名、工作和薪金,按照工作的降序排序,若工作相同则按薪金排序selectename,job,salfromemporderbyjobdesc,sal;
12.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份
相同则将最早年份的员工排在最前面
selectename,to_char(hiredate,'yyyy')h,to_char(hiredate,'mm')m fromemporderbym,h;
13.显示在一个月为30天的情况所有员工的日薪金,忽略余数
selecttrunc(sal/30)fromemp;
14.找出在(任何年份的)2月受聘的所有员工
selectenamefromempwhereto_char(hiredate,'mm')=2;
15.对于每个员工显示其加入公司的天数
selectename,sysdate-hiredatefromemp;
16.显示姓名字段的任何位置包含“A”的所有员工姓名
selectenamefromempwhereinstr(ename,'A',1,1)<>0; selectenamefromempwhereenamelike'%A%';
专业资料整理。