2024年1月2日发(作者:)

第一章 习题

1. 什么是数据、数据库、数据库管理系统、数据库系统?

2. 数据库系统的特点?

3. 数据库管理系统的主要功能有哪些?

4. 试给出三个实际情况的 E-R 图,要求实体之间具有一对一、一对多、多对多各种不同的联系。

5. 学校中有若干个系,每个系有若干个班级和教研室,每个教研室有若干个教师,其中有教授或副教授的教师每人各带若干个研究生,每个班有若干个学生,每个学生选修若干个课程,每门课程由若干个学生选修。请用 E-R 图画出此学校的概念模型。

6. 在关系代数中,等值连接和自然连接的区别是什么?

7. 给定如下的学生关系 S 和选课关系 SC ,求选修 J2 课程学生的学号和成绩信息。

学生关系 S

学号

20001

20002

20003

姓名

马力

王萍

马刚

性别

年龄

20

19

21

专业

软件

硬件

软件

选课关系 SC

学号

20001

20001

20002

20002

20003

课程号

J1

J2

J1

J2

J1

成绩

89

93

79

83

96

8 .试述关系模型的完整性规则。在参照完整性中,为什么外键属性的值也可以为空?什么情况才可以为空?

9. 关系规范化的作用是什么?第一范式至 BCNF ,每种范式的特点是什么?

第二章 习题

1. 安装 SQL SERVER2000 对 Internet Explorer 和 Service Pack 各有何要求?

2. 在 MICRISOFT SQL SERVER2000 中,有那些认证模式?各有何特点?

3. 以 WINDOWS2000 Server 为操作平台,简述在进行 SQL SERVER 2000 安装之前,应该作好哪些设置工作?

4. 在 Microsoft SQL Server2000 中有哪些版本模式?各有何特点?

5. 下面的硬件设备,哪一个不是 SQL SERVER 2000 系统必备的?( )

A . CPU C. 显示器 D. 打印机

(1) SQL SERVER 2000 数据库系统不能运行在哪个平台上?( )

A. WINDOWS 2000 SERVER S NT SERVER

S 98 D. WINDOWS 2000 PROFESSINAL

(2) 下面哪种安装方式不能够用于 SQL SERVER 的安装? ( )

安装 安装 C. 网络安装 D. 软盘安装

第三章 习题

1. 简述题

( 1 ) SQL 标识符的命名必须遵循哪些规则 ?

( 2 ) Transact-SQL 的运算符有哪几类 ?

( 3) 简述局部变量的声明和赋值方法。

( 4 )全局变量有哪些特点

( 5 ) RETURN 语句有何功能?

( 6 )何时需要使用 IF…ELSE 语句?

( 7 )说明 WHILE 循环语句中 BREAK 和 CONTINUE 的作用

( 8 )说明 BEGIN…END 语句在程序设计中的作用

( 9 ) Transact-SQL 语言可以生成可执行文件吗?

2. 选择题:

( 1 ) SQL Server2000 数据库系统使用什么样的数据库语言? ( )

A . C/C++ ct-SQL

( 2 ) 关于 Transact-SQL 语言中标识符的描述,哪一个是正确的( )

A .作多包含 128Byte B. 首字母必须是下划线

C .不能使用保留字 D. 可以包含 @ 、 # 、 & 、 ^ 等字符

( 3 )下面哪一个关键字不是 Transact-SQL 的函数( )

A 、 DAY () ( ) C. MONTH( ) ( )

第四章 习题

1. 在 XSCJ 数据库中创建表 KC ,表的结构见表 4-1 。

表 4-1 课程表 KC 的结构

列名

课程号

课程名

授课教师

开课学期

学时

学分

数据类型

Char

Char

chai

Tinyint

Tinyint

Tinyint

长度

3

20

8

1

1

1

是否允许为空值

默认值

1

说明

主键

只能为 1-6

并输入如下数据记录:

101 ,计算机硬件基础,王颐, 1 , 80 , 6

102 ,计算机软件基础,武春林, 1 , 60 , 5

103 ,计算机网络基础,彭海深, 2 , 80 , 6

104 ,网络操作系统,吴文勇, 3 , 60 , 5

104 ,协议分析,余建军, 2 , 50 , 4

106 ,网页设计,张建华, 3 , 45 , 3

在 XSCJ 数据库中创建学生与课程表 XS-KC ,表的结构如下:

列名 数据类型 长度 是否允许为空 默认值 说明

