一套数据库笔试题.docx
- 文档编号:6990373
- 上传时间:2023-01-15
- 格式:DOCX
- 页数:11
- 大小:20.06KB
一套数据库笔试题.docx
《一套数据库笔试题.docx》由会员分享,可在线阅读,更多相关《一套数据库笔试题.docx(11页珍藏版)》请在冰豆网上搜索。
一套数据库笔试题
一套数据库笔试题
(1)已知表T1中有2行数据,T2中有3行数据,执行SQL语句
“selecta.*fromT1a,T2b”后,返回的行数为______
A、2行
B、3行
C、5行
D、6行
多表查询没有指定连接条件,会导致笛卡尔积的出现,返回行数等于2张表的行数乘积,返回6行记录
考察:
对多表连接、笛卡尔积的理解
答案:
A
(2)、已知表T1和T2的字段定义完全相同,T1,T2中各有5条不同的数据,其中T1有2条数据存在于表T2中,语句“select*fromT1unionselect*fromT2”
返回的行数为_______
A、8行
B、10行
C、3行
D、12行
第二题UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
考察:
UNION的理解
答案:
A
(3)、已知表T1含有字段ID、CourseID和Score,且数据为
IDCourseIDScore3190218522903280则语句“selectid,sum(ScorE)fromT1groupbyID”的执行结果为_________
A、IDsum(ScorE)
-
3170
2175
B、IDsum(ScorE)
-
2175
3170
C、IDsum(ScorE)
-
2170
3175
D、IDsum(ScorE)
-
3175
2170
第三题GROUPBY对按照ID字段进行分组,同时对ID相同字段的ScorE进行求和,GROUPby会自动对结果集进行排序所以答案选B
考察:
groupby的理解
答案:
B
(4)、电话号码表t_phonebook中含有100万条数据,其中号码字段PhoneNo上创建了唯一索引,且电话号码全部由数字组成,要统计号码头为321的电话号码的数量,下面写法执行速度最慢的是_________
A、selectcount(*)fromt_phonebookwherephoneno>=‘321’andphoneno
B、selectcount(*)fromt_phonebookwherephonenolike‘321%’
C、selectcount(*)fromt_phonebookwheresubstring(phoneno,1,3)=‘321’
A>或者
B:
LIKE通配符在XXX%情况下会应用索引,如果在%xxx%等情况下不会应用索引
答案:
C:
采用函数处理的字段不能利用索引,例如substr()这个题好像写成java的函数了
答案:
C
(5)、已知表tbl中字段land_ID建有索引,字段cust_id建有唯一索引,下列语句查询逻辑相同,其中执行效率最优的是
A、SELECT*FROMtbl
WHEREland_id>750
or(cust_id=180orcust_id=560)
B、SELECT*FROMtbl
WHERE(cust_id=180orcust_id=560)
orland_id>750
C、SELECT*FROMtblWHEREland_id>750
UNION
SELECT*FROMtblWHEREcust_id=180
UNION
SELECT*FROMtblWHEREcust_id=560
D、SELECT*FROMtblWHEREland_id>750
UNION
(SELECT*FROMtblWHEREcust_id=180
UNIONALL
SELECT*FROMtblWHEREcust_id=560
)
C/D相比较而言,D的执行效率更高一些
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
实际大部分应用中是不会产生重复的记录
采用UNIONALL操作符替代UNION,因为UNIONALL操作只是简单的将两个结果合并后就返回。
(6)、员工技能表Staffskill结构如下,Staff和Skill字段建有唯一约束
staffVARCHAR2(10),
skillVARCHAR2(10)
哪条语句可以查询同时拥有技能A和技能B的员工
A、selectstafffromStaffskillwhereskill=AORskill=B
B、selectstafffromStaffskillwhereskill=AANDskill=B
C、selectstafffromStaffskillwhereskill=AORskill=Bgroupbystaff
D、selectstafffromStaffskillwhereskill=AORskill=Bgroupbystaffhavingcount(*)>1
答案:
D
(7)员工表staff表结构如下
staffNovarchar2(10),
Emailvarchar2(50)
哪一个SQL语句查询出没有E_mail地址的员工号
A、selectstaffnofromStaffwhereEmail=NULL
B、selectstaffnofromStaffwhereEmailNULL
C、selectstaffnofromStaffwhereEmailisnull
D、selectstaffnofromStaffwhereEmailisnotnull
答案:
C
(8)Oracle数据库启动步骤的顺序为
1.Mount2.Open3.Nomount
A、3-1-2
B、2-3-1
C、2-1-3
D、3-2-1
答案:
A
(9)存在两个结构相同的数据库表T1(col1,col2,col3)、T2(col1,col2,col3),写出一SQL语句将所有T1数据导入到T2表
A、selectcol1,col2,col3fromT1INTOT2(col1,col2,col3)
B、INSERTT1(col1,col2,col3)INTOT2(col1,col2,col3)
C、insertintoT2(col1,col2,col3)ASselectcol1,col2,col3fromT1;
D、insertintoT2(col1,col2,col3)selectcol1,col2,col3fromT1;
答案:
D
10)一个表的字段为varchar2,如果建表时没有指定长度,则默认长度为:
A、1
B、25
C、38
D、255
E、4000
F、建表时varchar2类型字段必须指定长度
答案:
F
(11)用TRUNCATE和DELETE语句删除表中数据的区别
A、TRUNCATE命令不记录日志
B、TRUNCATE命令记录日志
C、DELETE命令不记录日志
答案:
A
(12)如下查询语句SELECTid_number,100/quantityfrominventory如果quantity为空,则查询语句的第二个字段将返回
A、aspace
B、anullvalue
C、avalueof0
D、avalueof100
E、thekeyworknull
答案:
B
(13)如下语句:
SELECTi.id_number,m.id_numberFROMinventoryi,manufacturerm
WHEREi.manufacturer_id=m.id_number
Orderbyinventory.description
执行时是错误的,请问以下措施哪个能够改正这个错误
A在orderby的子句中使用表的别名
B在where子句中去掉表的别名
C在where子句中用表名代替表的别名
D在orderby子句中去掉表名,只要字段名称即可
(如果2张表中,不同时存在字段名为description的话,D答案也是正确的)
答案:
A
14)A表字段a类型int中有100条记录,值分别为1至100。
如下语句
SELECTaFROMA
WHEREABETWEEN1AND50
OR(AIN(25,70,95)
ANDABETWEEN25AND75)
则如下哪个值在这个sql语句返回的结果集中
A、30B、51C、75D、95
答案:
A
15)变量v_time=‘23-MAY-00’,如下那条语句返回值为‘01-JAN-00’
ASELECTROUND(V_TIME,’DAY’)FROMDUAL;
BSELECTROUND(V_TIME,’YEAR’)FROMDUAL;
CSELECTROUND(V_TIME,’MONTH’)FROMDUAL;
DSELECTROUND(TO_CHAR(V_TIME,’YYYY’))FROMDUAL;
答案:
B
16)关于索引(index)的说法哪些是错误
A、创建索引能提高数据插入的性能
B、索引应该根据具体的检索需求来创建,在选择性好的列上创建索引
C、索引并非越多越好
D、建立索引可使检索操作更迅速
答案:
A
(17)指出下面sql语句的错误之处:
selectid_number“PartNumber”,sum(price)“price”frominventory
whereprice>50
groupby“PartNumber”
orderby2;
A、orderby2
B、frominventory
C、whereprice>50
D、groupby“PartNumber”
答案:
D
(18)如下语句
ifv_num>5then
v_example:
=1;
elsifv_num>10then
v_example:
=2;
elsifv_num
v_example:
=3;
elsifv_num
v_example:
=4;
elsev_example:
=5;
如果v_num=37,则v_example的值是多少
A、1B、2C、3D、4E、5
答案:
A
(19)如下语句:
begin
foriin1..8loop
ifi=2then
null;
else
ifi=5then
rollback;
else
ifi=8then
commit;
else
insertintotexample(A)values(i);
endif;
endif;
endif;
endloop;
commit;
end;
执行该语句后将有几条记录插入到表texample表中
A=1B=2C=3D=4
答案:
B
(20)设计一表结构,某字段要求存放员工编号,为固定10位长字符,采用哪种类型字段
A、CHAR
B、LONG
C、VARCHAR
D、varray
答案:
A
二、填空编程题
(1)、已知T1包含字段ID、ID2,T2包含字段ID,请在空白处完成SQL语句,查询表T1字段ID2取值存在于T2的ID取值集合中。
select*fromT1Awhere______(select*fromT2BwhereB.ID=A.ID2)
select*fromT1AwhereA.ID______(selectIDfromT2B)
selectA.*fromT1A,T2BwhereA.ID2______B.ID
答案:
1)ID2in2)3)=
select*fromT1Awhere_Exists_____(select*fromT2BwhereB.ID=A.ID2)
select*fromT1AwhereA.ID__in____(selectIDfromT2B)
selectA.*fromT1A,T2BwhereA.ID2__=____B.ID
(2)Oracle创建表时指定了以下的存储参数:
initial50K
next20K
pctincrease10
则这个表第三次扩展分配的空间大小为__________
答案:
22k
(3)、已知表T1包含字段ID,对同一个ID的取值,可能存在多条数据,请在空白处完成SQL语句,查询T1中对应有大于1条数据ID及其对应数据的条数。
selectID,count(*)fromT1groupbyID___________________
答案:
HAVINGCOUNT(*)>1
(4)、已知表T1、T2和T3的结构和数据如下
T1
NameIDCourseIDScore1190128521752295T2
IDCourse1数学2语文T3
IDName1张三2李四请写出查询的SQL语句,使得查询的结果为:
NameCourseScore
张三数学90
张三语文85
李四数学75
李四语文95
答案:
selectName,Course,ScorefromT1,T2,T3whereT3.ID=T1.NameIDandT1.CourseID=T2.ID
(5)、为了统计图书馆的每天的借出和还书的次数,定义了表T1,结构如下
字段名称类型说明DateStrvarchar(10)日期OprTypeinteger操作类型,0代表借,1代表还OprCountinteger操作次数已知表中没有数据,请写一个更新T1表的存储过程,每一个借出或还书的操作都调用该存储过程来更新统计数据,输入参数为:
操作时间,操作类型。
答案(T-SQL):
利用存储过程查找看本日期和操作类型有没有数据,如果没有则插入数据,如果有则更新数据使操作次数加1
createorreplaceprocedureupdate_pro(v_DateStrinvarchar,v_OprTypeininteger)as
vv_DateStrT1.DateStr%type;
vv_OprTypeT1.OprType%type;
cursormy_cursoris(selectDateStr,OprType,OprCountfromT1whereDateStr=v_DateStrandOprType=v_OprType);声明游标
begin
openmy_cursor;
fetchmy_cursorintovv_DateStr,vv_OprType;
ifmy_cursor%notfoundthen
insertintoT1(DateStr,OprType,OprCount)values(v_DateStr,v_OprType,1);
else
updateT1setOprCount=OprCount+1whereDateStr=v_DateStrandOprType=v_OprType;
endif;
commit;
closemy_cursor;
end;
(6)、表T1中有字段Field1,类型为varchar(20),请在T1上创建一个约束,保证Field1的前三个字符的取值为“aaa”、“bbb”或者“ccc”。
答案:
答案:
ALTERTABLET1
ADDCONSTRAINTSCHK_FILEDCHECK(Field1like‘aaa%’orField1like
‘bbb%’orField1like‘ccc%’);
想不出更加简练的表达式,或许还有更好实现发放
(7)、某大型商场的数据库中有一个日志表t_Log,它记录了每日的商品交易日志,t_Log包含了字段LogDatetime记录日志的生成时间,每日的日志数据为20,000-40,000条之间。
后发现日志表数据量过于庞大,需要删除6个月前的历史日志数据约3,000,000行。
请综合考虑性能等因素,写出删除历史数据的SQL语句。
答案(T-SQL):
此题应用存储过程分批删除并提交,如下是每次删除10000
createorreplaceprocedureDel_proas
v_BooleanBoolean:
=true;
v_countinteger:
=0;
begin
whilev_Booleanloop
deletefromt_LogwhereAdd_months(LogDateTime,6)
commit;
selectcount(*)intov_countfromt_logwhereAdd_months(LogDateTime,6)
ifv_count=0then
v_Boolean=false;
endif;
endloop;
end;
数据量比较大的情况,可以考虑分批删除,效率会高一些。
可使用循环控制语句中,使用rownum
(8)、请写出oracle的SGA区的几个组成部分(只写出4个主要部分即可)。
答案:
Sharedpool(共享池),DataBaseBufferCache(数据缓冲区)
RedoLogBuffer(重做日志缓冲区),LargePool
(9)、请写出ORACLE数据库表空间中的区管理(EXTENTMANAGEMENT)两种方式。
答案:
字典管理方式和本地管理方式
(10)、请写出你所知道的几个需要排序的DML的操作。
Select语句
Orderby
另外在查询语句中where子句中,判断函数尽量不要放在左边
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一套 数据库 笔试