ORACLE试题2011年信息管理与信息系统演示教学.doc

上传人:1595****071 文档编号:51533166 上传时间:2022-10-18 格式:DOC 页数:25 大小:193.50KB
返回 下载 相关 举报
ORACLE试题2011年信息管理与信息系统演示教学.doc_第1页
第1页 / 共25页
ORACLE试题2011年信息管理与信息系统演示教学.doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《ORACLE试题2011年信息管理与信息系统演示教学.doc》由会员分享,可在线阅读,更多相关《ORACLE试题2011年信息管理与信息系统演示教学.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Good is good, but better carries it.精益求精,善益求善。ORACLE试题2011年信息管理与信息系统-ORACLE试题(50分)一、判断题(9分)(每小题1分)1SGA是针对某一服务器进程而保留的内存区域,它是不可以共享的。(对)2用户进程可以直接操纵数据库。(错)3Orderby子句仅对检索数据的显示有影响,并不改变表中行的内部顺序。(对)4从一个表中删除元组时,delete和droptable命令可以起到同样的效果。(对)5%rowtype用来保证数据类型和变量的长度与数据库中的数据列相一致。(错)6与主键不同,惟一键可以是null值。(错)7Delet

2、e可以有选择地删除记录,使用rollback语句可以取消这个命令的执行。(对)8Createtableasselect能够创建一个复制表对象。(对)9使用having子句是为了限制groupby子句返回的行的个数。(对)一、填空(4分)(每小题1分)(1)数据库系统由数据库、数据库管理系统、数据库管理员、用户和应用程序组成。(2)Oracle10g产品数据库组件的安装盘、CompanionCD、客户端、CRS和Gateway等组成。(3)数据库的启动方式有:startupnomount非安装启动、startupmountdbname安装启动、startuprestrict约束方式启动、star

3、tupforce强制启动方式、startuppfile=参数文件名。(4)数据库的关闭模式有:shutdownnorma正常方式关闭数据库、shutdownabort直接关闭数据库、shutdownimmediate立即方式关闭数据库。二、简答题(7分)(每小题1分)(1)如何查看已定义表的方案、表空间、存储参数、块空间管理参数等信息?selectschemefromtable_nameanalyzetableempcomputestatisticsselecttable_name,num_rows,avg_row_len,num_rows*avg_row_lenfromuser_tables

4、wheretable_name=selecttable_name,initial_extent,next_extent,min_extents,max_extents,pct_increasefromuser_tables;(2)ORACLE中数据类型CHAR、VARCHAR、VARCHAR2有什么不同?答:char(n)长度为n的定长字符串。varchar(b)最大长度为n的变长字符串。varchar2(n)变长字符型数据类型,最小长度为一个字节,最大长度为4000字节,应用时必须指定它的长度。区别有以下三点:1CHAR的长度是固定的,而VARCHAR2的长度是可以变化的,比如,存储字符串“

