数据库试题,SQL数据库面试题 急急急
其实数据库试题的问题并不复杂,但是又很多的朋友都不太了解SQL数据库面试题 急急急,因此呢,今天小编就来为大家分享数据库试题的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
【数据库历年期末考试题】数据库原理期末考试题
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分)
SQL试题求解
1
IF OBJECT_ID('学生表')IS NOT NULL
DROP TABLE学生表
GO
create table学生表--建立学生表.
(
学号 int not null,--学号,姓名,年龄,性别,家庭住址,联系电话
姓名 varchar(10) not null,--姓名
性别 varchar(2)
年龄 int,
联系电话 varchar(10),
家庭住址 varchar(50),
联系电话 varchar(20),
check(性别='男' OR性别='女'),
)
1.1
delete学生表
insert学生表(学号,姓名,年龄,性别,联系电话,学历)
values(1,"A",22,"男","123456","小学")
insert学生表(学号,姓名,年龄,性别,联系电话,学历)
values(2,"B",21,"男","119","中学")
insert学生表(学号,姓名,年龄,性别,联系电话,学历)
values(3,"C",23,"男","110","高中")
insert学生表(学号,姓名,年龄,性别,联系电话,学历)
values(4,"D",18,"女","114","大学")
1.2
update学生表
set学历='大专'
where联系电话 like'11%'
go
1.3
delet学生表
where性别='女',姓名 like'B%'
go
1.4
select姓名,学号
from学生表
where学历='大专',年龄<22
go
1.5
select姓名,性别
from学生表
order by年龄 desc
go
2.1
use stu
IF OBJECT_ID('Student')IS NOT NULL
DROP TABLE Student
GO
create table Student--建立学生表.
(
学号 int not null,
姓名 varchar(10) not null,--姓名
性别 varchar(2)
年龄 int,
所在系 varchar(10),
check(性别='男' OR性别='女'),
)
2.2
use stu
select学生表.学号
from Student As学生表,SG As成绩表
where学生表.学号=成绩表.学号,成绩表.成绩<60
go
2.3
use stu
select姓名,性别,年龄
from Student
where所在系='计算机系',性别='男',姓名 like'张%'
go
2.4
use stu
insert Student(学号,姓名,年龄,性别,所在系)
values(05020,"高平",19,"女","积极管理系")
go
4.1
删除student表中学号为2004009的学生的信息
4.2
在stu数据库的student表中创建列名为姓名,家庭住址的视图student_view
4.3
查询stu数据库的student表中前9条信息
4.4
在stu数据库的student表中创建查询学号,姓名,家庭住址的存储过程student_pro
4.5
在stu数据库的student表中创建带输入参数的存储过程
4.6
查询Sg表中课程号为06的平均成绩
SQL数据库面试题 急急急
a)select pname as'商品名',avg(qty) as平均销售量 from s,p,m where m.city='上海' and s.mno=m.mno and p.pno=s.pno,select p.Pno,p.pname,sum(s.qty)
from s left join p on s.pno=p.pno left join m on p.Mno=m.Mno
where m.city='上海市'
group by p.Pno,p.pname,p.city,p.color
b)、先删除Sale表的外键PNO,再删除gds表。
c)联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系
区别:1、视图是已经编译好的sql语句。而表不是
2、视图没有实际的物理记录。而表有。
3、表是内容,视图是窗口
4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改
5、表是内模式,视图是外模式
6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
8、视图的建立和删除只影响视图本身,不影响对应的基本表。
OK,本文到此结束,希望对大家有所帮助。