数据库原理与应用 SQL Server 2019 (慕课版) 课后习题答案

本帖仅用于个人学习,答案若有误,欢迎评论区交流🥺

第一章 数据库系统概述

一、选择题

1-5  BCAAA

6-10  DBDBA

11-15  BABDC

16-20  CDABD

21-22  AC

二、填空题

1、数据库系统

2、数据库

3、逻辑数据模型

4、概念(数据)

5、物理/存储

6、多对多

7、元组

8、外模式/模式映像

9、树状

10、数据操纵

11、硬件

12、网状

13、实体

14、码

15、数据库

16、网状模型

17、实体-联系模型/E-R模型

18、用户

19、文件

20、型


第二章 关系数据库数学模型

一、选择题

1-5  BDABC

6-10  ABDBB

11-15  CBDAD

16-20  BDDBD

二、填空题

1、24

2、集合论

3、外码/外键

4、实体完整性

5、不能

6、BCNF

7、学号

8、全外连接

9、关系

10、关系模型

11、自然连接

12、关系

13、子集

14、连接

15、参照

16、关系

17、候选码

18、关系模式

19、SQL(结构化查询语言)

三、计算题


第三章 关系数据库的规范化理论

一、选择题

1-5  ABDBB

6-10  BDAAB

11-15  BCBBC

16-20  BCBBD

21-24  BBCA

二、填空题

1、无损连接

2、数据冗余

3、传递律

4、自反律

5、冗余度大

6、1NF

7、2NF

8、2NF

9、单一属性

10、3NF

11、数据依赖

12、系号,系主任

13、BCNF

14、3NF

15、传递

16、增广律

17、(A,C)

18、平凡的多值依赖

19、BCNF

20、完全

三、计算题

1、

2、

3、

4、

5、

6、

7、

8、

9、


第四章 数据库的创建与管理

一、选择题

1-5  BCDDB

6-10  ADBAA

11-15  BCDBD

16-20  BBADD

21-25  CBCAA

26-28  ABA

二、填空题

1、sa

2、客户端

3、表

4、核心

5、DTS

6、登录账户

7、本地计算机名

8、系统管理员

9、逻辑结构

10、暂停

11、服务器

12、配置管理器

13、SSMS

14、sql

15、msdb

16、用户数据库

17、.ldf

18、mn

19、数据

20、数据库设置

21、附加

22、分离

23、数据库操作系统(SQLOS)

24、主文件组

25、8MB

三、实践题

1、

2、

3、

4、


第五章 表的创建与管理

一、选择题

1-5  CDBBC

6-10  DADBC

11-15  ADBDC

16-20  DBCBB

21-25  DCCCC

二、填空题

1、参照

2、主键

3、NULL

4、用户

5、tempdb

6、空格

7、删除

8、字段

9、check

10、unique

三、实践题

1、

2、

4、


第六章 数据操作与SQL语句

一、选择题

1-5  CCBAB

6-10  BBDDB

11-15 DCADB

16-20  BCCCA

21-25  ADDCC

26-30  CDCCC

二、填空题

1、update

2、where

3、[^]

4、union

5、交叉连接

6、into

7、group by

8、revoke

9、order by

10、group by

11、and

12、where

13、相关

14、交叉连接

15、all

16、where

17、distinct

18、from

19、嵌套

20、truncate

三、实践题

1、

select * from 读者  --1

2、

select 书名 from 图书  --2

3、

select * from 借阅 where 读者编号='1001'  --3

4、

select 书名,作者 from 图书 where 出版社='清华大学出版社'  --4

5、

select * from 图书 where 书名 like '%程序设计%'  --5

6、

select * from 图书 where 出版社='清华大学出版社' order by 定价  --6

7、

select top 3 图书编号,定价 from 图书 order by 定价 desc  --7

8、

select top 3 读者编号,借书日期 from 借阅
where 图书编号=(select 图书编号 from 图书 where 书名='C语言程序设计')
order by 借书日期  --8

9、

select '图书馆的藏书量:',count(*) from 图书  --9

10、

select '图书馆的图书总价值为:',sum(定价) from 图书  --10

11、

select 出版社,count(*) from 图书 group by 出版社  --11

12、

select 读者编号,count(*) from 借阅 where 借书日期>='2011-10-1' and 借书日期<='2021-10-1' group by 读者编号  --12

13、

select * from 借阅 
where 图书编号=(select 图书编号 from 图书 where 作者='谭浩强')
and  借书日期>='2011-10-1' and 借书日期<='2021-10-1'  --13

