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 列信息
• 在书籍表中查寻同一个作者出了不同类别书籍的信息,在结果中显示作者的编号,和类别信息


发布评论