-----------------------------------------------------------------------------------------

学号 char 6 否 无 外键,参照 XSQK 表

课程号 char 3 否 无 外键,参照 XS-KC 表

成绩 tinyint 1 是 无

学分 tinyint 1 是 无

并输入如下数据记录:

020101 , 101 , 85 , 5

020101 , 102 , 87 , 6

020102 , 101 , 58 , 5

020202 , 103 , 55 , 4

020202 , 108 , 80 , 3

020203 , 103 , 57 , 4

第五章 习题

1. 将本章子查询部分的例 5-56~ 例 5-60 全部改成连接形式的查询。

2. 按学号分组汇总总分高于 100 分的学生记录,并按总分的降序排列。

3. 使用 WITH CUBE 选项分组汇总各系各专业的女生人数。

4. 查询课程号为 103 的成绩记录,并按成绩的将序排列。

5. 使用子查询求恰好有两门课程不及格学生的信息。

6. 查询每门课程的最高分的学生记录。

7. 查询每个学生最高分课程记录

8. 将 5.1.1 节中的例 5-2~ 例 5~5 全部用视图来实现。

9. 使用游标显示 XSQK 表中的所有数据记录。

第六章 习题

1. 为 XSQK 表的总学分列创建一个索引,并按照总学分的降序排列。

2. 为 XSQK 表的备注列创建一个全文索引。

3. 使用 SQL 事件探查器和索引优化向导进行索引优化。

4. 为 KC 表新建一个约束,使开课学期列只能取 1-6 。

5. 定义一个默认值对象,使性别列值为 1 (表示男),并将其绑定到 XSQK 表的性别列。

6. 定义一个规则对象对性别列进行检查,使性别只能取值 1 (表示男)或 0 (表示女),并将绑定到 XSQK

表的性别列。

7. 为 XS-KC 表和 KC 表建立基于课程号列的关联。

第 七 章 习题

1. 创建一个带有输入参数的基于插入操作的存储过程,用于在 KC 表中插入一条新的课程信息,课程信息有变量形式给出。

2. 创建一个带有输入参数和输出参数的存储过程,输入参数用于指定查询的学号信息,输出参数用于保存指定学生的姓名,性别、所在系和所学专业信息。

3.创建一个带有 输入参数的基于更新操作的存储过程,用于在XS-KC表中为指定课程的成绩介 于55~59分之间的学生都提高到60分,课程号由输入参数指定。

4. 创建一个嵌套调用的存储过程,嵌套调用【列7-3】中所创建的存储过程proc-课程号,完成练习3中创建的存储 过程的功能。

5. 创建一个嵌套调用的存储过程,实现 1 ! +2 ! +3 ! + …… +n!

6. 创建一个UPDATE触发器,当更新KC表中的课程号列时,激活触发器以同步级联XS-KC表中的相关课程号。

7. 创建一个DELETE触发器,当删除XSQK表中的某条学生信息时,激活触发器以级联删除XS-KC表中该学生的相关学生信息。

8. 创建一个 INSERT 触发器,当在 KC 表中插入一条新课程信息时,激活触发器以提示插入成功。

9. 创建一个UPDATE触发器,当更新KC表中的授课教师和开课学期列时,激活触发器以提示某门课程的授课教师和开课学期信息被更新。

第八章 习题

1. 什么是事务?必须具备哪几个 ACID 属性?

2. 事务有哪几种类型?各具什么特色。

3. 什么是锁?锁有哪几个模式?

4. 在哪几种模式下,可能发生死锁?应该如何解释?

第九章 习题

1. SQL Server 2000 有几种身份验证方式?它们的区别是什么?

2. 什么是角色?服务器角色和数据库角色的区别是什么?。

3. 备份设备有几种?它们的区别是什么?

4. 数据复制一般有哪几种方式?它们各适合的场合是什么?

5. 如何利用导入向导进行数据导入操作。

综合习题综合练习题 1 :

在 xscj 数据库中

kc (课程号,课程名,授课教师,开课学期,学时,学分)

xsqk (学号,姓名,性别,出生日期,专业名,所在系,联系电话,总学分,备注)

xskc (学号,课程号,成绩,学分)

• 创建存储过程,通过该存储过程可以向 xskc 表中输入新的数据(要求用两种方法,一种是编写代码,一种是通过使用存储过程创建向导)

• 创建存储过程,在调用存储过程时,以课程号作为输入参数,返回该课程的平均分。(即:在调用存储过程时,需要输入一门课程的课程号,根据用户的输入返回该门课程学生考试的平均分。)