14、

update 读者 set 已借数量=(select count(*) from 借阅 where 借阅.读者编号=读者.读者编号 group by 读者编号) --更新读者表
go
select max(已借数量),min(已借数量),avg(已借数量) from 读者  --14

15、

select max(已借数量),min(已借数量),avg(已借数量) from 读者 group by 单位  --15

16、

select 读者编号,count(*) as 借阅数量 from 借阅 group by 读者编号 having count(*)>2  --16

17、

select 作者,count(*) as 馆藏数量 into author from 图书
group by 作者 having count(*) >= all(select count(*) from 图书 group by 作者)  --17

18、

select *,'日' from 读者  --18

19、

select 姓名,类型名称 as 身份 from 读者 inner join 读者类型 on 读者.读者类型=读者类型.类型编号 where 性别='男'  --19

20、

select * from 读者 where 读者编号 in (select 读者编号 from 借阅)  --20

21、

select * from 读者 where 读者编号 not in (select 读者编号 from 借阅)  --21

22、

select * from 图书 where 定价>(select avg(定价) from 图书)  --22

23、

select * from 图书 where 定价>(select avg(定价) from 图书) and 出版社='高等教育出版社'  --23

24、


select 读者.读者编号,姓名,图书编号,借书日期 from 读者 inner join 借阅 on 借阅.读者编号=读者.读者编号
where 借阅.读者编号=(select top 1 借阅.读者编号 from 借阅 where 图书编号='TP0001' order by 借书日期 desc)  --24

25、

select * from 读者 where 读者编号 in
(select 读者编号 from 借阅 inner join 图书 on 借阅.图书编号=图书.图书编号 where 书名='计算机应用基础')  --25

26、

select * from 读者 where 已借数量>=2  --26

27、

select 图书编号,书名 from 图书 
where 图书编号 in 
(select 图书.图书编号 from 图书 inner join 借阅 on 图书.图书编号=借阅.图书编号 group by 图书.图书编号 having count(*)>=2)  --27

28、

select 单位,count(*) from 读者 group by 单位  --28

29、

select 读者编号,姓名,单位 from 读者 where 单位='管理学院'
go
select count(*) from 读者 where 单位='管理学院'  --29

30、

select 读者编号,姓名,单位 from 读者 where 单位='管理学院'
go
select 读者类型,count(*) as 人数 from 读者 where 单位='管理学院' group by 读者类型  --30

31、

select * from 读者 a 
where 已借数量<=(select min(已借数量) from 读者 b where a.读者类型=b.读者类型)  --31

32、

select * from 读者 where 已借数量>(select avg(已借数量) from 读者)  --32


第七章 T-SQL程序设计

一、选择题

1-5  DCBDA

6-10  DCDBD

11-15  ACBDB

16-20  BDBAB

21-25  DCCBC

26-29  DCDC

二、填空题

1、全局变量

2、注释语句

3、select语句

4、单引号

5、表达式

6、break

7、6

8、max()

9、waitfor

10、end

11、syscomments

12、'ab'

13、字符型

14、T-SQL

15、go

16、print

17、unicode

18、内嵌表值

19、smalldatetime

20、smallmoney

三、实践题

1、

2、

3、

4、

5、

6、


第八章 试图、索引和游标

一、选择题

1-5  ACBAD

6-10  AAADC

11-15  ABBAD

16-20  DABAB

21-25  ABADC

26-30  AACAD

31-34  BBDC

二、填空题

1、基表

2、select

3、with check option

4、基表数据

5、更新

6、计算列

7、更新

8、查询定义

9、1

10、unique

11、16

12、聚集

13、查询

14、查询

15、唯一

16、客户端

17、只进游标

18、open

19、scroll

20、fetch

三、实践题

1、

3、

4、

5、


第九章 存储过程和触发器

一、选择题

1-5  ADCBA

6-10  ABACA

11-15  DBBBC

16-20  BABBC

二、填空题

1、服务器

2、系统

3、varying

4、##

5、output

6、表或视图

7、instead of

8、insert

9、deleted表

10、update

三、实践题

1、

--1
use library
go
if exists (select name from sysobjects where name='Narcissus' and type='p')
drop procedure Narcissus  --删除已存在的同名存储过程
go
create procedure Narcissus
as
declare @i int,@g int,@s int,@b int
set @i=100
while @i<1000
begin
set @g=@i%10  --个位
set @b=@i/100  --百位
set @s=(@i-@b*100)/10  -十位
if @i=@g*@g*@g+@s*@s*@s+@b*@b*@b
print cast(@i as char(3))+space(2)
set @i=@i+1
end