5、abc,对于CHAR(20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2(20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。2CHAR的效率比VARCHAR2的效率稍高。3目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用V

6、ARCHAR2而不是VARCHAR。(3)什么是ROWID?有哪几类?如何使用?答:ROWID是数据库的一个伪列,建立表的时候数据库会自动为每个表建立ROWID列,用来唯一标识一行记录。Oracle的ROWID分为两种:物理ROWID和逻辑ROWID。它主要记录表内各行的物理地址,以便能够快速定位并用来唯一标识数据行。Oracle的ROWID用来唯一标识表中的一条记录,是这条数据在数据库中存放的物理地址。索引组织表使用逻辑ROWID,其他类型的表使用物理ROWID。(4)截断表与删除表有何区别?答:表删除包括表的定义和关联对象(规则、索引、约、触发器、主键,等)截断表命令则仅仅删除了表中所有的

7、数据行。表的结构和所有的索引仍然继续存在,直到你输入删除表的命令。(5)对SQL语句进行优化的常用策略有那些?答:1、尽可能地减少多表查询2、以不相关子查询替代相关子查询3、只检索需要的列4、用带IN的条件子句等价替换OR子句5、根据表出现在FROM中的顺序,ORDERED使ORACLE依此顺序对其连接.6、将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表.(6)当元组含有空值时?空值是否参与聚集操作?答:空(NULL)值表示数值未知。空值不同于空白或零值。没有两个相等的空值。比较两个空值或将空值与任何其它数值相比均返回未知,这是因为每个空值均为未知。空值通常表示未知、不可用或将在以后

8、添加的数据。组函数忽略空值。(7)在什么情况下使用层次查询?怎样将表中存储的具有层次关系的数据,以层次的结构方式查询出来?答:当数据之间的关系是层次关系,如有零部件组成的汽车结构和家族图谱用oracle10g可以很方便的查询各种层次关系。层次查询的语法如下:ELECTLEVEL,column,expr.FROMtableWHEREconditionSTARTWITHconditionCONNECTBYPRIORcolumn1=column2|column1PRIORcolumn2;其中伪列LEVEL用于返回层次结构的层次(1:根行;2:第二级行;3:第三级行);STARTWITH子句用于指定层

9、次查询的根行;CONNECTBY子句用于执行父行和子行之间的关系,当定义父行和子行的关系时,必须使用PRIOR关键字,并且column1和column2对应于父键列或者子键列。当使用层次查询显示层次结构的表行数据时,可以采用从顶向下或者从底向上两种方式显示数据。三、操作题(写出相关操作的SQL语句)(20分)(每小题5分)1.表的创建学生成绩管理项目中每个关系的属性可作以下定义:部门信息DEPT部门编号:varchar2(8)PK部门名称:varchar2(40)部门经理:varchar2(8)地址:varchar2(80)部门人数:number答:Createtabledept(Dept_i

10、dvarchar2(8)primarykey,Dept_namevarchar2(40),Dept_mangervarchar2(8),Dept_adsvarchar2(80),Dept_numnumber(5);学生基本信息STUDENT部门编号:varchar2(8)FK学号:varchar2(12)PK姓名:varchar2(20)notnull性别:varchar2(1)orchar学生类型:varchar2(1)orchar入学日期:date籍贯:varchar2(20)身份证号:varchar2(18)详细地址:varchar2(60)出生日期:date所学专业:varchar2(

11、20)民族:varchar2(20)电话:varchar2(20)缴费总计:number备注:varchar2(80)答:Createtablestudent(Dept_idvarchar2(8),Foreignkey(dept_id)referencesdept(dept_id),Stu_numvarchar2(12)primarykey,Stu_namevarchar2(20)notnull,Stu_gendervarchar2(1),Stu_typevarchar2(1),Stu_startdatedate,Stu_nativevarchar2(20),Stu_idvarchar2(18

12、),Stu_adsvarchar2(60),Stu_borndate,Stu_majorvarchar2(20),Stu_nationvarchar2(20),Stu_telvarchar2(20),Stu_costnumber(5),Stu_psvarchar2(80);课程信息COURSE课程号:varchar2(8)PK课程名称:varchar2(40)notnull开设年级:varchar2(8)学时数:number答:Createtablecourse(Course_idvarchar2(8)primarykey,Course_namevarchar2(40)notnull,Cour

13、se_classvarchar2(8),Course_timenumber(5);成绩单REPORT_CARD学号:varchar2(12)FK课程号:varchar2(8)FK学期:varchar2(8)成绩:number(5,2)备注:varchar2(80)答:Createtablereport_card(Stu_numvarchar2(12),Foreignkey(stu_num)referencesstudent(stu_num),Course_idvarchar2(8),foreignkey(course_id)referencescourse(course_id),Termvar

14、char2(8),Marknumber(5,2),Card_psvarchar2(80);(学号,课程号)为PK写出完成下列操作的正确的SQL语句:(1)创建学生成绩管理项目中四个基表:部门信息表dept、学生基本信息表student、课程信息表courses和成绩单表report_card。(2)修改courses表修改表名为courses1Altertablecourserenametocourses1增加字段pcourses_no类型varchar2,长度为10Insertintocourses1Values(pcourses_no,varchar2,10)修改字段pcourses_no

15、,长度为8Altertablecourses1modifypcourses_novarchar2(8)删除字段pcourses_noAltertablecourse1droppcourses_no(3)删除表STUDENTDroptablestudent2.表记录的操作在DEPT表中插入数据(写出SQL语句)101,信息工程系,null,校3号教学楼,48102,电子商务系,null,校4号教学楼,null103,管理系,null,校5号教学楼,null201,校长办公室,null,校办公北楼4楼,null202,校人事处,null,校办公北楼3楼,null203,校教务处,null,校办公南

16、楼2楼,null答:Insertintodept(dept_id,dept_name,dept_manger,dept_ads,dept_num)Values(101,信息工程系,null,校3号教学楼,48)Insertintodept(dept_id,dept_name,dept_manger,dept_ads,dept_num)Values(102,电子商务系,null,校4号教学楼,null)Insertintodept(dept_id,dept_name,dept_manger,dept_ads,dept_num)Values(103,管理系,null,校5号教学楼,null)Ins

17、ertintodept(dept_id,dept_name,dept_manger,dept_ads,dept_num)Values(201,校长办公室,null,校办公北楼4楼,null)Insertintodept(dept_id,dept_name,dept_manger,dept_ads,dept_num)Values(202,校人事处,null,校办公北楼3楼,null)Insertintodept(dept_id,dept_name,dept_manger,dept_ads,dept_num)Values(203,校教务处,null,校办公北楼2楼,null)在STUDENT表中插

18、入数据(写出SQL语句)101,2002101001,李丽,1,1,sysdate,山西,14240119840101001,山西太原,19840101,信息管理与信息系统,汉,0351-2222222,null,null101,2002101002,王娜,1,1,sysdate,山西,14240119840501001,山西大同,19840501,信息管理与信息系统,汉,0351-3333333,null,null101,2002101003,张大虎,1,1,sysdate,山西,14240119840815021,山西运城,19840815,计算机科学与技术,汉,0731-2222222,

19、null,null答:Insertintostudent(dept_id,stu_num,stu_num,stu_gender,stu_type,stu_stardate,stu_native,stu_id,stu_ids,stu_born,stu_major,stu_nation,stu_tel,stu_cost,stu_ps)Values(101,2002101001,李丽,1,1,sysdate,山西,14240119840101001,山西太原,19840101,信息管理与信息系统,汉,0351-2222222,null,null)Insertintostudent(dept_id,s

20、tu_num,stu_num,stu_gender,stu_type,stu_stardate,stu_native,stu_id,stu_ids,stu_born,stu_major,stu_nation,stu_tel,stu_cost,stu_ps)Values(101,2002101002,王娜,1,1,sysdate,山西,14240119840501001,山西大同,19840501,信息管理与信息系统,汉,0351-3333333,null,null)Insertintostudent(dept_id,stu_num,stu_num,stu_gender,stu_type,stu

21、_stardate,stu_native,stu_id,stu_ids,stu_born,stu_major,stu_nation,stu_tel,stu_cost,stu_ps)Values(101,2002101003,张大虎,1,1,sysdate,山西,14240119840815021,山西运城,19840815,计算机科学与技术,汉,0731-2222222,null,null)在COURSES表中插入数据(写出SQL语句)101001,数据库系统设计,48,101000101002,软件需求工程,36,101000;101003,软件工程导论,36,101000;答:Insert

22、intocourses(couse_id,course_name,course_class,course_time)Values(101001,数据库系统设计,48,101000)Insertintocourses(couse_id,course_name,course_class,course_time)Values(101002,软件需求工程,36,101000)Insertintocourses(couse_id,course_name,course_class,course_time)Values(101003,软件工程导论,36,101000)在report_card表中插入数据(写

23、出SQL语句)2002101001,101001,null,88,null2002101001,101002,null,78,null2002101001,101003,null,94,null2002101002,101003,null,92,null2002101002,101001,null,84,null2002101003,101002null,74,null答:Insertintoreport_card(stu_num,course_id,term,mark,card_ps)Values(2002101001,101001,null,88,null)Insertintoreport

24、_card(stu_num,course_id,term,mark,card_ps)Values(2002101001,101002,null,78,null)Insertintoreport_card(stu_num,course_id,term,mark,card_ps)Values(2002101001,101003,null,94,null)Insertintoreport_card(stu_num,course_id,term,mark,card_ps)Values(2002101002,101003,null,92,null)Insertintoreport_card(stu_nu

25、m,course_id,term,mark,card_ps)Values(2002101002,101001,null,84,null)Insertintoreport_card(stu_num,course_id,term,mark,card_ps)Values(2002101003,101002null,74,null)将课程号为101002课程的成绩普提5分。(写出SQL语句)答:Updatereport_cardSetmark=mark+5Wherecourse_id=101002将report_card中学期为空的记录全部设置为20060701(写出SQL语句)答:Updaterep

26、ort_cardSetterm=20060701Wheretermisnull删除掉系代号为101并且姓名为张大虎的学生记录。(写出SQL语句)答:DeletefromstudentWheredept_id=101andstu_name=张大虎删除student表中的全部数据。(写出SQL语句)答:Droptablestudent3.表的查询(写出SQL语句)(1)简单查询查询部门信息表DEPT的信息。Select*fromdept查询部门信息表DEPT中部门编号与部门名称。Selectdept_id,dept_nameFromdept查询学生基本信息表STUDENT中学生的学号、姓名和年龄。

27、Selectstu_num,stu_name,stu_ageFromstudent查询部门编号为201或202的部门部门名称、部门经理、地址。Selectdept_name,dept_manger,dept_adsFromdeptWheredept_id=201ordept_id=202查询1984年出生的学生的学生信息。Select*FromstudentWherestu_born=1984查询山西学生的学号、姓名、年龄及所在系。Selectstu_num,stu_name,stu_age,stu_majorFromstudentWherestu_native=山西查询学生的学号、姓名、出生

28、日期及所在系,输出结果先按照部门编号升序排序,部门编号相同按照出生日期降序排序。Selectstu_num,stu_name,stu_born,stu_majorFromstudentGroupbydept_idOrderbydept_iddesc查询各院系人数。Selectcount(stu_num)Fromstudent查询院系人数多于500的院系及其人数。Selectdept_name,count(stu_num)FromstudentWherecount(stu_num500)(2)子查询与连接查询查询信息工程系的学生的学号、姓名、性别、入学日期及籍贯。Selectstu_num,st

29、u_name,stu_gender,stu_stardate,stu_nativeFromstudent,deptWheredept_namein(selectdept_nameFromdeptWheredept_name=信息工程系)查询其他系比101系某一学生年龄小的学生学号、姓名、性别、入学日期和年龄。Selectstu_num,stu_name,stu_gender_stu_stardate,stu_ageFromstudentWherestu_ageany(selectstu_ageFromstudentWheredept_id=101)查询其他系比101系所有学生年龄都要小的学生学

30、号、姓名、性别、入学日期和年龄。Selectstu_num,stu_name,stu_gender_stu_stardate,stu_ageFromstudentWherestu_ageSELECTstudent_no,101FROMSTUDENTWHEREDEPT_NO=101UNIONSELECTstudent_no,101001FROMreport_cardWHEREcourse_no=101001;INTERSECTSQLSELECTstudent_no,101FROMSTUDENTWHEREDEPT_NO=101INTERSECTSELECTstudent_no,101001FROM

31、report_cardWHEREcourse_no=101001;4.数据库的复杂查询本实验以SCOTT方案中的表为例来实现。(1)横向小计与纵向小计查询查询雇员表emp,统计不同部门(deptno)、不同岗位(job)的平均工资,同时生成横向小计统计(部门的平均工资)。SELECTdeptno,job,avg(sal)fromscott.empGROUPBYROLLUP(deptno,job);在基础上生成纵向小计,统计岗位的平均工资。SELECTdeptno,job,avg(sal)fromscott.empGROUPBYCUBE(deptno,job);有些统计结果只会用到deptno列

32、,有些统计结过只会用到job列,查看每项统计结果到底使用了哪些列。(2)外连接查询查询部门名称以及该部门中的人员姓名(有些部门没有雇员)。selectdept_name,enamefromscott.emp,scott.deptwheree.dept_id=d.dept_id(+);查询数据库中是否存在部门没有雇员,或者雇员不曾分配到各部门的情况。selectdept_name,enamefromscott.emp,scott.deptwheree.dept_id(+)=d.dept_id;(3)多列子查询查询与SMITH部门和岗位完全相同的所有雇员信息。Select*Fromscott.em

33、pWherejob=(selectjobFromscott.deptWheredept_name=SMITH)显示工资、补助与SCOTT完全一致的所有雇员名、工资、补助。Selectename,sal,supplyFromscott.empWheredept_namein(Selectdept_nameFromscott.deptWheredept_name=SCOTT)(4)层次查询通过层次查询显示除CLERK岗位外其他雇员之间的上下级关系selectename,jobfromscott.empstartwithmgrisnullwithoutdept_name=clerkconnectby

34、mgr=priorempno;通过层次查询MARTIN的所有领导姓名。SELECTLPAD(,3*(LEVEL-1)|enameename,LPAD(,3*(LEVEL-1)|jobjobFromscott.empSTARTWITHename=MARTINCONNECTBYempno=PRIORmgr;查询课程表中各课程之间的先修关系。Selectlpad(,3*(level-1)|course_no课程编号,lpad(,3*(level-1)|course_name课程名称fromcoursesSTARTWITHperiodISNULLCONNECTBYPERIOD=PRIORCOURSE_

35、NO;(5)特殊子查询查询各个部门基本工资在01000,10012000,20013000,30014000,4000以上五个等级的雇员人数。Selectcount(deptno)Fromscott.empWheresal0andsal1001andsal2001andsal3001andsal4000查询高于部门平均工资的员工信息。Select*Fromscott.empWheresal(Selectavg(sal)Fromscott.emp)显示部门工资总和高于雇员工资总和三分之一的部门名及工资总和。Selectcount(sal),dept_nameFromscott.empGroupb

36、ydeptnoHavingcount(sal)(selectcount(sal)3Fromscott.emp)四、思考题(10分)(每小题2分)(1)方案的主要作用是什么?与用户有什么关系?答:方案和用户是对应的,所以需要创建使用该方案的用户并授权与该用户相应权限。(2)试述表级约束与字段级约束的不同。答:字段级约束:从形式上看,在每列定义完后马上定义的约束,在逗号之前就定义好了。有些时候,字段级约束无法实现某种约束的定义,比如联合主键的定义,就要用到表级约束。(3)如果经常需要使用特定格式给某表插入数据,为了避免输入错误,可以将INSERT语句存放到SQL脚本中,并使用替代变量为表插入数据。

37、考虑如何实现?答:insertintoscriptsvalues(insert.)(4)以下哪种情况不会提交事务:使用EXIT退出SQL*Plus?COMMIT?使用Ctrl+Break中断SQL*Plus?CREATETABLE操作?答:Createtable操作(5)假定有产品信息表product(产品编号product_no、产品名称product_name、组成部件components、部件数量quantity,成本价格price),假设产品由多种部件组成,部件又由一系列零件组成,零件由物料或这其他零件构成;现在要求:查询机架部件P070100-420机架部件的生成树。注:创建产品信息表productCreatetableproduct(Product_nonumber(5)primarykeyProduct_namevarchar2(10)Componentsvarchar2(10)Quantitynumber(10)Pricenumber(8)构建测试记录查询select*fromtablenamestartwithcond1connectbycond2wherecond3;学院:工商管理学院班级:信息0901班姓名:任园园学号:20090630-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