数据库原理与应用复习1
一、填空题
1.实体之间的联系按照联系方式的不同可分为 一对一、一对多、和 多对多 。
2.数据库系统的核心是 数据库管理系统(DBMS)
3.在关系模型中,实体以及实体间的联系都是用 二维表格 来表示的。
4.在关系代数中专门的关系运算包括 选择 、_投影_、 连接 、除等运算。
5.SQL语言集数据查询、 数据定义 、 数据操纵 和 数据控制 功能于一体,充分体现了关系数据语言的特点和优点。
二、单项选择题
1.数据库类型是按照( B )来划分的。
A.文件形式 B.数据模型 C.记录形式 D.数据存取方法
2.关系演算的基础是( C )
A.形式逻辑中的逻辑演算 B.形式逻辑中的关系演算
C.数理逻辑中的谓词演算 D.数理逻辑中的形式演算
3.若要求分解保持函数依赖,那么模式分解一定能够达到( B )
A. 2NF B. 3NF C. BCNF D. 1NF
三、简答题
1.简述SQL语言的特点。
答:其特点如下:
1)综合统一
2)高度非过程化
3)面向集合的操作方式
4)以同一种语法结构提供两种操作方式
5)语言简洁,易学易用
2、什么是数据库系统?
答:数据库系统是一个计算机应用系统,它是把有关计算机硬件、软件、数据、和人员组合起来为用户提供信息服务的系统。因此,数据库系统是由计算机系统、数据库及其描述机制、数据库管理系统和有关人员组成的具有高度组织性的整体。
3、试述数据库完整保护的主要任务和措施。
主要任务:保障数据的正确性,有效性,协调性,提高数据对用户的可用性。
措施:适时检查完整约束条件,保持语意完整;控制并发操作,使其不破坏完整性;在系统出现故障后,即时恢复系统。
四、综合题
1.设有一个学生课程数据库,包括学生关系Student、课程关系Course、选修关系SC,图1所示:
Student
学号 Sno | 姓名 Sname | 性别 Ssex | 年龄 Sage | 所在系 Sdept |
95001 | 李勇 | 男 | 20 | CS |
95002 | 刘晨 | 女 | 19 | IS |
95003 | 王敏 | 女 | 18 | MA |
95004 | 张立 | 男 | 19 | IS |
Course
课程号 Cno | 课程名 Cname | 先行课 Cpno | 学分 Ccredit |
1 | 数据库 | 5 | 4 |
2 | 数学 | 2 | |
3 | 信息系统 | 1 | 4 |
4 | 操作系统 | 6 | 3 |
5 | 数据结构 | 7 | 4 |
6 | 数据处理 | 2 | |
7 | PASCAL语言 | 6 | 4 |
SC
学号 Sno | 课程号 Cno | 成绩 Grade |
95001 | 1 | 92 |
95001 | 2 | 85 |
95001 | 3 | 88 |
95002 | 2 | 90 |
95002 | 3 | 80 |
图1 学生-课程数据库
写出完成下列要求的SQL语句:
1) 查询所有年龄在20岁以下的学生姓名与年龄。
Select Sname,Sage from Student where Sage<20
2) 查询年龄不在20~23(包括20岁和23岁)之间的学生的姓名、系别和年龄。
Select Sname,Sdept,Sage from Student where Sage not between 20 and 23
3) 查询每个学生及其选修课程的情况。
Select Student.*,SC.* from Student,SC where Student.Sno=SC.Sno
2.把下面用关系表示的实体、实体与实体之间的联系,用E-R图表示出来,要求在图中表示联系的类型(1∶1、 1∶n、 m∶n)。
实体1:学生(学号,姓名,性别,年龄)
关键字为:学号
实体2:课程(课程号,课程名,学分数)
关键字为:课程号
实体1与实体2的联系:
学习(学号,课程号,成绩)
关键字为:学号+课程号
注:一个学生可以选多门课程,一门课程也可以被多个学生选,学生选课后有成绩。
3.某工厂生产多种产品,每种产品由不同的零件组装而成,有的零件可用在不同的产品上。产品有产品号和产品名两个属性,零件有零件号和零件名两个属性。根据语义设计E-R模型,并将E-R模型转换成关系模式,要求关系模式主码加下划线表示。(E-R模型,关系模型)
关系模型:
产品(产品号,产品名)
零件(零件号,零件名)
组装(产品号,零件号)
{分页}
数据库原理与应用复习2
一、填空题
1、图1是一个学生班级管理E-R图,图中描述的班级与学生两个实体
关系属于 一对多 。图中的矩形框代表__实体_,菱形框代表__实体间的联系__,椭圆框则代表 实体的属性 ,而像班号、学号文本下面带下划线的椭圆框代表 实体标识符 。
图1 学生班级管理E-R图
2、“一个事务中的各种操作要么全做,要么都不做”,这反映事务的一致性 特性。
3、传统的数据模型有 层次数据库 、网状数据库 和 关系数据库 三种,目前常见的Oracle、MySQL、MS SQlServer2008等数据库系统属于 关系数据库 。
4、数据库设计时,范式越高,关系模式就越____好____。
5、在关系数据库中,常见的数据库对象有表、索引、视图等,请再写出三个数据库对象:___约束__、__存储过程___、___触发器___。
6、三层客户/服务器结构模型的优点包括可重复使用、 良好的灵活性和可扩展性 、 可共享性 和 较好的安全性和可靠性 。
二、选择题
1、表在关系数据库中对应于三级模式的是( B )
A、存储模式 B、概念模式 C、物理模式 D、外部模式
2、DBA在数据库系统中扮演的角色是( A )
A、系统管理员 B、数据库操作员 C、数据库编程人员 D、数据录入员
3、关系的主属性不可以为空值(NULL),这属于( A )
A、实体完整性规则 B、参照完整性规则 C、域完整性规则 D、用户完整性规则
4、下面有关HAVING子句描述正确的是( A )
A、HAVING子句必须与GROUP BY 子句一起使用
B、HAVING子句不可以与GROUP BY子句一起使用
C、HAVING子句不可以与WHERE 子句一起使用
D、HAVING子句必须与WHERE 子句一起使用
5、对照图2的关系运算,下列哪一项实现查询所有男学生信息的功能( A )
A、B、
C、
D、
三、画图题
已知2元关系R和2元关系S,其关系如图3所示:
图3 关系R与关系S的记录集合
认真读图后,完成如下5小题。
R∪S=
A | B |
a1 | b1 |
a2 | b2 |
a2 | b3 |
R∩S=
A | B |
a1 | b1 |
a2 | b3 |
S―R=
A | B |
a2 | b2 |
∏B(R∪S)=
B |
b1 |
b2 |
b3 |
四、编程题
图5是学生信息管理的三个关系表,分别是学生表
(student)、班级表(classinfo)、专业表(expertion),如下所示。
图5 三个关系的记录集合
其中,各表的字段中英文对照如下:
学号:sno,姓名:sname,性别:sex,班号:cno,班名:cname,专业号:eno,专业名:ename。上述字段的类型全部规定为字符类型。认真读题后,用SQL语句来完成如下各题【提示:写SQL语句时一般不用中文作为表名及字段名】。
① 查给定班级“工程061”的所有学生信息(有sno、sname、sex列)
Select sno,sname,sex from student where cno=(select cno from classinfo where cname=’工程061’)
② 查专业名为“工业工程”的有哪些班级(有cno、cname列)
Select cno,cname from classinfo where eno=(select eno from expertion where ename=’工业工程’)
③ 查给定班级“设计071”的学生数量(有snum列)【提示:snum为人数别名】
Select count(*) as snum from student where cno=(select cno from classinfo where cname=’设计071’)
④ 按专业统计班级的数量(有eno、enum列) 【提示:enum为班数别名】
Select eno,count(*) as enum from classinfo group by eno
⑤ 查“设计071”班级的男学生姓名(有sname列)
Select sname from student where cno=(select cno from classinfo where cname=’设计071’) and sex=’男’
⑥ 查学生姓名中含有“张”字样的学生信息(有sno,sname,sex列)
Select sno,sname,sex from student where sname like ‘%张%’
⑦ 将专业号为“9801”,专业名为“机械电子”的专业信息插入到专业表中
insert into expertion values(‘9801’,’机械电子’)
⑧ 将“工程061”班级改为“工程071”
update classinfo set cname=’工程071’ where cname=’工程061’
⑨ 删除“01”班所有的学生信息
delete student where cno=’01’
⑩ 创建班级和专业两张表连接的视图,视图名称为VClassExpers
create view VClassExpers
as
select * from classinfo,expertion
where classinfo.eno=expertion.eno
{分页}
数据库原理与应用复习3
一、选择题
( A )1、以下哪个是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。
A).DBMS B).DB C).DBS D).DBA
( B )2、SQLserver数据库是属于_ 。
A) 层次数据库 B) 关系数据库
C) 网状数据库 D) 对象数据库
( A )3、ER图用于描述数据库的__。
A) 概念模型 B)数据模型
C) 逻辑模型 D) 存储模型
( C )4、SQL的视图是从( )中导出的。
A). 基本表 B). 视图 C). 基本表或视图 D). 数据库
( A )5、Dbo代表的是___
A). 数据库拥有者 B). 用户
C). 系统管理员 D). 系统分析员
( A )6、SQL语言中,条件年龄 BETWEEN 15 AND 35表示年龄在15至35之间,且( )。
A).包括15岁和35岁 B).不包括15岁和35岁
C).包括15岁但不包括35岁 D).包括35岁但不包括15岁
( BD )7.下面哪个属于数据操纵语言___。
A).create B).delete
C).drop D).select
( A )8.备份最近一次完整备份之后数据库发生改变的部分,称为______。
A).差异备份 B).完整备份 C).文件备份 D).简单备份
( D )9、创建学生信息表时,需要指明性别字段的默认值,可以通过 约束实现。
A) CHECK B) PRIMARY KEY
C) UNIQUE D) DEFAULT
( C )10、以下哪项不属于数据库级别的安全性_______
A)服务器角色 B)数据库用户
C)数据库角色 D)对象权限
( D )11、下列文件中不属于SQL Server数据库文件的是__
A)device_data.MDF B)device_log.LDF
C)device_data.NDF D)device_mdf.DAT
( C )12、SQL Server安装程序创建4个系统数据库,以下不是__系统数据库。
A)..master B).model C).pub D).tempdb
( A )13、数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)之间的关系是__
A) DBS包括DB和DBMS B) DBMS包括DB和DBS
C) DB包括DBS和DBMS D) DBS就是DB,也就是DBMS
( D )14、建立索引的目的_______。
A).降低SQL Server数据检索的速度 B).与SQL Server数据检索的速度无关
C).加快数据库的打开速度 D).提高SQL Server数据检索的速度
( C )15、在SQL Server 2008中,下面哪个不是使用视图的好处______
A) 为用户集中需要的数据,简化了数据的用户操作
B) 对用户隐藏了数据库设计的复杂性
C) 保存查询语句供下次使用
D) 组织数据导出到其它应用程序
( D )16、在MS SQL Server中,用来显示存储过程的正文信息的系统存储是_____
A. sp_dbhelp B. sp_db C. sp_help D. sp_helptext
( D )17、下列标识可以作为局部变量使用的是______。
A)..[@myvar] B).@my var C).my var D).@myvar
( C )18、执行存储过程up_student,以下语句不正确的是_______。
A).exec up_student B).execute up_student
C).exec procedure up_student D).up_student
( D )19、模式查找A表中的姓名like '[^王李]% ',下面哪个结果是可能的___。
A).王华 B). 李三 C).王李林 D).张林
( D )20、关于SQL Server中的存储过程,下列说法中正确的是 。
A).不能有输入参数 B).没有返回值
C).可以自动被执行 D).可以省略exec执行
二、填空题
1、 数据库系统具有数据的内模式、外模式、和___ 概念模式 _三级模式结构。
2、 SQL2008 数据库登录有二种模式,windows身份验证模式和___SQL Server和Windows身份验证模式(混合模式)____。
3、 申明局部变量时,变量名必须以标记符_____@___开头。
4、 实体间有多种关系,我们学校辅导员和班级之间的关系是___一对多_______________。
5、 查询时只需显示前10条元组,则在select语句中使用关键字是________top__________。
6、 每个触发器有二个存在内存中的特殊的表,其不存在于数据库中,当对数据表进行insert操作时,可以在触发器中引用,且受insert操作影响的表是____inserted表____________。
7、 数据库用户名是从_____登录名____映射而来的。
8、 在建立索引过程中,根据键值对行进行物理排序,使得表中记录顺序和索引顺序一致称为_ __ 聚集索引 _
9、 SQL Server数据库生成的脚本文件的扩展名是_ SQL______。
10、 从数据库的存储结构上看,数据库由若干个用户可视的对象构成,主要应用于面向用户的数据组织和管理,这属于数据库的 数据库对象 。
三、判断题
1、SQL数据库的数据模型属于网状数据模型。( 错 )
2、数据库设计中的E-R图是数据库的概念设计的结果。 ( 对 )
3、显示数据库信息的系统存储过程的文本内容的命令是sp_helptext。( 对 )
4、视图是表或视图中的数据的复制。 ( 错 )
5、SQL语中一次注释多行命令是— —。 ( 错 )
6、SQL server2008中数据库角色设置权限的对象是服务器登录名。( 对 )
7、在一个表中,不可以将多个字段的组合设为主键。 ( 错 )
8、创建数据表的命令是create table命令。 ( 对 )
9、sql 语句中,order by是对查询结果实现分组,。 ( 错 )
10、在select语句中区分字母的大小写,如create与CREATE是二个不同的命令。( 错 )
四、简答题
1、阐述说明数据库中表、视图、查询三个数据库对象从数据表现形式及存储的区别。
1、视图是已经编译好的sql语句。而表不是
2、视图没有实际的物理记录。而表有。
3、表是内容,视图是窗口
4、表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。
5、表是内模式,视图是外模式 。
6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
8、视图的建立和删除只影响视图本身,不影响对应的基本表。
2、简述主键的功能和作用。
功能:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。
作用:
1)保证实体的完整性;
2)加快数据库的操作速度
3)在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4)ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
五、综合题
(一)、将下图所示的E-R图转换为关系模式,并在主键下添加横线,外键下添加波浪线。
关系模式:
商品(商品编号,商品名,规格,单价)
商店(商店编号,商店名,地址)
职工(职工编号,姓名,性别,业绩,商店编号,聘期,月薪)
销售(商店编号,商品编号,月销售量)
(二)、已知某商店销售系统中,有实体顾客(customers),订单(orders),订单详情(orderdetails),商品类型(types),商品(goods),其间关系如下。请根据图示,完成以下设计过程。
1、 写出创建orderdetails表的SQL语句,价格可以为小数,其中包括主键、外键约束。
Create table orderdetails(
D_id int not null,
O_id int not null,
G_id int not null,
D_price float,
D_number int,
Primary key(d_id),
Foreign key(O_id) references orders(O_id),
Foreign key(G_id) references goods(G_id)
)
2、 用T-SQL语句创建视图vw_orders,各订单中的商品编号(g_id)、商品名称(g_name)、订单号(o_id)、订单生成时间(o_date)。保证对视图修改时满足创建视图时的谓词条件。
要求:写出创建视图vw_ orders的SQL语句;修改视图,给视图加密。
Create view vw_orders
As select orderdetails.g_id,goods.g_name,orders.o_id,orders.o_date from orders
join orderdetails on orderdetails.o_id=orders.o_id
join goods on orderdetails.g_id=goods.g_id
with check option
go
Alter view vw_orders
with encryption
As select goods.g_id,goods.g_name,orders.o_id,orders.o_date from orders
join orderdetails on orderdetails.o_id=orders.o_id
join goods on orderdetails.g_id=goods.g_id
go
3、已知一存储过程,参数为读者编号,返回值为该读者借阅图书的数量。
请查询借阅号为‘0016584’的读者借阅图书的数量,写出调用存储过程的语句,要求在屏幕上打印出数量。
exec 存储过程名 ‘0016584’
或:execute 存储过程名 ‘0016584’
或省略前面的关键字: 存储过程名 ‘0016584’
4、设计一触发器tri_del,维护两个表间的参照完整性规则。使得在删除orders表中一条记录时,能自动删除orderdetails表中相关订单。
create trigger tri_del on orders
for delete as
delete orderdetails where o_id in(select o_ID from deleted)
{分页}
WebShop查询复习
1、 查询湖南省的所有男性的会员或年龄在30以下的会员的会员号、会员名称、性别、籍贯和年龄;
select c_cardid,c_Truename,c_Gender,c_Address,year(GETDATE())-year(c_birth) as age from Customers where (c_Gender='男'and c_Address like '湖南%') or year(GETDATE())-year(c_birth)<30
2、 查询所有年龄不在20~25岁之间的会员的名称、籍贯和年龄;
select c_Truename,c_Address,year(GETDATE())-year(c_birth) as age FROM Customers
where year(GETDATE())-year(c_birth) not between 20 and 25
3、 查询来自“湖南株洲”和“湖南长沙”两地会员的详细信息;
Select * from customers where left(c_address,4) in ('湖南株洲','湖南长沙')
4、 查询姓“黄”而且名字只有两个汉字的会员的会员名、真实姓名、电话和电子邮箱;
Select * from customers where c_truename like '黄%' and LEN(c_TrueName)=2
5、 查询一个商品的商品名称中包含有“520”字样;
Select * from goods where g_name like '%520%'
6、 查询商品类别为 01的商品的商品号、商品名称和商品价格,并且根据商品价格进行降序;
Select * from goods where t_id='01' order by g_price desc
7、 需要了解一个订单的总金额,并根据订单总额进行升序排列;
Select o_id,sum(d_price*d_number) from orderdetails group by o_id order by sum(d_price*d_number)
8、 查询订单总额大于5000的订单信息,并按升序排列;
select o_id,SUM(d_price*d_number) from OrderDetails group by o_ID
having SUM(d_Price*d_Number)>5000
9、 查询每个商品的商品号、商品名称和商品类别名称
select g_id,g_Name,t_Name from goods join Types on goods.t_ID=Types.t_ID
10、 针对employees表中的每一名员工,在orders 表查找处理过订单并且送货模式为“邮寄”的所有订单信息(使用exists 子查询);
select * from Orders where exists(select * from Employees where Employees.e_ID=Orders.e_ID and Orders.o_SendMode='邮寄')
11、 建立一个临时表Temp,原表数据来源于Goods;
select * into Temp from Goods
12、 求每一类商品的平均价格;
select t_id,avg(g_Price) from goods group by t_id
13、 将商品中的类别名称为”家用电器”的商品折扣修改为0.8;
update Goods set g_Discount=0.8 where t_ID=(select t_ID from Types where t_Name='家用电器')
14、 删除类别名称为 “家用电器”的商品的基本信息;
delete Goods where t_ID=(select t_ID from Types where t_Name='家用电器')
{分页}
WebShop存储复习
1、 向屏幕输出1~100之间能被3整除的整数之和;
declare @sum int=0,@n int=1
while @n<=100
begin
if @n%3=0
begin
set @sum=@sum+@n
end
set @n=@n+1
end
print @sum
2、 向屏幕输出,使用@birthday=’1999-4-4’、@age、@name,在customers表中的会员的最大的年龄赋值给变量@age;
declare @birthday datetime
declare @age int,@name char(8)
set @birthday='1999-4-14'
select @age=MAX(YEAR(getdate())-year(c_birth)) from Customers
select @name=c_Name from Customers where @age=YEAR(getdate())-year(c_birth)
print '----输出的结果----'
print '@birthday的值'
print @birthday
print 'age:'
print @age
print 'name:'
print @name
3、 在goods表中的商品价格设置为对应的等级,在2000元以下设置为“低档商品”,2000-6000元之间设置为“中档商品”,6000元以上为“高档商品”;
select top 10 g_id,g_name,g_price,等级=case
when g_price>6000 then '高档商品'
when g_price>=2000 and g_price<6000 then '中档商品'
else '低档商品'
end
from goods
4、 有一字符串“ GuangZhou College ”,要对其进行左右边空格;字符串全部转换为大写,提取左边字符:“GuangZhou”;
declare @string varchar(20)=' GuangZhou College '
print '去除左空格:('+ltrim(@string)+')'
print '去除右空格:('+rtrim(@string)+')'
print '转换为大写:('+upper(@string)+')'
print '提取左边字符('+left(ltrim(@string),9)+')'
5、 编写一个存储过程up_goodsbytype ,实现对表查询类别为“01”的商品信息;
create procedure up_goodsbytype @typy char(2)
as
select * from Goods where t_ID=@typy
exec up_goodsbytype '01'
6、 创建存储过程up_orders,要求该存储过程返回所有订单的详细信息,包括订单号、订单日期、订单总额、会员名称和处理员工;
create procedure up_orders
as
select o_id,o_date,o_sum,c_TrueName,e_name from Orders
join Customers on customers.c_id=orders.c_id
join Employees on Employees.e_ID=Orders.e_ID
exec up_orders
推荐您阅读更多有关于“”的文章