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条