|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
DBaaS向客户提供了许多与其他云服务相类似的优势:一个灵活的、可扩展的MySQL学习教程、按需服务的平台,它以自助服务和便捷管理为导向,可以对环境中的资源进行调配。server标题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=NC01
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)
那时候Sybase已经诞生了6年的时间。至于其他值得关注的开源数据库,PostgreSQL将在2009年达到20岁的生日。虽然MySQL并不是市场上最年轻的数据库,但是却有更多成熟的数据库可供我们选择。 |
|