题目3
问题描述:
本题用到下面三个关系表:
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个字符。
1. 写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束
--实现代码:
CREATETABLEBORROW(
CNOintFOREIGNKEYREFERENCESCARD(CNO),
BNOintFOREIGNKEYREFERENCESBOOKS(BNO),
RDATEdatetime,
PRIMARYKEY(CNO,BNO))
2. 找出借书超过5本的读者,输出借书卡号及所借图书册数
--实现代码:
SELECTCNO,借图书册数=COUNT(*)
FROMBORROW
GROUPBYCNO
HAVINGCOUNT(*)>5
3. 查询借阅了"水浒"一书的读者,输出姓名及班级
--实现代码:
SELECT*FROMCARDc
WHEREEXISTS(
SELECT*FROMBORROWa,BOOKSb
WHEREa.BNO=b.BNO
ANDb.BNAME=N'水浒'
ANDa.CNO=c.CNO)
4. 查询过期未还图书,输出借阅者(卡号)、书号及还书日期
--实现代码:
SELECT*FROMBORROW
WHERERDATE<GETDATE()
5. 查询书名包括"网络"关键词的图书,输出书号、书名、作者
--实现代码:
SELECTBNO,BNAME,AUTHORFROMBOOKS
WHEREBNAMELIKEN'%网络%'
6. 查询现有图书中价格最高的图书,输出书名及作者
--实现代码:
SELECTBNO,BNAME,AUTHORFROMBOOKS
WHEREPRICE=(
SELECTMAX(PRICE)FROMBOOKS)
7. 查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出
--实现代码:
SELECTa.CNO
FROMBORROWa,BOOKSb
WHEREa.BNO=b.BNOANDb.BNAME=N'计算方法'
ANDNOTEXISTS(
SELECT*FROMBORROWaa,BOOKSbb
WHEREaa.BNO=bb.BNO
ANDbb.BNAME=N'计算方法习题集'
ANDaa.CNO=a.CNO)
ORDERBYa.CNODESC
8. 将"C01"班同学所借图书的还期都延长一周
--实现代码:
UPDATEbSETRDATE=DATEADD(Day,7,b.RDATE)
FROMCARDa,BORROWb
WHEREa.CNO=b.CNO
ANDa.CLASS=N'C01'
9. 从BOOKS表中删除当前无人借阅的图书记录
--实现代码:
DELETEAFROMBOOKSa
WHERENOTEXISTS(
SELECT*FROMBORROW
WHEREBNO=a.BNO)
10. 如果经常按书名查询图书信息,请建立合适的索引
--实现代码:
CREATECLUSTEREDINDEXIDX_BOOKS_BNAMEONBOOKS(BNAME)
11. 在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)
--实现代码:
CREATETRIGGERTR_SAVEONBORROW
FORINSERT,UPDATE
AS
IF@@ROWCOUNT>0
INSERTBORROW_SAVESELECTi.*
FROMINSERTEDi,BOOKSb
WHEREi.BNO=b.BNO
ANDb.BNAME=N'数据库技术及应用'
12. 建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)
--实现代码:
CREATEVIEWV_VIEW
AS
SELECTa.NAME,b.BNAME
FROMBORROWab,CARDa,BOOKSb
WHEREab.CNO=a.CNO
ANDab.BNO=b.BNO
ANDa.CLASS=N'力01'
13. 查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出
--实现代码:
SELECTa.CNO
FROMBORROWa,BOOKSb
WHEREa.BNO=b.BNO
ANDb.BNAMEIN(N'计算方法',N'组合数学')
GROUPBYa.CNO
HAVINGCOUNT(*)=2
ORDERBYa.CNODESC
14. 假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句
--实现代码:
ALTERTABLEBOOKSADDPRIMARYKEY(BNO)
15.1 将NAME最大列宽增加到10个字符(假定原为6个字符)
--实现代码:
ALTERTABLECARDALTERCOLUMNNAMEvarchar(10)
15.2 为该表增加1列NAME(系名),可变长,最大20个字符
--实现代码:
ALTERTABLECARDADD系名varchar(20)
分享到:
相关推荐
sqlserver练习题3资源
在SQL Server中,这些练习题涉及到了数据库设计、SQL查询、触发器、视图以及表的修改等核心概念。下面是对这些题目详细解答: ...以上就是针对SQL Server练习题3的所有解答,涵盖了数据库的基本操作和高级查询技巧。
通过不断实践和解决这些练习题,你将在SQL Server的链表查询方面获得扎实的基础,为未来的数据库管理和开发工作做好准备。同时,不要忘记在实践中学习,尝试不同的查询方法,以便找到最优的解决方案。祝你在学习过程...
这是一道sql的练习题 涉及两张表的 可以练习一下 没答案的哦!
以上练习题覆盖了SQL中的各种核心概念和技术,包括子查询、连接(JOIN)、聚合函数(如COUNT、SUM)、条件语句(如IN、ANY、ALL)等。这些练习有助于加深对SQL的理解,并提高解决实际问题的能力。
在SQL Server的学习过程中,增删改查(CRUD:Create,...这4套练习题将涵盖这些概念,帮助你深入理解并熟练掌握SQL Server的使用。记得实践是检验理论的最好方式,所以动手操作是巩固学习的关键。祝你在练习中取得进步!
本压缩包文件"sql server 2000 试题汇编答案"显然是针对SQL Server 2000的练习题集及解答,旨在帮助学习者提升对SQL Server 2000的理解和操作技能。以下将详细探讨SQL Server 2000的相关知识点: 1. **SQL Server ...
"SQL Server练习50题"是一个非常实用的资源,旨在帮助用户巩固SQL Server的基础知识,特别是查询和多表查询这两方面的重要技能。下面将对这两个主题进行详细讲解。 一、SQL Server查询基础 SQL(Structured Query ...
### SQL Server 练习题知识点解析 #### 一、填空题知识点解析 1. **SQL Server 文件扩展名** - **主要数据文件**: `.mdf`,是SQL Server数据库的主要存储容器,包含数据库的启动信息及至少一个数据段。 - **次要...
这份文档是一份关于SQL Server的练习题答案集,包含了一系列的SQL查询语句和它们对应的解答。这些练习题旨在加深对SQL查询操作的理解。接下来,我将详细解释文档中提及的SQL知识点。 首先,文档涉及到SQL Server中...
1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90 A: select distinct name from table ...
下面我们将深入探讨SQL Server练习题中涉及的存储过程及相关知识点。 首先,存储过程分为系统存储过程、扩展存储过程和用户自定义存储过程。系统存储过程由SQL Server提供,用于管理数据库、执行服务器级别的操作等...
本文将针对"战胜SQL Server必做练习50题"这一主题,深入探讨SQL语言的核心知识点,并通过一系列实践题目来加深理解。 1. **SQL基础概念** - 数据库(Database):存储数据的系统,SQL Server是其中一种。 - 表...
3. **W3School**:是一个在线学习平台,提供了丰富的SQL教程和练习题,适合初学者入门。 综上,SQL Server的存储过程和触发器是数据库编程的重要组成部分,掌握它们的使用可以帮助我们更高效地管理和维护数据库。...
SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在IT领域中扮演着重要的角色,尤其是在数据存储、管理和分析方面。本题目汇编聚焦于SQL Server 2000的基础知识,旨在帮助学习者巩固和提升对这个系统的...
SQL Server 阶段项目练习题是一个综合性的练习项目,旨在提高初学 SQL Server 的学生的实践能力和学习效果。该项目涵盖了 SQL Server 的多个方面,包括数据库设计、表创建、触发器、索引、视图、存储过程等。 ...
SQL Server 数据库习题 本资源摘要信息涵盖了 SQL Server 数据库的各种知识点,旨在帮助读者更好地理解和掌握数据库技术。以下是从给定的文件中生成的知识点: 1. 视图的概念:视图是一个“虚表”,其构造基于基本...
这份"SQL SERVER练习题"文档提供了一系列的题目,旨在帮助学习者巩固理论知识,提高实际操作能力。文档分为“简述题”和“综合题”两个部分,涵盖了SQL语言的基础到进阶应用。 简述题通常涉及到SQL的基本概念和语法...