• 创建存储过程,在调用存储过程时,以分数作为输入参数,返回高于该分数的所有学生的姓名,课程名,成绩,学分等信息(即:在调用该存储过程时,需要输入一个分值。例如 80 ,那么查询所有大于等于该分数的学生的姓名,课程名,成绩,学分等信息)

综合练习题 2 :

1. 创建数据库

创建 bookmanage 数据库参数如下:

数据库名称: bookmanage

主数据文件:逻辑名 book_data 存储路径 c:mydatabook_ 初始 10m

最大 500mb 按照 10% 增长

日志文件: 逻辑名 book_log 存储路径 c:mydatabook_ 初始 10m

最大 100mb 按照 10mb 增长

2. 创建表

2.1 创建 tb_book 表

存放书的 id 的“ f_bookid ”字段,类型为 int 不能为空

存放书名的“ f_bookname ”字段,类型为 varchar ( 50 ) 不能为空

存放书的作者的“ f_author ”字段,类型为 varchar ( 20 ) 不能为空

存放书的单价的“ f_price ”字段,类型为 money 可以为空

存放出版社的“ f_publisher ”字段,类型为 varchar ( 50 )可以为空

存放出版日期的“ f_date ”字段,类型为 datatime 可以为空

存放备注的“ f_memo ”字段,类型为 varchar ( 50 ) 可以为空

存放前言的“ f_synoposis ”字段,类型为 varchar ( 50 ) 可以为空

2.2 创建 author 表

存放作者 id 的“ authorid ”字段,主键

存放作者性别的“ author_sex ”字段,必须是字母 F (女)或 Man ( 男 ) 默认为“ M ”

存放作者在该出版社的编号的“ departmentid ”字段,前三位必须以 dep 开头,后三位必须是介于 0-9 之间的数字

存放作者电话号码的“ author_phone ”字段,满足以下格式

• 区号可以是 3 位或 4 位且必须用小括号括起来

• 如果区号是 3 位,电话号码可以是 7 位或 8 位,当电话号码是 7 位时,前 3 位和后 4 位用“ - ”隔开,如 ( 021 ) 565-7897 当电话号码是 8 位时,前 4 位和后 4 位用“ - ”隔开,如 ( 022 ) 1234-5678

• 如果区号是 4 位,电话号码必须是 6 位,且前 3 位和后 3 位之间用“ - ”隔开,如 ( 0751 ) 123-456

存放作者的起始稿酬的“ increm ”字段,其值在 5000-10000 之间

存放作者的目前稿酬的“ currem ”字段,其值在 5000-20000 之间

综合练习题 3 :

1. 设某商业集团数据库中有 3 个实体集,一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。

商店与商品之间存在“销售”联系,每个商店可销售多种商品,每种商品也可以放在多个商店销售,每个商店销售的一种商品有月销售量;商店与职工之间存在“聘用”联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和工资。

问题 1 :试画出 E-R 图

问题 2 :将该 E-R 图转换成关系模式,并指出主码和外码

商店(商店编号,商店名,地址)商店编号为主码

职工(职工编号,姓名,性别,业绩)职工编号为主码

商品(商品号,商品名,规格,单价)商品号为主码

销售(商店编号,商品号,月销售量)商店编号 + 商品号为主码

聘用(职工编号,商店编号,聘期,工资)职工编号为主码

2. 设有如下图所示的关系 R

职工号

E1

E2

职工名

ZHAO

QIAN

年龄

20

25

性别

F

M

单位号

D3

D1

单位名

CCC

AAA

E3

E4

SEN

LI

38

25

M

F

D3

D3

CCC

CCC

试问 R 属于 3NF ? 为什么?若不是,它属于第几范式?并如何规范化为 3NF

第一范式不能表中套表,第二范式不能有部分依赖,第三范式不能有传递依赖, BCNF 范式不能有这样的情况:决定因素不是码

在判断范式的时候第一步要判断关系的码是什么

综合练习题 4 :

1. 按照所给参数创建数据库

数据库名: bookmanage

文件名

存储路径

文件初始大小

文件最大值

文件增长

数据文件

bookmanage_Data

D: databookmanage_

1MB

最大无限制

10%

日志文件

bookmanage_Log

D: databookmanage_

1MB

100 MB

10 MB

2. 修改 bookmanage 数据库,添加一个次要数据文件和文件组,并将次要数据文件放在新创建的文件组中,具体参数如下:

