萌萌妈妈 发表于 2015-1-16 22:30:15

MYSQL网页编程之SQL Server 实习题3

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并不是市场上最年轻的数据库,但是却有更多成熟的数据库可供我们选择。

分手快乐 发表于 2015-1-19 15:39:45

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。

金色的骷髅 发表于 2015-1-28 06:08:57

其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!

透明 发表于 2015-2-5 17:01:02

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。

小女巫 发表于 2015-2-12 23:55:21

入门没那么困难,精通没那么容易

小妖女 发表于 2015-3-3 11:47:02

个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。

仓酷云 发表于 2015-3-11 10:50:06

语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!

第二个灵魂 发表于 2015-3-18 07:18:40

外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。

简单生活 发表于 2015-3-25 13:51:43

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
页: [1]
查看完整版本: MYSQL网页编程之SQL Server 实习题3