资源描述
《数据库原理与应用》
一.单项选择题(每题1分,共20分)
1.目前市场上常见的DBMS 90%以上都是基于( C )数据模型的。
A.层次 B.网状 C.关系 D.面向对象
2.E-R图是在数据库设计中用来表示( A )的一种常用方法。
A.概念模型 B.逻辑模型 C.物理模型 D.面向对象模型
3.( C )是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
A.外模式 B.内模式 C.模式 D.概念模式
4.( B )也称存储模式,是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。
A.外模式 B.内模式 C.模式 D.概念模式
5.数据库的概念模型独立于( A )。
A.具体的机器和DBMS B.E-R图 C.信息世界 D.现实世界
6.在数据库中存储的是( C )。
A.数据 B.数据库模型 C.数据以及数据之间的联系 D.信息
7.规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:其每一个属性都是( B )。
A.互不相关的 B.不可分解的 C.长度可变得 D.互相关联的
8.在数据模型中有“型”和“值(或实例)”两个对应的概念。其中数据库的模式是一个( D )的概念,是一个相对( )的概念,而数据库在某一时刻的状态则是一个( )的概念,是一个相对( )的概念。
A.型;变化;值;不变 B.值;不变;型;变化
C.值;变化;型;不变 D.型;不变;值;变化
9.关系表A的属性个数为5,元组个数为10;关系表B的属性个数为6,元组个数为20.
则A与B的笛卡尔积A×B的属性有( D )个,元组个数有( )个。
A.30;200 B.11;30 C.30;30 D.11;200
10.父亲和子女的亲生关系属于( B )的关系。
A.1:1 B.1:n C.m:n D.不一定
11.在SQL语言中,删除关系表中的一个属性列,要用动词( D ),删除关系表中的一行或多行元组,要用动词( )。
A.delete,delete B.drop,drop C.delete,drop D.drop,delete
12.在SQL语言中,为关系模式增加一个属性要用动词( B),为关系表增加一行或多行元组要用动词( )。
A.insert,insert B.add,insert C.insert,add D.add,add
13.实体完整性约束和SQL语言中的( A )相对应。
A.primary key B.foreign key C.check D.都不是
14.参照完整性约束和SQL语言中的( B )相对应。
A.primary key B.foreign key C.check D.都不是
15.在我们的学生-课程数据库中,SC表上建立了两个外码约束,被参照表是Student表和Course表,则最适当的说法是:
A.Student表中的学生号Sno不能随意取值 B.Course表中的课程号Cno不能随意取值
C.SC表中学生号Sno不能随便 D.SC表中学生号Sno、课程号Cno均不能随意取值
16.如果在学生-课程数据库中的SC表上建立了参照完整性约束:
Foreign Key (Sno) References Student(Sno),
Foreign Key (Cno)References Course(Cno),
则( D )操作可能会违背该完整性约束。
A.在Student表上增加一行记录 B.在Course表上增加一行记录
C.在SC表上删除一行记录 D.更新SC表上的记录
17.关系R(X,Y,Z),函数依赖集FD={Y→Z,XZ→Y},则关系R是( C )。
A.1NF B.2NF C.3NF D.BCNF
18、表之间一对多关系是指_B_____。
A.一张表与多张表之间的关系 B.一张表中的一个记录对应另一张表中的多个记录
C.一张表中的一个记录对应多张表中的一个记录 D.一张表中的一个记录对应多张表中的多个记录
19、SQL的SELECT语句中,“HAVING条件表达式”用来筛选满足条件的( D )
A.列 B.行 C.关系 D.分组
20、SQL语言中INSERT、DELETE、UPDATE实现哪类功能 D 。
A.数据查询 B.数据控制 C.数据定义 D.数据操纵
二.填空题(每空1分,共18分):
1.从历史发展看来,数据管理技术经历了人工管理、 文件管理 和 数据库管理 三个阶段。
2.在SQL语言中,用符号 — 代表单个字符,用符号 % 代表0到多个字符。
3.在SQL语言中,为了使查询的结果表中不包含完全相同的两个元组,应在select的后面加上关键词 distinct 。
4、在SQL语句中,与表达式“工资 BETWEEN 1210 AND 1240”功能相同的表达式是 工资>=1210 and 工资<=1240 。
5、在SQL语句中,与表达式“性别 =‘男’or性别 =’女’”功能相同的表达式是 性别in(‘男’,’女’) 。
6.在数据库设计中,若关系模式设计得范式太低,可能会使得数据库存在数据冗余、修改复杂 、 插入异常 和 删除异常 四个方面的弊端。采取的解决方法就是对该关系模式进行 分解(或规范化) 。
7.根据关系理论,对一个关系模式的最起码的要求是 满足一范式 。
8.如果一个关系模式中不存在 非主属性 对 码(或候选码) 的 部分 函数依赖,则该关系模式就达到了二范式。
9、 关系的完整性一般包括实体完整性规则 参照完整性规则 自定义完整性规则
三.判断题:(每小题1分,共8分)
1.SQL Server 2005,Access,Oracle等DBMS,都是面向对象的数据库管理系统。( × )
2.在关系数据模型中,只有一种结构——关系。不论是实体还是实体之间的联系都是用关系来表达的。( ∨ )
3.一个数据库只能对应一个应用程序,即一个数据库只能为一个应用程序所用。( × )
4.SQL语言是SQL Server数据库管理系统的专用语言,其它的数据库如Oracle、Sybase等都不支持这种语言。(× )
5.对于一个基本关系表来说,列的顺序无所谓——即改变属性的排列顺序不会改变该关系的本质结构。( ∨ )
6.对于一个基本关系表来说,行的顺序无所谓——即将一条记录插入在第一行和插入在第五行没有本质上的不同。( ∨ )
7.在开发一个数据库应用系统的时候,无论什么时候,都是设计的数据库范式越高越好。( × )
8.一个全码的关系模式,其范式一定达到了三范式。( ∨ )
四.用SQL语言完成下面要求的功能:(每小题2分,共44分):
1、设某公司数据库中有关系模式如下:
职工(职工号,职工名,性别,出生日期)
公司(公司号,公司名,地址)
工作(职工号,公司号,工资)
1) 设置约束使所有职工的工资不能低于2000元。
2) 删除出生日期在1950年1月1日前的职工记录
3) 超过50岁职工的工资增加200元。
4) 查询每个公司女职工的平均工资。
5) 查询不在“希望”公司工作的所有职工的职工号。
1)alter table工作 add constraint C1 check(工资>=2000)
2)delete from职工where 出生日期<’1950-1-1’或 year(出生日期)<1950
3) update 工作 set工资=工资+200 where year(getdate()-year(出生日期))>=50
4) select公司号,公司名 avg(工资) 平均工资 from 职工,公司, 工作
where 职工.工号=工作.工号 and 公司.公司号=工作.公司号 and 性别=‘女’group by公司号
5)select 职工号 from 职工,工作,公司
where工作.职工号=职工.职工号and公司. 公司号=工作. 公司号
and 公司.公司名!=’希望’
2、给定一个学生-课程数据库,其中包括学生基本信息表Student(Sno,Sname,Sdept,Ssex,Sage)、课程表Course(Cno,Cname,Cpno,Ccredit)和学生选课表SC(Sno,Cno,Grade),其含义和数据类型如教材中所示,不再赘述。
(1)查询计算机系(CS)全体学生的基本信息。
Select * From Student Where Sdept=’CS’
(2)查询C02号课程不及格的学生的学号、考试成绩。
Select Sno ,Grade
From SC
Where Cno=’C02’ And Grade <60
(3)查询选修了数据库原理这门课的学生的学号、姓名、性别、课程号、学分、成绩。查询结果按照成绩降序排列。
Select Student..Sno, Sname, Ssex,, SC.Cno, Ccredit, Grade
From Student, SC, Course
Where Student.Sno=SC.Sno And SC.Cno=Course.Cno And Cname=’ 数据库原理 ’
(4)查询课程号为C02的课程的选课人数和平均考试分数。为了使得结果更清晰易懂,请在查询结果表中分别给这两列查询结果起别名“选课人数”和“平均分数”。
Select Count(Sno) 选课人数, AVG(Grade)平均分数
From SC
Where Cno=‘C02’
(5)查询每个学生的学号及其对应的选课门数。
Select Sno ,Count(Cno)
From SC
Group By Sno
(6)查询平均考试成绩高于85分的学生的学号、姓名、平均成绩,并将查询结果按照学号升序排列。
Select Student.Sno, Sname , AVG(Grade)
From Student, SC
Where Student.Sno=SC.Sno
Group By Student.Sno, Sname
Having AVG(Grade)>85
Order By Student.Sno
(7)已知学号由7位字符构成,其中的前5位代表班号,后2位代表学生在本班的学号。请将12345班学生C02号课程的考试成绩增加10%。
Update SC
Set Grade=Grade * (1+0.1)
Where Sno Like ‘12345%’ And Cno=’C02’
(8)建立SC(Sno,Cno,Grade)表。要求学号Sno由7位字符构成,课程号Cno由5位字符构成,成绩Grade由0-100之间(包括0和100)的整数构成。将(Sno,Cno)设为主码,并建立参照完整性约束,使得Sno和Cno分别参照Student和Course的相应属性取值。
Create Table SC
( Sno Char(7),
Cno Char(5),
Grade int Check ( Grade Between 0 and 100 ),
Primary Key (Sno, Cno),
Foreign Key (Sno) References Student (Sno).,
Foreign Key (Cno)References Course(Cno)
)
(9)在Student表中插入这样一条新生记录——学号:1234599,姓名:马小立,年龄20岁系别:IS。
Insert Into Student(Sno ,Sname, Sage, Sdept)
Values ( ‘1234599’ , ‘马小立’ ,20,‘IS’)
(10)在Student表中注册的12345班全体学生都要选修学号为C10的课程。请将这一选课信息插入到SC(Sno,Cno,Grade)表中。
Insert Into SC(Sno, Cno)
Select Sno ,‘C10’
From Student
Where Sno Like ‘12345%’
(11)学号为1234510的学生已经退学。请将Student表中该学生的基本信息删除。
Delete From Student
Where Sno=’1234510’
老师操作:
2、给定一个学生-课程数据库,其中包括学生基本信息表Student(Sno,Sname,Sdept,Ssex,Sage)、课程表Course(Cno,Cname,Cpno,Ccredit)和学生选课表SC(Sno,Cno,Grade),其含义和数据类型如教材中所示,不再赘述。
(1)查询计算机系(CS)全体学生的基本信息。
Select * from student where Sdept= ‘CS’
(2)查询C02号课程不及格的学生的学号、考试成绩。
Select sno 学号,grade考试成绩 from sc where Cno= ‘C02’ and Grade<60
(3)查询选修了数据库原理的学生的学号、姓名、性别、课程号、学分、成绩。查询结果按照成绩降序排列。
Select Student. Sno, Sname, Ssex, Course. Cno, Ccredit, Grade
From Student inner join SC on Student. Sno= SC. Sno
Inner join Course on Course. Cno= SC. Cno
Where Cname=’数据库原理’
Order by Grade desc
Select Student. Sno, Sname, Ssex, Course. Cno, Ccredit, Grade from Student,SC ,Course
Where Student. Sno= SC. Sno and Course on Course. Cno= SC. Cno
and Cname=’数据库原理’ Order by Grade desc
(4)查询课程号为C02的课程的选课人数和平均考试分数。为了使得结果更清晰易懂,请在查询结果表中分别给这两列查询结果起别名“选课人数”和“平均分数”。
Select count(grade) as 选课人数,avg(grade) as ’平均分数’
From sc
Group by cno
Having cno=’ C02’
(5)查询每个学生的学号及其对应的选课门数。
Select sno, count(sno),count(cno),count(grade)
From sc
Group by sno
(6)查询平均考试成绩高于85分的学生的学号、姓名、平均成绩,并将查询结果按照学号升序排列。
Select student.sno,sname,avg(grade)
From student inner join sc on student.sno= sc.sno
Group by sno
Having avg(grade)>85
Order by sno
(7)已知学号由7位字符构成,其中的前5位代表班号,后2位代表学生在本班的学号。请将12345班学生C02号课程的考试成绩增加10%。
Update set grade=grade*1.1
From sc
Where sno like ‘12345%’ and cno=’ C02’
(8)建立SC(Sno,Cno,Grade)表。要求学号Sno由7位字符构成,课程号Cno由5位字符构成,成绩Grade由0-100之间(包括0和100)的整数构成。将(Sno,Cno)设为主码,并建立参照完整性约束,使得Sno和Cno分别参照Student和Course 的相应属性取值。
Create Table SC
( Sno Char(7),
Cno Char(5),
Grade int Check ( Grade Between 0 and 100 ),
Primary Key (Sno, Cno),
Foreign Key (Sno) References Student (Sno).,
Foreign Key (Cno)References Course(Cno)
)
(9)在Student表中插入这样一条新生记录——学号:1234599,姓名:马小立,年龄20岁系别:IS。
Insert into student values(1234599, 马小立, 20, IS)
Insert Into Student(Sno ,Sname, Sage, Sdept)
Values ( ‘1234599’ , ‘马小立’ ,20,‘IS’)
(10)在Student表中注册的12345班全体学生都要选修学号为C10的课程。请将这一选课信息插入到SC(Sno,Cno,Grade)表中。
Insert Into SC(Sno, Cno)
Select Sno ,‘C10’
From Student
Where Sno Like ‘12345%’
(11)学号为1234510的学生已经退学。请将Student表中该学生的基本信息删除。
Delete From Student
Where Sno=’1234510’
4
第 4 页 / 共 4 页
展开阅读全文