数据文件名 bookmanage_Data2

存储路径: D: databookmanage_

文件初始大小: 1MB

文件最大值: 最大无限制

文件增长: 10%

文件组名称: Book_group

3. 按照下面所给的参数在 bookmanage 数据库中创建表

表 1 名称: tb_book

列名

图书编号

图书名称

作者编号

数据类型

Int

Char(20)

int

约束

主键

不允许取空值

外键参考 tb_author 表中的作者编号列

单价

出版商

出版日期

备注

Money

Char(50)

Datetime

Varchar(100)

单价 >0

不允许取空值

出版日期 < 今天

允许取空值

表 2 名称: tb_author

列名

作者编号

数据类型

int

约束

主键,标识列,系统自动取值,初始为 1 步长为 1

作者名称 Char(20) 不允许取空值

联系电话 Char(14) 必须按如下格式输入: '(010)1234-5678'

或 „(0123)123-4567'

性别 Char(2) 不允许取空值 默认为 „F'

地址 Char(20) 不允许取空值

出生日期 Datetime 允许取空值

血型 Char(2) 允许取空值

备注 Varchar(100) 允许取空值

表 3 名称:订货表

列名 数据类型 约束

订单编号 int 主键

图书编号 int 外键参考 tb_book 表中的图书编号列

数量 int 不允许取空值 并且数量值大于 0

折扣 real 不允许取空值 默认为 „100%'

单价 money 不允许取空值 并且单价值大于 0

销售金额 Datetime 计算列,系统根据公式自动生成

销售金额 = 单价 * 数量 * 折扣

4. 对 tb_author 表作修改

添加两个新列,参数如下

列名 数据类型 约束

作者单位 Char(50) 允许取空值

作者薪金 money

将 tb_author 表中“血型”列删除

5. 向作者表中添加记录,取值如下表

作者编号作者名称 联系电话 性别 地址 出生日期 作者单位

1 张玲 (022)1234-5678 F 天津 1977-12-4 天津大学

作者薪金备注

1500

2

3

4

5

6

李林

刘全

王海

赵京

陈美

(010)3215-6547

(0122)125-2568

(0213)654-4568

(021)4568-4561

(022)5542-1126

F

M

M

M

F

北京

河北

山西

广州

天津

1954-3-1

1968-4-2

1978-5-21

1972-11-8

1965-5-15

北京大学

河北大学

山西大学

广州大写

师范大学

3000

1200

1350

2850

1800

6. 将上表中“刘全”的单位由“河北大学”改为“河北工业大学”

将上表中的“陈美”这条记录删除

7. 按要求检索数据

① 检索 “t b_book” 表中 “图书名称”中含有“数据库”的记录的全部信息

② 检索“ tb_author ”表中“地址”为“天津”或“北京”的作者的姓名和联系电话

③ 检索“ tb_author ”表中“性别”为女 或薪金介于 1500 到 2500 之间(包含边缘值)的作者的全部信息

④ 检索定购数量大于 100 的图书的“名称”、“作者”、“出版商”、“数量”、“单价”的信息

⑤ 检索各出版商出版的书籍的数目总和

⑥ 检索编号为 1 的作者所出书的数目总和

综合练习题 5 :

问题描述:

为管理岗位业务培训信息,建立 3 个表 :

S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄

