《Oracle数据库应用》练习题2.docx
- 文档编号:5296549
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:12
- 大小:20.41KB
《Oracle数据库应用》练习题2.docx
《《Oracle数据库应用》练习题2.docx》由会员分享,可在线阅读,更多相关《《Oracle数据库应用》练习题2.docx(12页珍藏版)》请在冰豆网上搜索。
《Oracle数据库应用》练习题2
《Oracle数据库应用》
一、选择题(20分)
1.有一产品表(编号,名称,价格,数量,所属分类),下列语法不正确的是()
A、select*from产品表where价格>1000
B、selectsum(价格)from产品表groupby所属分类havingmax(价格)>1000
C、select所属分类,sum(价格)from产品表where价格>1000groupby所属分类
D、select所属分类,sum(价格)from产品表wheremax(价格)>1000groupby所属分类
2.在建表时如果希望某列的值,在一定的范围内,应建什么样的约束?
()
A、primarykey
B、unique
C、check
D、notnull
3.你要在Oracle中定义SQL查询。
下列哪个数据库对象不能直接从select语句中引用?
()
A、表B、序列C、索引D、视图
4.SQL*Plus中发出的下列语句:
selectceil(256.342),floor(256.342),round(256.342),trunc(256.342)fromdual;下列哪个函数不返回结果256?
()
A、ceil()B、floor()C、round()D、trunc()
5.在Oracle数据库的逻辑结构中有以下组件:
A表空间B数据块C区D段,这些组件从大到小依次是()。
A、表空间→数据块→区→段
B、表空间→段→区→数据块
C、表空间→区→数据块→段
D、段→表空间→区→数据块
6.有数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其实际存储长度为()
A、1010B、44
C、104D、410
7.SQL语句中修改表结构的命令是()。
A、MODIFYTABLEB、MODIFYSTRUCTURE
C、ALTERTABLED、ALTERSTRUCTURE
8.DELETEFROMSWHERE年龄>60语句的功能是______。
A、从S表中删除年龄大于60岁的记录
B、删除S表中所有数据
C、删除S表
D、删除S表的年龄列
9.在SQL中,删除视图用_____。
A、DROPSCHEMA命令B、CREATETABLE命令
C、DROPVIEW命令D、DROPINDEX命令
10.下列哪个命令是用于ORACLE中数据导出的()
A、expB、impC、inputD、output
11.ORACLE数据库物理结构包括以下三种文件,以下不属于的是()
A、系统文件B、日志文件C、数据文件D、控制文件
12.假定有一张表用户表users,其中一身份证字段ID_card。
为了维护数据的完整性,在设计数据库时,最好对ID_card字段添加约束,请问应该添加什么约束( )
A、primarykeyB、checkC、defaultD、notnull
13.下面四个语句中哪一个是正确的?
()
A、SELECT*,ENAMEFROMEMP;
B、DELETE*FROMEMP;
C、SELECTDISTINCTEMPNO,HIREDATEFROMEMP;
D、SELECTENAME|SALAS“name”FROMEMP;
14.当给一个有主键的表中插入重复行时,将引发下列哪个异常?
()
A、NO_DATA_FOUNDB、TOO_MANY_ROWS
C、DUP_VAL_ON_INDEXD、ZERO_DIVIDE
15.下面哪个命令不属于数据操纵语言(DML)()
A、ALTER…
B、INSERT…
C、UPDATE…
D、GRANT…
16.删除emp表中所有数据,且可以rollback,以下语句哪个命令可以实现( )
A、truncatetableemp
B、droptableemp
C、delete*fromemp
D、deletefromemp
17.更改oracle用户HR,使其变为不可用(锁定)状态( )
A、UPDATEUSERHRACCOUNTDISABLE;
B、UPDATEUSERHRACCOUNTLOCK;
C、ALTERUSERHRACCOUNTLOCK;
D、ALTERUSERHRACCOUNTDISABLE;
18.INSERTINTOTESTVALUES(‘&ID’,’&NAME’);语句在执行时将()
A、编译错:
提示变量未定义
B、运行错:
提示不能识别符号
C、将值&ID和&NAME插入到表中
D、提示用户输入输入ID和NAME的值,再将输入值插入表中
19.在Oracle中,使用下列的语句:
CREATEPUBLICSYNONYMpartsFORScott.inventory;
完成的任务是( )。
A、需要给出schema被除去的对象名
B、指定了新的对象权限
C、指定了新的系统权限
D、给Scott.inventory对象创建一个公用同义词parts
20.在PL/SQL块中,以零作除数时会引发下列( )异常。
A、VALUE_ERROR
B、ZERO_DIVIDE
C、VALUE_DIVIDE
D、ZERO_ERROR
二、填空题(20分)
1.运行sql脚本命令是____Start脚本或@脚本_____
2.显示当前用户名的命令____Showuser____
3.显示表emp的结构命令____Descemp____
4.权限是指执行特定类型sql命令或是访问其它方案对象的权利,包括__系统权限和对象权限_____两种。
5.pl/sql块为变量赋值不同于其它的编程语言,需要在等号前面加___冒号__
6.定义变量v_name,该变量的数据类型与emp表的ename字段数据类型一致,定义变量的语句是_V_nameemp.ename%type__
7.数据控制语句DCL包含授权语句grant和_Revoke_
8.oracle中的注释符号有--和__/**/_
9.在Oracle中创建用户时,若未提及DEFAULTTABLESPACE关键字,则Oracle就将__system_____表空间分配给用户作为默认表空间。
10.写出数据库默认的两个用户的名称____system和sys___
11.oracle数据库中的数据文件的扩展名是什么?
__.dbf_____
12.控制文件的扩展名是什么?
__.ctl__
13.写出PL/SQL程序的三个组成部分__声明部分______、__执行部分________和____异常处理部分____
14.写出数据字典的三种前缀,三种前缀:
__DBA____ALL___和___USER___
15.Oracle数据库的存储结构分为物理结构和____逻辑结构_____。
三、判断题(10分)
1.索引的主要目标是提高访问的速度。
(Y)
2.包头没有包体是可以独立存在的。
(Y)
3.OUT不是PL/SQL过程和函数的参数模式。
(N)
4.存储过程与触发器的主要区别就是,存储过程是由用户或应用程序显示调用,而触发器是被事件自动触发。
(Y)
5.提供对对象的公共访问不是同义词具有的用途(N)
6.Trancatetable学生,该语句表示删除学生表。
(N)
7.创建视图的参数withreadonly,规定视图中不能执行插入、修改、删除和查询操作。
(N)
8.创建对象类型使用createtype语句(Y)
9.PL/SQL程序块最终由关键字end结束。
(Y)
10.For循环中,每循环一次,循环变量自动增加一个步长的值。
(Y)
四、简答题(15分)
1.列出oracle中索引的类型(5分)列出oracle中索引的类型(5分)
答:
按照数据存储方式,可以分为B*树、反向索引、位图索引;
按照索引列的个数分类,可以分为单列索引、复合索引;
按照索引列值的唯一性,可以分为唯一索引和非唯一索引。
此外还有函数索引,全局索引,分区索引...
2.简单列出几种当前流行的关系数据库系统?
(5分)
答:
Oracle,MySql,MsSql,DB2,Sybase.
3.简单介绍表空间,并写出一种建立表空间的方法。
(5分)
答:
表空间是Oracle逻辑存储结构的最高层,一个数据库就是若干个表空间组成的。
每个表空间对应操作系统中的一个或多个数据文件,但每个数据文件只能属于一个表空间。
Createtablespace表空间名datafile数据文件名;
五、程序题(35分)
Scott用户下有表emp(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)和表dept(DEPTNO,DNAME,LOC),其中emp表为雇员表,各字段的中文含义为:
雇员表(雇员号,雇员名,职位,上级编号,入职时间,月工资,奖金,部门号);dept表为部门表,各字段的中文含义为:
部门表(部门编号,部门名,部门所在地点)。
1.创建表空间mysp1,文件大小5M,文件名可以复用,数据文件放在‘c:
\mysp1.dbf’。
创建表空间mysp1,文件大小5M,文件名可以复用,数据文件放在‘c:
\mysp1.dbf’。
createtablespacemysp1datafile'c:
\mysp1.dbf'size5mreuseuniformsize128k;
2.在mysp1表空间创建表myemp,字段名及类型内容同scott用户下的emp。
在mysp1表空间创建表myemp,字段名及类型内容同scott用户下的emp。
Createtablemyempasselect*fromscott.empdefaulttablespacemysp1
3.修改myemp表将所有销售人员(即职位job为销售salesman)的奖金comm加100
修改myemp表将所有销售人员(即职位(job)为销售salesman)的奖金(comm)加100
Updatemyempsetcomm=comm+100wherejob=‘salesman’
4.创建用户fox,密码f123,授予fox连接数据库,完全访问emp表和dept表的权限。
创建用户fox,密码f123,授予fox连接数据库,完全访问emp表和dept表的权限。
createuserfox2identifiedbyf123;
grantcreatesessiontofox;
grantselectonscott.emptofox;
5.使用emp表查询工资高于500或者是岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J?
使用emp表查询工资高于500或者是岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J?
select*fromscott.empwhere(sal>500orjob='MANAGER')andenamelike'J%';
6.使用emp表显示每个部门的每种岗位的员工的平均工资和最低工资?
使用emp表显示每个部门的每种岗位的员工的平均工资和最低工资?
selectdeptno,job,avg(sal)as平均工资,min(sal)as最低工资fromempgroupbydeptno,job;
7.编写PL/SQL程序块,实现查询某个雇员的岗位,用中文显示岗位名称。
CLERK普员工,SALESMAN销售,MANAGER经理,ANALYST分析师,PRESIDENT总裁(使用case语句)
编写PL/SQL程序块,实现查询某个雇员的岗位,用中文显示岗位名称。
CLERK普员工,SALESMAN销售,MANAGER经理,ANALYST分析师,PRESIDENT总裁(使用case语句)
setserverouton
declare
v_jobscott.emp.job%type;
v_shuchuvarchar2(30);
V_empnovarchar2(20);
begin
V_empno:
=&empno;
selectjobintov_jobfromscott.empwhereempno=v_empno;
casev_job
when'CLERK'thenv_shuchu:
='得职位是:
普通员工';
when'SALESMAN'thenv_shuchu:
='得职位是:
销售员';
when'MANAGER'thenv_shuchu:
='得职位是:
经理';
when'ANALYST'thenv_shuchu:
='得职位是:
分析师';
elsev_shuchu:
='总裁';
endcase;
dbms_output.put_line(v_empno||v_shuchu);
exception
whenno_data_foundthen
dbms_output.put_line('您输入的员工不存在!
');
end;
8.编写程序块,用PL/sql实现输出7369号员工的姓名。
编写程序块,用PL/sql实现输出7369号员工的姓名。
Declare
V_nameemp.ename%type;
Begin
Selectenameintov_namefromempwhereempno=’7369’;
Dbms_output.put_line(v_name)
End;
9.编写函数annual_incomec,实现输入雇员的姓名,返回该雇员的年薪
编写函数annual_incomec,实现输入雇员的姓名,返回该雇员的年薪
createfunctionannual_incomec(namevarchar2)
returnnumberis
annual_salazynumber(7,2);
begin
--执行部分
selectsal*12+nvl(comm,0)intoannual_salazyfromempwhereename=name;
returnannual_salazy;
end;
/
10.编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。
编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。
createorreplaceproceduresp_pro6(spNamevarchar2)is
--定义
v_salemp.sal%type;
begin
--执行
selectsalintov_salfromempwhereename=spName;
--判断
ifv_sal<2000then
updateempsetsal=sal+sal*10%whereename=spName;
endif;
end;
11.创建角色myrole,将连接数据库,创建表,创建用户,创建角色,在任何模式修改表,完全访问emp表的权限赋予myrole。
创建角色myrole,将连接数据库,创建表,创建用户,创建角色,在任何模式修改表,完全访问emp表的权限赋予myrole。
createrolemyrole;
grantcreatesession,createtable,createuser,createrole,alteranytabletomyrole;
grantallonscott.emptomyrole;
12.回收myrole角色中完全访问emp表的权限
回收myrole角色中完全访问emp表的权限
revokeallonscott.empfrommyrole;
《Oracle数据库应用》答案
一、选择题(20分)
1—5DCCAB6—10CCACA11—15AACCA16—20DCDDB
二、填空题(20分)
1.Start脚本或@脚本2.Showuser3.Descemp4.系统权限和对象权限5.冒号6.V_nameemp.ename%type7.Revoke8./**/9.system10.system和sys11..dbf12..ctl13.声明部分、执行部分、异常处理部分。
14.DBAALLUSER15.逻辑结构
三、判断题(10分)
1—10YYNYNNNYYY
四、简答题(15分)
1.列出oracle中索引的类型(5分)
答:
按照数据存储方式,可以分为B*树、反向索引、位图索引;
按照索引列的个数分类,可以分为单列索引、复合索引;
按照索引列值的唯一性,可以分为唯一索引和非唯一索引。
此外还有函数索引,全局索引,分区索引...
2.简单列出几种当前流行的关系数据库系统?
(5分)
答:
Oracle,MySql,MsSql,DB2,Sybase.
3.简单介绍表空间,并写出一种建立表空间的方法。
(5分)
答:
表空间是Oracle逻辑存储结构的最高层,一个数据库就是若干个表空间组成的。
每个表空间对应操作系统中的一个或多个数据文件,但每个数据文件只能属于一个表空间。
Createtablespace表空间名datafile数据文件名;
五、程序题(35分)
1.创建表空间mysp1,文件大小5M,文件名可以复用,数据文件放在‘c:
\mysp1.dbf’。
createtablespacemysp1datafile'c:
\mysp1.dbf'size5mreuseuniformsize128k;
2.在mysp1表空间创建表myemp,字段名及类型内容同scott用户下的emp。
Createtablemyempasselect*fromscott.empdefaulttablespacemysp1
3.修改myemp表将所有销售人员(即职位(job)为销售salesman)的奖金(comm)加100
Updatemyempsetcomm=comm+100wherejob=‘salesman’
4.创建用户fox,密码f123,授予fox连接数据库,完全访问emp表和dept表的权限。
createuserfox2identifiedbyf123;
grantcreatesessiontofox;
grantselectonscott.emptofox;
5.使用emp表查询工资高于500或者是岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J?
select*fromscott.empwhere(sal>500orjob='MANAGER')andenamelike'J%';
6.使用emp表显示每个部门的每种岗位的员工的平均工资和最低工资?
selectdeptno,job,avg(sal)as平均工资,min(sal)as最低工资fromempgroupbydeptno,job;
7.编写PL/SQL程序块,实现查询某个雇员的岗位,用中文显示岗位名称。
CLERK普员工,SALESMAN销售,MANAGER经理,ANALYST分析师,PRESIDENT总裁(使用case语句)
setserverouton
declare
v_jobscott.emp.job%type;
v_shuchuvarchar2(30);
V_empnovarchar2(20);
begin
V_empno:
=&empno;
selectjobintov_jobfromscott.empwhereempno=v_empno;
casev_job
when'CLERK'thenv_shuchu:
='得职位是:
普通员工';
when'SALESMAN'thenv_shuchu:
='得职位是:
销售员';
when'MANAGER'thenv_shuchu:
='得职位是:
经理';
when'ANALYST'thenv_shuchu:
='得职位是:
分析师';
elsev_shuchu:
='总裁';
endcase;
dbms_output.put_line(v_empno||v_shuchu);
exception
whenno_data_foundthen
dbms_output.put_line('您输入的员工不存在!
');
end;
8.编写程序块,用PL/sql实现输出7369号员工的姓名。
Declare
V_nameemp.ename%type;
Begin
Selectenameintov_namefromempwhereempno=’7369’;
Dbms_output.put_line(v_name)
End;
9.编写函数annual_incomec,实现输入雇员的姓名,返回该雇员的年薪
createfunctionannual_incomec(namevarchar2)
returnnumberis
annual_salazynumber(7,2);
begin
--执行部分
selectsal*12+nvl(comm,0)intoannual_salazyfromempwhereename=name;
returnannual_salazy;
end;
/
10.编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。
createorreplaceproceduresp_pro6(spNamevarchar2)is
--定义
v_salemp.sal%type;
begin
--执行
selectsalintov_salfromempwhereename=spName;
--判断
ifv_sal<2000then
updateempsetsal=sal+sal*10%whereename=spName;
endif;
end;
11.创建角色myrole,将连接数据库,创建表,创建用户,创建角色,在任何模式修改表,完全访问emp表的权限赋予myrole。
createrolemyrole;
grantcreatesession,createtabl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle数据库应用 Oracle 数据库 应用 练习题