execute Narcissus

2、

--2
use library
go
if exists (select name from sysobjects where name='reader_info' and type='p')
drop procedure reader_info
go
create procedure reader_info
@dzbh char(4)
as
if @dzbh in (select 读者编号 from 读者)
select * from 读者 where 读者编号=@dzbh
else
select * from 读者 where 读者编号='1001'

execute reader_info '1002'
go
execute reader_info '1234'

3、

--3
use library
go
if exists (select name from sysobjects where name='book_lend' and type='p')
drop procedure book_lend
go
create procedure book_lend
@tsbh char(6)
as
declare @n int
if @tsbh in (select 图书编号 from 图书)
begin
set @n=(select count(*) from 借阅 where 图书编号=@tsbh)
print '图书编号为'+@tsbh+'图书借阅人数为:'+cast(@n as char(2))
end
else
print '不存在该书'

execute book_lend 'TP0001'
go
execute book_lend 'TP0004'
go
execute book_lend 'TP1234'

***编程中的小插曲,提示关键字'else'附近有语法错误

原来问题出在,下图圈出的部分为多条T-SQL语句,应该用begin...end将其封装成一个语句块

4、

--4
use library
go
if exists (select name from sysobjects where name='ins_借阅' and type='tr')
drop trigger ins_借阅
go
create trigger ins_借阅 on 借阅
instead of insert
as
if not exists(select * from 读者,inserted where 读者.读者编号=inserted.读者编号)
print '此读者编号不存在'
else
begin
insert into 借阅 select * from inserted
print '数据插入成功'
end

insert into 借阅 values('1002','TP0004','2024-3-14','2024-3-14',11)
go
insert into 借阅 values('1234','TP0004','2024-3-14','2024-3-14',12)
go

5、

--5
use library
go
if exists (select name from sysobjects where name='ins_借阅' and type='tr')
drop trigger ins_借阅
go
create trigger ins_借阅 on 借阅
for insert
as
if (select count(*) from 借阅 where 读者编号=(select 读者编号 from inserted))>20
begin
print '该读者已借阅了20本书,已达上限'
rollback transaction
end

6、

--6
use library
go
if exists (select name from sysobjects where name='up_图书' and type='tr')
drop trigger up_图书
go
create trigger up_图书 on 图书
for insert
as
declare @m int
set @m=(select 定价 from inserted)
if @m<20
begin
print '单价太低'
rollback transaction
end

7、

--7
use library
go
if exists (select name from sysobjects where name='del_读者' and type='tr')
drop trigger del_读者
go
create trigger del_读者 on 读者
for delete
as
delete from 借阅 where 读者编号=(select 读者编号 from deleted)


第十章 备份与恢复

一、选择题

1-5  ADBDB

6-10  CAABD

11-15  ACABA

二、填空题

1、备份

2、逻辑名称

3、磁盘

4、事物日志备份

5、大容量日志备份

6、可以

7、逻辑设备名

8、完整

9、事物日志

10、tempdb

三、实践题

1、

2、

3、

4、

5、


第十一章 数据库安全性管理

一、选择题

1-5  CACCB

6-10  DBCAB

11-15  DDADD

16-20  ADAAB

二、填空题

1、非法

2、master

3、dbo

4、身份

5、仅windows模式

6、control

7、dbo

8、登录账户

9、public

10、sp_helprotect

三、实践题

1、

2、

3、

4、

5、


第十二章 并发控制

一、选择题

1-5  DCABC

6-10  ABDBB

11-15  ABCCB

16-18  AAA

二、填空题

1、事务

2、原子性

3、一致性

4、隔离性

5、持续性

6、封锁

7、并发控制

8、一致性

9、一致性

10、一致

11、一次加锁法

12、自动提交模式

13、共享锁

14、排他

15、共享锁

16、tabloc

17、已提交读快照

18、手动配置

19、sp_lock

三、简答题

答:不是冲突等价,因为T1的Write(Q)和T2的Write(Q)是冲突操作,不能交换。

关于冲突,等价冲突概念的学习参考了以下帖子⬇️

冲突可串行化、事务优先图 - 知乎众所周知,并发执行的事务可能会破坏事务的隔离性,从而破坏数据库的一致性。但为了充分利用资源,提供数据库服务的可用性,不得不并发执行事务。为了让并发的事务不出现异常,业界想出了很多方案,但都是在并发效…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/516557516?utm_id=0

四、实践题


考试加油~

  • 29
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值