C (C#,CN ) C#,CN 分别代表课程编号、课程名称

SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩

1. 使用标准 SQL 嵌套语句查询选修课程名称为'税收基础'的学员学号和姓名

2. 使用标准 SQL 嵌套语句查询选修课程编号为' C 2 ' 的学员姓名和所属单位

3. 使用标准 SQL 嵌套语句查询不选修课程编号为' C 5 ' 的学员姓名和所属单位

4. 使用标准 SQL 嵌套语句查询选修全部课程的学员姓名和所属单位

5. 查询选修了课程的学员人数

6. 查询选修课程超过 5 门的学员学号和所属单位

问题描述:

已知关系模式:

S (SNO,SNAME ) 学生关系。 SNO 为学号, SNAME 为姓名

C (CNO,CNAME,CTEACHER) 课程关系。 CNO 为课程号, CNAME 为课程名, CTEACHER 为任课教师

SC(SNO,CNO,SCGRADE) 选课关系。 SCGRADE 为成绩

1. 找出没有选修过“李明”老师讲授课程的所有学生姓名

2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

3. 列出既学过“ 1 ” 号课程,又学过“ 2 ” 号课程的所有学生姓名

4. 列出“ 1 ” 号课成绩比“ 2 ” 号同学该门课成绩高的所有学生的学号

5. 列出“ 1 ” 号课成绩比“ 2 ” 号课成绩高的所有学生的学号及其“ 1 ” 号课和“ 2 ” 号课的成绩

问题描述:

本题用到下面三个关系表:

CARD 借书卡。 CNO 卡号, NAME 姓名, CLASS 班级

BOOKS 图书。 BNO 书号, BNAME 书名 ,AUTHOR 作者, PRICE 单价, QUANTITY 库存册数

BORROW 借书记录。 CNO 借书卡号, BNO 书号, RDATE 还书日期

备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。

要求实现如下 15 个处理:

1 . 写出建立 BORROW 表的 SQL 语句,要求定义主码完整性约束和引用完整性约束。

2 . 找出借书超过 5 本的读者 , 输出借书卡号及所借图书册数。

3 . 查询借阅了 " 水浒 " 一书的读者,输出姓名及班级。

4 . 查询过期未还图书,输出借阅者(卡号)、书号及还书日期。

5 . 查询书名包括 " 网络 " 关键词的图书,输出书号、书名、作者。

6 . 查询现有图书中价格最高的图书,输出书名及作者。

7 . 查询当前借了 " 计算方法 " 但没有借 " 计算方法习题集 " 的读者,输出其借书卡号,并按卡号降序排序输出。

8 . 将 "C01" 班同学所借图书的还期都延长一周。

9 . 从 BOOKS 表中删除当前无人借阅的图书记录。

10 .如果经常按书名查询图书信息,请建立合适的索引。

11 .在 BORROW 表上建立一个触发器,完成如下功能:如果读者借阅的书名是 " 数据库技术及应用

" ,就将该读者的借阅记录保存在 BORROW_SAVE 表中(注 ORROW_SAVE 表结构同 BORROW

表)。

12 .建立一个视图,显示 " 力 01" 班学生的借书信息(只要求显示姓名和书名)。

13 .查询当前同时借有 " 计算方法 " 和 " 组合数学 " 两本书的读者,输出其借书卡号,并按卡号升序

排序输出。

14 .假定在建 BOOKS 表时没有定义主码,写出为 BOOKS 表追加定义主码的语句。

15 .对 CARD 表做如下修改:

a. 将 NAME 最大列宽增加到 10 个字符(假定原为 6 个字符)。

b. 为该表增加 1 列 NAME (系名),可变长,最大 20 个字符

已知某数据库中有如下表:

• tb_book (书籍表)

该表含有如下字段( f_bookid,f_bookname,f_author,f_price,f_publisher,f_date,f_lb )

各字段含义: f_bookid 书籍编号 数据类型为整型

f_bookname 书籍名称 数据类型为字符型

f_authorid 作者编号 数据类型为整型

f_price 书籍单价 数据类型为整型

f_publisher 出版社 数据类型为字符型

f_date 出版日期 数据类型为日期型

f_lb 书籍类别 数据类型为字符型

• tb_author (作者表)

该表含有如下字段( f_authorid,f_name,f_homephone,f_officephone,f_address )

各字段含义: f_authorid 作者编号 数据类型为整型

f_name 作者名字 数据类型为字符型

f_homephone 家庭电话 数据类型为字符型

f_officephone 办公电话 数据类型为字符型

f_address 联系地址 数据类型为字符型

按照要求实现数据的查询

• 在作者表中查寻家庭电话以“ 632 ”开始的作者的信息,在结果中显示作者名和家庭电话两列内容

• 在作者表中查寻姓为“朱”或“谷”的作者的信息,在结果中显示作者名,家庭电话及联系地址三列内容

• 在书籍表中查寻书名包含“ sql ”字符,并且单价大于 30 的书籍的信息,在结果中显示书籍名称,单价两列的信息

• 在书籍表中查寻书的价格大于平均单价的书籍的信息,在结果中显示书籍名称和单价两列信息

• 在书籍表中查寻每类书的平均价格,并将结果从大到小排列

• 在书籍表中查寻哪类书的平均价格最贵,在结果中将其价格现实出来

• 在作者表和书籍表中查寻出过书的作者的信息,在结果中显示书籍名称,作者名称,书籍单价,家庭电话,联系地址等 5 列信息

• 在书籍表中查寻同一个作者出了不同类别书籍的信息,在结果中显示作者的编号,和类别信息