[大二下]数据库复习整理

数据库原理与应用复习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的联系:

学习(学号,课程号,成绩)

关键字为:学号+课程号

注:一个学生可以选多门课程,一门课程也可以被多个学生选,学生选课后有成绩。 


blob.png


3.某工厂生产多种产品,每种产品由不同的零件组装而成,有的零件可用在不同的产品上。产品有产品号和产品名两个属性,零件有零件号和零件名两个属性。根据语义设计E-R模型,并将E-R模型转换成关系模式,要求关系模式主码加下划线表示。(E-R模型,关系模型)


椭圆: 产品名名椭圆: 零件名椭圆: 零件号blob.png

关系模型:

产品(产品号,产品名)

零件(零件号,零件名)

组装(产品号零件号

{分页}

数据库原理与应用复习2

 

一、填空题

1、图1是一个学生班级管理E-R图,图中描述的班级与学生两个实体

关系属于   一对多  。图中的矩形框代表__实体_,菱形框代表__实体间的联系__,椭圆框则代表   实体的属性  ,而像班号、学号文本下面带下划线的椭圆框代表   实体标识符      

blob.png

1 学生班级管理E-R

2、“一个事务中的各种操作要么全做,要么都不做”,这反映事务的一致性 特性。

3、传统的数据模型有 层次数据库 网状数据库 关系数据库  三种,目前常见的Oracle、MySQL、MS SQlServer2008等数据库系统属于 关系数据库 

4、数据库设计时,范式越高,关系模式就越________

5、在关系数据库中,常见的数据库对象有表、索引、视图等,请再写出三个数据库对象:___约束____存储过程______触发器___

6、三层客户/服务器结构模型的优点包括可重复使用、  良好的灵活性和可扩展性      可共享性        较好的安全性和可靠性   

二、选择题

1、表在关系数据库中对应于三级模式的是(

A、存储模式    B、概念模式     C、物理模式     D、外部模式

2DBA在数据库系统中扮演的角色是( A

A、系统管理员    B、数据库操作员  C、数据库编程人员  D、数据录入员

3、关系的主属性不可以为空值(NULL),这属于(  A  

A、实体完整性规则  B、参照完整性规则   C、域完整性规则   D、用户完整性规则

4、下面有关HAVING子句描述正确的是(  A  

AHAVING子句必须与GROUP BY 子句一起使用

BHAVING子句不可以与GROUP BY子句一起使用

CHAVING子句不可以与WHERE 子句一起使用 

DHAVING子句必须与WHERE 子句一起使用

5、对照图2的关系运算,下列哪一项实现查询所有男学生信息的功能( A

Aspacer.gifBspacer.gifCspacer.gif Dspacer.gif

三、画图题

            已知2元关系R2元关系S,其关系如图3所示:

blob.png

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),如下所示。

blob.png

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

一、选择题

1、以下哪个是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。

A).DBMS   B).DB   C).DBS   D).DBA

  B  2SQLserver数据库是属于_        

A) 层次数据库                                   B) 关系数据库

C) 网状数据库                                                           D) 对象数据库

  A  3ER图用于描述数据库的__

A) 概念模型                           B)数据模型

C) 逻辑模型                           D) 存储模型

  C  4SQL的视图是从(      )中导出的。

A). 基本表                 B). 视图                        C). 基本表或视图          D). 数据库

  A  5Dbo代表的是___

   A. 数据库拥有者             B. 用户

C. 系统管理员                 D. 系统分析员

  A  6SQL语言中,条件年龄 BETWEEN 15 AND 35表示年龄在1535之间,且(      )

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  12SQL Server安装程序创建4个系统数据库,以下不是__系统数据库。

A)..master    B).model     C).pub    D).tempdb

  A  13、数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)之间的关系是__

A) DBS包括DBDBMS                    B) DBMS包括DBDBS

C) DB包括DBSDBMS                    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 ServerWindows身份验证模式(混合模式)____

3、 申明局部变量时,变量名必须以标记符_____@___开头。

4、 实体间有多种关系,我们学校辅导员和班级之间的关系是___一对多_______________

5、 查询时只需显示前10条元组,则在select语句中使用关键字是________top__________

6、 每个触发器有二个存在内存中的特殊的表,其不存在于数据库中,当对数据表进行insert操作时,可以在触发器中引用,且受insert操作影响的表是____inserted____________

7、 数据库用户名是从_____登录名____映射而来的。

8、 在建立索引过程中,根据键值对行进行物理排序,使得表中记录顺序和索引顺序一致称为_       __ 聚集索引    _

9、 SQL Server数据库生成的脚本文件的扩展名是_     SQL______

10、        从数据库的存储结构上看,数据库由若干个用户可视的对象构成,主要应用于面向用户的数据组织和管理,这属于数据库的    数据库对象                   

三、判断题

1SQL数据库的数据模型属于网状数据模型。(   

2、数据库设计中的E-R图是数据库的概念设计的结果。            对  

3、显示数据库信息的系统存储过程的文本内容的命令是sp_helptext。(   

4视图是表或视图中的数据的复制。    

5SQL语中一次注释多行命令是— —      

6SQL server2008中数据库角色设置权限的对象是服务器登录名。  对  

7、在一个表中,不可以将多个字段的组合设为主键。      

8、创建数据表的命令是create table命令。                                

9sql 语句中,order by是对查询结果实现分组,。        
10、在select语句中区分字母的大小写,如createCREATE是二个不同的命令。   

 

四、简答题

1、阐述说明数据库中表、视图、查询三个数据库对象从数据表现形式及存储的区别。

1、视图是已经编译好的sql语句。而表不是
2、视图没有实际的物理记录。而表有。
3、表是内容,视图是窗口
4、表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,
表可以及时对它进行修改,但视图只能有创建的语句来修改。

5、表是内模式,视图是外模式
6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
8、视图的建立和删除只影响视图本身,不影响对应的基本表。

2、简述主键的功能和作用。

功能:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。

作用:

1)保证实体的完整性;

2)加快数据库的操作速度

3)在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。

4ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

 

五、综合题

(一)、将下图所示的E-R图转换为关系模式,并在主键下添加横线,外键下添加波浪线。

 

blob.png 

关系模式:

商品(商品编号,商品名,规格,单价)

商店(商店编号,商店名,地址)

职工(职工编号,姓名,性别,业绩,商店编号,聘期,月薪)

销售(商店编号商品编号,月销售量)

(二)、已知某商店销售系统中,有实体顾客(customers),订单(orders),订单详情(orderdetails),商品类型(types),商品(goods),其间关系如下。请根据图示,完成以下设计过程。

blob.png

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_ ordersSQL语句;修改视图,给视图加密。

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



推荐您阅读更多有关于“”的文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值