Oracle数据库编程1.docx
- 文档编号:515164
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:19
- 大小:49.72KB
Oracle数据库编程1.docx
《Oracle数据库编程1.docx》由会员分享,可在线阅读,更多相关《Oracle数据库编程1.docx(19页珍藏版)》请在冰点文库上搜索。
《Oracle数据库编程》练习
一、选择题(未标明多选的均为单选题)
1.关于Oracle中的实例描述,下列说法正确的是(多选):
(cd)
A.实例是保存在硬盘上的文件,它不会随着数据库的启动/关闭而存在或消失。
B.实例是内存中的结构,是一种访问数据库的方式。
C.可以用语句Selectinstance_nameFROMv$instance获得实例名。
D.一个实例可以访问多个数据库。
2.关于数据类型Char和Varchar2的描述,下列说法正确的是(多选):
(bd)
A.Char和varchar2都是字符型数据,Char是变长字符型,Varchar2是定长字符型。
B.某个字段类型为Char(200),那么对于这个字段的任何记录来说,所占的实际长度都为200个字符。
C.某个字段类型为Varchar2(200),那么对于这个字段的任何记录来说,所占的实际长度都为200个字符。
D.对于相同长度的Char和Varchar2类型数据,char的性能通常要比varchar2高。
3.关于对空值的描述,下列说法正确的是:
(a)
A.包含空值的任何算术表达式结果都等于空。
B.包含空值的连接字符串||等于与空字符串连接,结果还是空值。
(实践过,不是空值)
C.空值做为判断条件是写法是:
判断字段=null。
(isnull/isnotnull)
D.表Emp中有5条记录,empID分别为1,2,3,4,5,那么查询语句Select*fromEmpwhereempIDnotin(2,3,4,null)的执行后结果是2条记录。
(实践过,为0条记录)
4.已知05年7月25日是星期一,那么函数
TO_CHAR(NEXT_DAY(TO_DATE(’25-JUL-05’,’DD-MON-RR’),’MONDAY’),’DD-Month-YYYY’)结果是:
(B)
A.25-JULY-2005B.01-August-2005
C.25-JULY-2005D.26-JULY-2005
验证:
selectTO_CHAR(NEXT_DAY(TO_DATE('25-7月-05','DD-MON-RR'),'星期一'),'DD-Month-YYYY')fromdual;(验证的时候注意数据库的字符集问题)
5.如果EMPID所选的值是60494,下列函数执行后,结果是哪一项:
(b)
SELECTDECODE(empid,38475,'Terminated',60494,'LOA','ACTIVE')FROMEMP;
A.60494B.LOA
C.TerminatedD.ACTIVE
6.查询语句SELECTSUBSTR(‘HelloWorld’,4,5)FROMDUAL;返回结果,正确的是:
(a)
A.loWorB.World
C.lloWoD.loWo
7.查询语句SELECTROUND(13.57),ROUND(13.57,1),ROUND(13.57,-1),TRUNC(13.57,-2)FROMDUAL返回结果,正确的是:
(c)
A.13.57,13.6,10,13
B.13,13.5,14,0
C.14,13.6,10,0
D.13.6,13.5,11,13
8.语句WHERESALBETWEEN1000AND4000与下列哪个子句等价:
(a)
A.WHERESAL>=1000ANDSAL<=4000
B.WHERESAL>1000ANDSAL<4000
C.WHERESAL>=1000ORSAL<=4000
D.WHERESAL>=1000ANDSAL<4000
9.关于对UNION和UNIONALL的描述,下列描述正确的是(多选):
(ac)
A.UNION操作符返回两个查询结果集的并集,并去掉重复行。
B.UNIONALL操作符返回两个查询结果集的并集,并去掉重复行。
C.UNION操作符返回两个查询结果集的并集,并缺省按照第一列升序排序。
D.UNIONALL操作符返回两个查询结果集的并集,并缺省按照第一列升序排序。
10.数据库中有两张表,employees(雇员表),departments(部门表),如下图所示,如果想要获得全部雇员的信息,不管这个雇员是否被分配了部门,以下答案正确的是:
(d)
A.SELECTlast_name,department_nameFROMemployeesJOINdepartments(+)
B.SELECTlast_name,department_nameFROMemployees(+)JOINdepartments
C.SELECTlast_name,department_nameFROMemployeeseRIGHTJOINdepartmentsdON(e.department_id=d.department_id)
D.SELECTlast_name,department_nameFROMemployeeseLEFTJOINdepartmentsdON(e.department_id=d.department_id)
11.SQL语句SELECTdepartment_id,job_id,avg(salary)FROMemployeesWHEREdepartment_id=100GROUPBYjob_idHavingavg(salary)>2000中有错误的是哪一个子句:
(a)
A.SELECT子句B.WHERE子句
C.GROUPBY子句D.Having子句
12.关于子查询的描述,下列说法正确的是(多选):
(abd)
A.子查询必须要写在括号内。
B.子查询可以写在FROM,WHERE,HAVING子句中。
C. D.子查询可以用在UPDATE的SET子句中。 13.关于模糊查询中通配符“_”描述正确的是: (b) A.“_”代表多个字符B.“_”代表一个字符 C.“_”不能与“%”一同使用D.“_”代表代表零个或多个字符 14.下列哪个约束只能定义在列级定义上: (b) A.UNIQUEB.NOTNULL C.CHECKD.PRIMARYKEY E.FOREIGNKEY 15.关于约束PRIMARYKEY和UNIQUE描述正确的是: (b) A.PRIMARYKEY和UNIQUE都可以定义在一个或多个列上。 B.UNIQUE可以定义在多个列上,PRIMARYKEY不可以。 C.PRIMARYKEY和UNIQUE约束的列都可以为空值。 D.PRIMARYKEY和UNIQUE约束在一个表中都可以有任意个。 16.关于对索引的描述,下列正确的是: (a) A.在一个表上可以建立多个索引。 B.索引可以增加查询的速度,所以建立索引越多越好。 C.索引通常建立在欲查询的表的数据量很大,并且查询最终得到的结果集也很大的情况下。 D.索引删除之后,索引所基于的表中的数据也被删除了。 17.SQL语句的执行顺序是: (c) selectfromwheregroupbyhavingorderby A.123456B.234561 C.234516D.124563 18.查看序列S1的当前值,应该使用下列的哪一项: (b) A.S1.NEXTVALB.S1.CURRVAL C.S1.MAXVALD.S1.MINVAL 19.关于ROWNUM的描述,下列正确的是: (d) A.ROWNUM是每个表中实际存在的列。 B.ROWNUM是每条查询语句执行完成之后,给每行数据填充的行号,行号从0开始。 (从1开始) C.ROWNUM做为条件表达式时,可以使用任何算术运算符。 D.ROWNUM经常用来做为分页查询。 20.关于TRUNCATE和DELETE命令,下列描述正确的是: (c) A.两者都属于DML语句。 B.两者都不属于DML语句。 C.执行TRUNCATE命令之后,该会话中先前未提交的事务自动提交。 D.执行TRUNCATE命令之后,该会话中先前未提交的事务自动回滚。 21.关于使用AlTERTABLE进行修改表的定义,下列描述正确的是(多选): (bcd) A.使用该命令可以修改表的名称B.使用该命令可以修改列的名称 C.使用该命令可以修改列的数据类型D.使用该命令可以修改列的精度 22.关于Oracle中对锁的描述正确的是: (d) A.修改某个表中的某行数据,Oracle会自动锁住整个表。 (验证过,只是锁住一行) B.执行查询语句,Oracle会自动对要查询的结果加上锁。 (没有锁上) C.锁在被相关操作申请并持有后,该操作执行结束后,会马上释放。 (事务结束后才释放) D.会话A在时间T1修改资源X,未提交;会话B在时间T2修改资源Y,未提交;会话A在时间T3修改资源Y,未提交;会话B在时间T4修改资源X;会产生死锁。 23.关于事务的描述,下列说法正确的是: (b) A.执行一个DDL或DCL语句后,事务自动开始。 B.执行一个DDL或DCL语句后,事务自动提交。 C.执行一个DDL或DCL语句后,事务自动回滚。 D.执行一个DDL或DCL语句后,对当前事务没有影响。 24.关于Oracle中用户的描述,下列选项正确的是(多选): (cd) A.Oracle中的所有用户都可以执行CreateUser命令。 (错) B.使用CreateUser命令新建一个用户之后,该用户自动拥有了登录权限。 (错) C.使用“DropUser用户名cascade”命令执行删除用户之后,该用户下的所有对象也自动被删除。 D.用户的授权可以通过直接授权,也可以通过角色来间接授权。 25.对于权限的授予,下列说法正确的是: (d) A.WITHGRANTOPTION选项可以实现系统权限的传递。 (对象权限) B.WITHADMINOPTION选项可以实现对象权限的传递。 (系统权限) C.以上两种说法都正确。 D.以上两种说法都不正确。 26.下面哪个SQL语句可以查询出名字当中有’A_B’这样的员工? (单选)(d) A.select*fromempwhereenamelike'%A\_B%'escape'\\'; B.select*fromempwhereenamelike'%A_B%'escape; C.select*fromempwhereenamelike'A_B%'escape'%'; D、select*fromempwhereenamelike'%A\_B%'escape'\'; 27.在SQLPlus当中,在命令提示行可以输入哪些命令(多选)? (abcd) A.pl/sql程序块 B.SQL*Plus命令 C.安全命令 D.SQL命令 28.在A、B两张表当中使用外连接A? ? ? OUTERJOINB,如果期望返回记录中包含B表当中所有的记录,那么你在问号出需要写: (单选)d A.任何一种外连接 B.左外连接 C.交叉连接 D.右外连接 E.内连接 29.下列语句当中对于日期型数据使用trunc语句正确的是(单选)c A.SELECTTRUNC(TO_DATE(12-Feb-99,DD-MON-YY,'YEAR'))"Date"FROMDUAL; B.TRUNC=TO_DATE('12-Feb-99','DD-MON-YY'),'YEAR',"Date"FROMDUAL; C.SELECTTRUNC(TO_DATE('12-Feb-99','DD-MON-YY'),'YEAR')"Date"FROMDUAL; D.date=TRUNC(TO_DATE('12-Feb-99','DD-MON-YY'),'YEAR')"Date"FROMDUAL; 30.预使用grant语句授予权限,你必须(多选): bd A.被授予GRANTROLEPRIVILEGE系统权限 B.被授予带有ADMINOPTION的系统权限 C.被授予GRANTANYPRIVILEGE的系统权限 D.被授予带有GRANTOPTION的系统权限 31.下列SQL是什么含义? (单选)b SELECTemployee_idFROMemployeesWHEREcommission_pct=.5ORsalary>23000; A.返回那些工资的50%大于23000的员工信息 B.返回那些佣金比率为50%或者工资大于23000的员工信息 C.运行时错误 D.语法错误 32.下列哪个语句能够返回-33的绝对值并且显示别名为Absolute(单选)c A.SELECTABS("-33")AbsoluteFROMDUAL; B.SELECTABS('-33')"Absolute"FROMDUAL; C.SELECTABS(-33)"Absolute"FROMDUAL; D.SELECTABS(-33),AbsoluteFROMDUAL; 33.学生表结构如下 STD_IDNUMBER(4) COURSE_IDVARCHAR2(10) START_DATEDATE END_DATEDATE 下列子句中哪些是正确的? ce A.SUM(start_date)(number类型) B.AVG(start_date)(number类型) C.COUNT(start_date) D.AVG(start_date,end_date)(参数无效) E.MIN(start_date) F.MAXIMUM(start_date)(没有这个函数) 34.视图emp_dept_vu结构如下,哪些语句是错误的? (单选)e ColumnNameTypeRemarks FromtheEMPLOYEEStable: EMP_NAMEVARCHAR2(30) JOB_IDVARCHAR2(20) SALARYNUMBER DEPARTMENT_IDNUMBER FromtheDEPARTMENTStable: DEPT_NAMEVARCHAR2(30) A.SELECT*FROMemp_dept_vu; B.SELECTdepartment_id,SUM(salary)FROMemp_dept_vuGROUPBYdepartment_id; C.SELECTdepartment_id,job_id,AVG(salary)FROMemp_dept_vuGROUPBYdepartment_id,job_id; D.SELECTjob_id,SUM(salary)FROMemp_dept_vuWHEREdepartment_idIN(10,20)GROUPBYjob_idHAVINGSUM(salary)>20000; E.全对,没有错误。 35.下面哪些语句是DML(bcd) A.COMMIT B.MERGE C.UPDATE D.DELETE E.CREATE F.DROP 36.有一张employees表,结构如下 EMPLOYEE_IDNUMBERPrimaryKey FIRST_NAMEVARCHAR2(25) LAST_NAMEVARCHAR2(25) HIRE_DATEDATE 当执行deleteemployees之后,将发生什么事情? (单选)c A.因为违反主键约束,所以你将得到一个错误。 B.表当中的数据和表的结构都将被删除。 C.只有表当中的数据被删除,结构还是存在嘀。 D.因为这个语句是存在语法错误的,根本不会被执行。 37.当你把所有圆括号从下面这个语句拿走之后,将发生什么事情? (单选)C SELECTe.employee_id,(.15*e.salary)+(.5*mission_pct)+(s.sales_amount*(.35*e.bonus))ASCALC_VALUEFROMemployeese,salesWHEREe.employee_id=s.emp_id; A.在CALC_VALUE列显示的数据都将变低。 B.在CALC_VALUE列显示的数据都将变大。 C.在CALC_VALUE列显示的数据没有变化。 D.有语法错误,不会执行。 38.下面哪个(些)语句是SQL*Plus命令D A.INSERT B.UPDATE C.SELECT D.DESCRIBE E.DELETE F.RENAME 39.按照如下格式显示系统当前时间Monday,01June,2001(单选)C A.SELECTTO_DATE(SYSDATE,'FMDAY,DDMonth,YYYY')FROMdual; B.SELECTTO_CHAR(SYSDATE,'FMDD,DYMonth,YYYY')FROMdual; C.SELECTTO_CHAR(SYSDATE,'FMDay,DDMonth,YYYY')FROMdual; D.SELECTTO_CHAR(SYSDATE,'FMDY,DDDMonth,YYYY')FROMdual; E.SELECTTO_DATE(SYSDATE,'FMDY,DDDMonth,YYYY')FROMdual; 40.下面哪些是Oracle的约束? A.CASCADE B.UNIQUE C.NONUNIQUE D.CHECK E.PRIMARYKEY F.CONSTANT G.NOTNULL 41.当你想从当前模式下删除视图EMP_DEPT_VU,你将用哪个语句? (单选)D A.DROPemp_dept_vu; B.DELETEemp_dept_vu; C.REMOVEemp_dept_vu; D.DROPVIEWemp_dept_vu; E.DELETEVIEWemp_dept_vu; F.REMOVEVIEWemp_dept_vu; 二、程序设计题(本大题共9小题,共50分) 某公司程序员张某设计了一套学生选课系统,其中涉及到的主要表结构如下: a.学生信息表: 表名STU,主要用来保存学生的基本信息,字段信息表述如下: { Sno: 流水号数值型主键 SID: 学生编号,字符唯一 SName: 学生姓名,长度为20的变长字符串,非空; Sex: 性别,长度为2的定长字符串,值只能为"男"或"女"; Indate: 入班日期,日期型 ClassID: 所在班级编号,数值型,外键, } b.班级信息表: 表名CLA,主要用来保存班级的基本信息,字段信息表述如下: { clano: 流水号数值型主键 ClaID,班级编号,字符唯一 ClaName,班级名称,长度为20的变长字符串,唯一约束 } c.课程信息表: 表名SUBJECT,主要用来保存课程的基本信息,字段信息表述如下: { subno: 流水号数值型主键 SubID,课程编号字符唯一 SubName,课程名称,长度为20的变长字符串,唯一约束 } d.学生选课信息表: 表名SELECT_SUBJECT,主要用来保存学生所选课程的基本信息,字段信息表述如下: { ID: 流水号数值主键 StuID,学生编号外键 SubID,课程编号,外键 Grade,成绩数值型 } 请您根据以上张某的设计,完成以下问题: 1、请写出以上四张表的创建表语句,要求在建表的同时建立相应的约束。 --学生信息表 createtableSTU( Snonumberprimarykeynotnull, SIDcharunique, SNamevarchar2(20)notnull, Sexchar(3)constraintstu_sex_ckcheck(Sexin('男','女')), Indatedate, ClassIDchar, constraintstu_ClassID_fkforeignkey(ClassID)referencesCLA(ClaID) ) --班级信息表 createtableCLA( clanonumberprimarykeynotnull, ClaIDcharunique, ClaNamevarchar2(20)unique ) --课程信息表 createtableSUBJECT( subnonumberprimarykeynotnull, SubIDcharunique, SubNamevarchar2(20)unique ) --学生选课信息表 createtableSELECT_SUBJECT( ID numberprimarykeynotnull, StuIDchar, SubIDchar, Gradenumber, constraintsss_StuID_fkforeignkey(StuID)referencesSTU(SID), constraintsss_SubID_fkforeignkey(SubID)referencesSUBJECT(SubID) ) 2、创建一个序列。 --创建一个序列 createsequencemysequence startwith1 incrementby1 minvalue1; 3、使用序列,分别向班级表插入3条数据,每个班级5名学生,3门课程数据,以及每个学生的选课数据。 --向班级表插入3条
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 编程