1. 数据库习题
1、数据模型包含三个方面的内容:___(数据结构)____、对数据的操作、____(完整性规则)____________。。
2、关系是以___(二维表) __的结构来表示实体与实体间的联系。
3、数据库系统的三级模式结构由外模式、 (模式 ) 和内模式组成。
4、查询设计器分为上下两部分,上半部分是表的显示区,下半部分是 ( 查询设计区) 。
5、表操作共有三种视图,分别是设计视图,打印视图, (版面预览) 视图。
6、( 控件 ) 是窗体上用于显示数据、执行操作、装饰窗体的对象。
7、数字字段类型又分为整型、 (长整型) 、单精度类型、 (双精度类型) 等类型。
8、 (某一具体应用所涉及的数据必须满足的语义要求) 是指向表中输入数据时设置的字段值所要遵循的约束条件,即用户自定义完整性约束。
9、索引的类型有 (唯一索引) 、 (主键索引) 、( 聚集索引/非聚集索引) 。
10、窗体通常是由 ( 窗体主体) 、页脚及 ( 页眉) 3部分组成。
三、简答题
1、简述什么是查询以及查询的作用?
数据库查询是从指定的表或视图中提取满足条件的记录,然后按照想要得到的输出类型定向输出查询结果,诸如浏览器、报表、表、标签等。
2、关系模型的主要特点是什么?
优点:
·关系模型是建立在严格的数学概念的基础上的。
·无论实体还是实体之间的联系都用关系来表示。对数据的检索结果也是关系(即表),因此 概念单一,其数据结构简单、清晰。
·关系模型的存取路径对用户透明,从而具有更高的数据独立性,更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。
缺点:
由于存取路径对用户透明,查询效率往往不如非关系数据模型。因此为了提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的负担。
3、解释属性、事件和方法的概念?
对象的具体特征称为“属性”
某一个触发的动作成为事件
触发事件后,具体的处理措施称之为“方法”。
2. 【数据库历年期末考试题】数据库原理期末考试题
2005-2006(2)数据库系统原理试题(A)参考答案及评分标准
一、填空题(每空1分,共14分)
1、 数据结构
2、 元组
3、 实体完整性 参照完整性
4、 1NF
5、 数据字典
6、 B R +BR B S B S +BR B S
7、 可串行的
8、 RAID
9、 动态Hash 方法 可扩展Hash 方法
10、 并发控制技术 数据库恢复技术
二、选择题(每题1分,共10分)
1、 D 2、A 3、A 4、B 5、C 6、C 7、C 8、C 9、C 10、A
三、简答题(每题4分,共16分)
1. 可以表示任何关系代数操作的5种基本代数操作是什么?
答: ⋃ , - , ⨯ , σ , π
注:1个1分,写对4个即可得4分
2. 关系数据库中常用的连接操作的实现算法有哪些?
答:循环嵌套连接算法(1分)、排序合并连接算法(1分)、hash 连接算法(1分)、索引连接算法(1分)。
3. 简述B 树和B+树的区别。
答:(1)B+树的叶子节点链在一起(2分)。(2)B+树的内节点不存放数据指针(2分)。
4. 什么是数据库事务?什么是数据库事务的原子性?
答:一个存取或更改数据库的程序的运行称为数据库事务(2分)。事务中的所有操作要么全部被成功的完成且这些操作的结果被永久地存储到数据库中,要么这
个事务对数据库和其它事务没有任何影响。这种性质称为事务的原子性(2分)。
四、综合题(每题12分,共60分)
(一)已知关系S ,P ,J ,SPJ 的关系模式为:
S (SNO ,SN ,CITY )
P (PNO ,PN ,COLOR )
J (JNO ,JN ,CITY )
SPJ (SNO ,JNO ,PNO ,QTY )
其中:SNO 为供应商号,SN 为供应商姓名,CITY 为所在城市;PNO 为零件号,PN 为 零件名称,COLOR 为颜色;JNO 为工程项目号,JN 为工程项目名称;QTY 为数量。
1、 试用
∏JN ((∏JNO ,PNO (SPJ )÷ ∏PNO (P ∏JNO ,JN (J ))(4分)
2、试用完成下列查询:把零件号为P2的零件重量增加5,颜色改为黄色。
UPDATE P
SET WEIGHT=WEIGHT+5,COLOR=’黄色’
WHERE PNO=’P2’; (4分)
3、试用完成下列查询:取出1个以上供应商提供的零件号。
SELECT PNO
FROM SPJ
GROUP BY PNO
HA VING COUNT (SNO )≥1 (4分)
(二) 设某商业集团数据库有三个实体集。一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品” 实体集,属性有商品编号、商品名、规格、单价等;三是“供应商” 实体集,属性有供应商编号、供应商名、地址等。
商店与商品间存在“销售”联系,每个商店可销售多种商品,每个商品也可放在多个商店档信胡销售,每个商店行拦销售一种商品,有月销售量;供应商与商品间存在着“供应” 联系,每个供应商供应多种商品,每种商品可以向多个供应商订购。供应商供应商品给每个商店有月供应量。
(1)试画出E-R 图,并在图上注明属性。
(2) 将E--R 图转换成关系模型,并指明主键和外键。
(1)E-R 图如图所示。
(6分,其中实体2分、联系2分、属性2分)
(2)此E--R 图转换成的关系模型如下
商店(商店编号,商店名,地址) 主码为商店编号
供应商(供应商编号,供应商名,地址) 主码为供应商编号
商品(商品编号,商品名,规格,单价)
销售(商店编号,商品号,月销售量)
主码为(商店编号,商品号),外码为商店编号和商品号
供应(供应商编号,商店编号,月供应量)
主码为(供应商编号,商店编号),外码为供应商编号,商店编号
共6分,由于学生的写法多样,教师根据具体情况给分。
(三)1.设关系模式R 其中: U={A, B, C, D, E, P}
F={A→B,C→P,E→A,CE→D}
求出R 的所有候选关键字。
解:由计算可知: (CE)的闭包 = {ABCDEP}
而 C 的闭包={CP}
E 的闭包={ABE} (2分)
所以:R 的候选键为坦配 : CE 。 (2分)
2.判断下面的关系模式最高属于第几范式) ,并说明理由。
R({A,B,C},{AC→B,AB→C,B→C})
答:是1NF ,(2分) 因为该关系的候选键之一为AB, 又因为有B→C,存在部分函数依赖(2分), 所以, 该关系为1NF.
3. 设关系R 具有属性集合{O, I, S, A, B},函数依赖集合{I->B, IS->A, A->O}。把R 分解成
3NF ,并使其具有无损连接性和函数依赖保持性。
答:{IB,ISA,AO}(4分)
(四) 设文件F 具有10000个记录,每个记录50字节,其中10字节用来表示文件的键值。每个磁盘块大小1000字节,指向磁盘块的指针占5字节,不允许记录跨两个块。
(1) 如果为文件F 建立简单hash 索引,使用100个hash 桶,则桶目录需要多
少磁盘块?平均每个桶需要多少磁盘块?
答:(1)1 (2)10000个记录/100个桶=100个记录每桶,(2分)100个记
录×50字节每记录/1000字节每块=5块(2分)
(2) 如果为文件F 建立B +树索引,各磁盘块尽量装满,需要多少磁盘块存储索
引?
答:求秩D :5D+10(D+1) D=67 (2分)
即每个叶节点能保存D-1=66个键值。所以叶节点数为⎡10000/66⎤
=152个。(2分)
上一层的内节点同样有67个指针,是一个67叉的节点,
⎡10000/67⎤=3,⎡3/67⎤=1(2分)
因此B+树的节点总数为152+3+1=156个。即需要156个磁盘块
存储B+树索引。(2分)
(五) 对于教学数据库S(S#,SNAME ,AGE ,SEX) ,SC(S#,C#,GRADE) ,C(C#,CNAME ,TEACHER) 。现有一个查询:检索至少学习W ANG 老师所授一门课程的男学生学号和姓名。
1. 给出该查询的关系代数表达式,并画出该表达式构成的语法树。
2. 使用启发式优化算法对语法树进行优化,得到优化的语法树。
解:(1) 关系代数表达式:
∏ S#,SNAME (σS.S#=SC.S#∧SC.C#=C.C#∧S.SEX=’男’ ∧teacher=’wang’(S×SC×C )) (3分)
∏ S#,SNAME
S.S#=SC.S#∧SC.C#=C.C#∧S.SEX=’男’ ∧teacher=’wang’
(3分)
∏ S#,SNAME σSC.C#=C.C#
σteacher=’wang’
∏ S#,C# S.SEX=’男’
s
结果树(3分) c sc (3分)
3. 几道数据库的基础试题,求大神指点,希望给出过程
1、检索年龄大于20岁的女同学的学号和姓名;
select sno,sname from s where sage>20 and ssex='女'
2、检索学习了课程号’C1’的学生学号,姓名与成绩并按成绩递减排序;
select sname,grade from s join sc on s.sno=sc.sno join c on sc.cno=c.no and name='C1' order by grade desc
M: 10 9 8 7 6 5 4 3 2 1
N: 0
2。 输出结果为: abc cw
4. 数据库试题
一.填空题.
8.一个表中可能有多个关键字,但在实际的应用中只能选择一个,被选用的关键字称为 __主关键字___
用来求满足条件的记录行数的函数是__count___。
二.选择题
10.在T-sql中使用(C)声明变量:
A.set B.select C.declare D.print
11.在下面关于数据库的说法中,错误的是(D)。
A.数据库有较高的安全性
B.数据库有较高的数据独立性
C.数据库中的数据可被不同的用户共享
D.数据库没有数据冗余
12.对于存储过程,下列那一项说法是错误的:(B)
A. 存储过程可以没有输入参数
B. 存储过程只能有一个输入参数
C. 存储过程可以有多个输入参数
D. 存储过程即可以有输入参数又可以有输出参数
15.SQL Server 2000是基于C/S体系结构的(B)型数据库管理系统。
A. 层次 B. 关系 C. 网状 D.树型
三.判断题
10.在修改检索结果中的列标题时,表中的列名并没有改变。(对)
7.在企业管理器中,必须先注册服务器后才能对其进行管理。(对)
3.使用BEGIN TRANSACTION开始的事务,必须使用ROLLBACK TRANSACTION进行回滚。 (对)
6.使用T-SQL编写程序时,假设已声明了两个整型变量@i和@j,可以使用set @i=5,@j=10语句给这两个变量赋值。(对)
8.两层Client/Server体系结构比三层Client/Server体系结构更安全可靠。(错)
5. IBM认证数据库考试试题
(1)已知表T1中有2行数据,T2中有3行数据,执行SQL语句
“select a.* from T1 a,T2 b”后,返回的行数为______
A、2行
B、3行
C、5行
D、6行
多表查询没有指定连接条件,会导致笛卡尔积的出现,返回行数等于2张表的行数乘积,返回6行记录
考察:对多表连接、笛卡尔积的理解
答案:A
(2)、已知表T1和T2的字段定义完全相同,T1,T2中各有5条不同的数据,其中T1有2条数据存在于表T2中,语句“select * from T1 union select * from T2”
返回的行数为_______
A、8行
B、10行
C、3行
D、12行
第二题? UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
考察:UNION 的理解
答案: A
(3)、 已知表T1含有字段ID、CourseID和Score,且数据为
ID CourseID Score
3 1 90
2 1 85
2 2 90
3 2 80
则语句“select id,sum(ScorE) from T1 group by ID”的执行结果为_________
A、 ID sum(ScorE)
—– ? ———-
3 ? 170
2 ? 175
B、 ID sum(ScorE)
—– ? ———-
2 ? 175
3 ? 170
C、 ID sum(ScorE)
—– ? ———-
2 ? 170
3 ? 175
D、 ID sum(ScorE)
—– ? ———-
3 ? 175
2 170
第三题 GROUP BY 对按照ID字段进行分组,同时对ID相同字段的ScorE进行求和,GROUP by 会自动对结果集进行排序所以答案选B
考察:group by 的理解
答案: B
(4)、电话号码表t_phonebook中含有100万条数据,其中号码字段PhoneNo上创建了唯一索引,且电话号码全部由数字组成,要统计号码头为321的.电话号码的数量,下面写法执行速度最慢的是_________
A、 select count(*) from t_phonebook where phoneno >= ‘321’ and phoneno < ‘321A’
B、 select count(*) from t_phonebook where phoneno like ‘321%’
C、 select count(*) from t_phonebook where substring(phoneno,1,3) = ‘321’
A>或者<操作符会采用索引查找
B:LIKE通配符在XXX%情况下会应用索引,如果在%xxx%等情况下不会应用索引
答案: C:采用函数处理的字段不能利用索引,例如substr()? 这个题好像写成java的函数了
答案: C
(5)、已知表tbl中字段land_ID建有索引,字段cust_id建有唯一索引,下列语句查询逻辑相同,其中执行效率最优的是
A、 SELECT * FROM tbl
WHERE land_id > 750
or (cust_id=180 or cust_id=560)
B、 SELECT * FROM tbl
WHERE (cust_id=180 or cust_id=560)
or land_id > 750
C、 SELECT * FROM tbl WHERE land_id > 750
UNION
SELECT * FROM tbl WHERE cust_id = 180
UNION
SELECT * FROM tbl WHERE cust_id = 560
D、 SELECT * FROM tbl WHERE land_id > 750
UNION
( SELECT * FROM tbl WHERE cust_id = 180
UNION ALL
SELECT * FROM tbl WHERE cust_id = 560
)
C/D相比较而言,D的执行效率更高一些
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录
采用UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。
(6)、员工技能表Staffskill结构如下,Staff和Skill字段建有唯一约束
staff VARCHAR2(10),
skill VARCHAR2(10)
哪条语句可以查询同时拥有技能A和技能B的员工
A、 select staff from Staffskill where skill=’A’ OR skill=’B’
B、 select staff from Staffskill where skill=’A’ AND skill=’B’
C、 select staff from Staffskill where skill=’A’ OR skill=’B’ group by staff
D、 select staff from Staffskill where skill=’A’ OR skill=’B’ group by staff having count(*)>1
答案:D
(7)员工表staff表结构如下
staffNo varchar2(10),
Email varchar2(50)
哪一个SQL语句查询出没有E_mail地址的员工号
A、select staffno from Staff where Email = NULL
B、select staffno from Staff where Email <> NULL
C、select staffno from Staff where Email is null
D、select staffno from Staff where Email is not null
答案: C
(8)Oracle数据库启动步骤的顺序为
1.Mount? 2.Open? 3.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、select col1,col2,col3 from T1 INTO T2 (col1,col2,col3)
B、INSERT T1 (col1,col2,col3) INTO T2(col1,col2,col3)
C、insert into T2 (col1,col2,col3) AS select col1,col2,col3 from T1;
D、insert into T2 (col1,col2,col3) select col1,col2,col3 from T1;
答案: 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)如下查询语句SELECT id_number,100/quantity from inventory如果quantity为空,则查询语句的第二个字段将返回
A、 a space
B、 a null value
C、 a value of 0
D、 a value of 100
E、 the keywork null
答案:B
(13)如下语句:SELECT i.id_number,m.id_number FROM inventory i,manufacturer m
WHERE i.manufacturer_id = m.id_number
Order by inventory.description
执行时是错误的,请问以下措施哪个能够改正这个错误?
A 在order by的子句中使用表的别名
B 在where子句中去掉表的别名
C 在where子句中用表名代替表的别名
D 在order by子句中去掉表名,只要字段名称即可
(如果2张表中,不同时存在字段名为description的话,D答案也是正确的)
答案:A
14)A表字段a 类型int中有100条记录,值分别为1至100。如下语句
SELECT a FROM A
WHERE A BETWEEN 1 AND 50
OR (A IN (25,70,95)
AND A BETWEEN 25 AND 75)
则如下哪个值在这个sql语句返回的结果集中
A、30? B、51? C、75? D、95
答案:A
15) 变量v_time = ‘23-MAY-00’,如下那条语句返回值为‘01-JAN-00’?
A SELECT ROUND(V_TIME,’DAY’) FROM DUAL;
B SELECT ROUND(V_TIME,’YEAR’) FROM DUAL;
C SELECT ROUND(V_TIME,’MONTH’) FROM DUAL;
D SELECT ROUND(TO_CHAR(V_TIME,’YYYY’)) FROM DUAL;
答案:B
16)关于索引(index)的说法哪些是错误?
A、创建索引能提高数据插入的性能
B、索引应该根据具体的检索需求来创建,在选择性好的列上创建索引
C、索引并非越多越好
D、建立索引可使检索操作更迅速
答案: A
(17)指出下面sql语句的错误之处:
select id_number “Part Number”,sum(price) “price” from inventory
where price > 50
group by “Part Number”
order by 2;
A、order by 2
B、from inventory
C、 where price > 50
D、group by “Part Number”
答案:D
(18)如下语句
if v_num > 5 then
v_example := 1;
elsif v_num > 10 then
v_example := 2;
elsif v_num < 20 then
v_example := 3;
elsif v_num < 39 then
v_example := 4;
else? v_example := 5;
如果v_num = 37,则v_example的值是多少?
A、1 ? B、2 C、3 D、4 E、5
答案:A