• 170.00 KB
  • 2022-04-22 11:21:02 发布

rver_2000_实用教程》习题答案 叶潮流 吴伟 大连理工大学出版.doc

  • 17页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《SQLServer2000实用教程》课后习题答案习题一一、选择题1-5.BCAAA6-10.DBDBA11-15.CABDC16-20.DDADB21-25.ACABC二、填空题1.数据库系统2.数据库3.逻辑模型4.概念5.物理模式6.多对多7.实体8.外模式/模式映像9.层次10.数据操纵11.数据处理12.网状模型13.实体14.关键字15.实体16.存储模式17.网状模型18.E-R图19.用户20.内模式习题二一、填空题1-5BDBBB6-10CAAAA11-15DBDBC16-20ABCAD21-25BAAAA二、选择题1.32.备用码3.外键4.R1,R25.第一范式6.BCNF7.1,18.全外连接9.关系模式10.关系型11.主键12.自然13.1NF2NF14.关系15.单一属性16.参照17.子集18.2NF3NF19.θ连接20.关系21.数据依赖22.CXS23.π学号(X)S24.学号系主任25.BCNF决定因素三、计算题1.ABCg5d a4hb6hc3e2.ABCa4hb6hb2h3.(1)R1={XYZ|R(XYZ)∧Y≤5∧Z=f)}ABCa2fg3f(2)R2={XYZ|R(XYZ)∨S(XYZ)∧Y≠6∧Z≠7)}ABCa2fd5hg3fb7fd5hb4fg8e(3)R3={YZVU|(∃X)(S(XYZ)∧W(UV)∧Y≤6∧V=7)}BCED6E7e5h7e4f7e4.(1)主码:(教师号、课程号)(2)第一范式,因为存在部分函数依赖(3)分解方法为:教师表(教师号,姓名,职称)课程表(课程号,课程名,学分,教科书名)教师授课表(教师号,课程号) 习题三一、选择题1-5.BCDAB6-10.DCABB11-15.ADBAB16-20.CBDAB二、填空题1.sa2.客户端3.Northwind4.核心5.DTS6.登陆账号7.本地计算机名8.系统管理员9.域用户账户10.暂停11.服务器12.企业管理器13.查询分析器14.sql15.msdb三、实践题1.略习题四一、选择题1-5.DCBBA6-10.DDCBC11-15.AAAB二、填空题1.用户数据库2.*.ldf3.mn_data4.未指定文件组的数据文件5.配置6.附加7.DBCCshrinkdatabase8.sp_rename9.主文件组10.1M三、实践题1.createdatabaselxon(name=lx_data,filename="d:stulx_data.mdf",size=5,maxsize=10,filegrowth=1)logon(name=lx_log,filename="d:stulx_log.ldf",size=2,maxsize=10,filegrowth=5%) 2.(1)alterdatabaselxaddfilegroupdygoalterdatabaselxaddfile(name=dya,filename="d:studya.ndf"),(name=dyb,filename="d:studyb.ndf")tofilegroupdygo(2)alterdatabaselxaddlogfile(name=dy_log,filename="d:study_log.ldf",size=1,maxsize=unlimited,filegrowth=1)go(3)alterdatabaselxmodifyname=studbgo(4)习题五一、选择题1-5.CDBAB6-10.DADAC11-15.BDBDC16-20.DBAAB21-25BABCA二、填空题1.参照2.主键3.14.null5.unique6.永久表7.tempdb8.169.主键10.sp_bindrule11.索引12.规则对象13.查询14.字段15.check 三、实践题1.略2.2.uselibararygocreatetable学生(学号char(8)notnull,姓名varchar(20)notnull,性别char(2),院系varchar(20))gocreatetable借阅(学号char(8)notnull,书名char(6)notnull,借书日期datetime,还书日期datetime)go(1)uselibrarygoaltertable学生add民族varchar(6)constraintdf_学生_民族default"汉"(2)uselibrarygoaltertable学生altercolumn姓名char(6)goaltertable学生addconstraintpk_学生_学号primarykey(学号)go(3)uselibrarygoaltertable借阅add到期日期datetime go(4)altertable借阅addconstraintdf_借书日期defaultgetdate()for借书日期go(5)altertable借阅addconstraintfk_借阅_学生foreignkey(学号)references学生(学号)go(7)altertable学生dropconstraintdf_学生_民族goaltertable借阅dropconstraintdf_借书日期go(8)createrulephone_ruleas@ph_rllike"0551-2159[0-9][0-9][0-9]"Go(9)execsp_bindrule"phone_rule","出版社.电话"go(10)execsp_addtype编号,"varchar(20)","notnull"习题六一、选择题1-5.CCBAB6-10.CBDBB11-15.BBBDB16-20.BCCCA21-25ADDCC26-30CDCBC二、填空题1.update2.where3.[-]4.union5.交叉连接6.into7.groupby8.revoke9.orderby10.groupby11.and12.where13.相关子查询14.交叉连接15.all16.withrollup17.distinct18.from子句19.嵌套查询20.truncatetable21.数据转转与转移 三、实践题1.selecta.姓名,a.出生日期,b.姓名,b.出生日期from学生a,学生bwherea.出生日期=b.出生日期anda.学号!=b.学号2.select学号,"高考投档成绩",总分from学生3.selectdistinct(籍贯)from学生4.selectavg(总分)from学生groupby性别5.select*from学生where籍贯="安徽"6.select*from学生where性别="女"and出生日期=(selectmax(出生日期)from学生where性别="女")goselect*from学生where性别="男"and出生日期=(selectmax(出生日期)from学生where性别="男")7.select*from学生orderby总分desc8.select学生.学号,姓名,性别,课程号,成绩from学生,选修where学生.学号=选修.学号and成绩>859.select姓名,"学生"as身份from学生where性别="男"unionselect姓名,"教师"as身份from教师where性别="男"10.select*from学生where出生日期between"1990-1-1"and"1991-1-1"11.selecttop5*intocoursefrom课程 12.select籍贯,count(*)from学生groupby籍贯13.select学号,姓名,籍贯from学生where籍贯="安徽"computecount(籍贯)或select学号,姓名,籍贯from学生where籍贯="安徽"goselect,count(*)from学生where籍贯="安徽"14.select学号,姓名,籍贯from学生where籍贯="安徽"orderbyleft(学号,6)computecount(籍贯)byleft(学号,6)或select学号,姓名,籍贯from学生where籍贯="安徽"goselectleft(学号,6),count(*)from学生where籍贯="安徽"groupbyleft(学号,6)15.select*from学生awhere出生日期>=(selectmax(出生日期)from学生bwherea.性别=b.性别)16.select*from选修awhere成绩>(selectavg(成绩)from选修bwherea.学号=b.学号)17.select*from选修where成绩>(selectavg(成绩)from选修)略习题七一、填空题1.全局变量2.注释语句3.select语句4.单引号5.表达式6.break7.68.max()9.waitfor10.end11.syscomments12.‘ab’13.当前系统日期时间的字符14.T-SQL15.GO16.批处理17.Unicode18.内嵌表值19.smalldatetime20.smallmoney 二、选择题1-5DCBDA6-10DCDBD11-15ACBDB16-20.BDBAB21-25DCCBC三、实践题1.declare@aint,@bint,@cfloatset@a=10set@b=20set@c=@a*@bprint@c2.declare@itinyint,@jtinyintset@i=1while@i<=4beginset@j=2*@i-1printspace(20-2*@i)+replicate("*",@j)set@i=@i+1end3.createfunctiondbo.finfo(@ghchar(8)="130101")returnstableasreturn(select教师.工号,姓名,性别,课程号,班级号from教师,授课where教师.工号=授课.工号and教师.工号=@gh)goselect*fromdbo.finfo(default)go4.createfunctiondbo.fmax(@num1int,@num2int)returnsintasbegindeclare@maxintset@max=casewhen@num1>=@num2then@num1when@num1<=@num2then@num2endreturn@maxend 5.declare@nint,@iint,@jint,@kintset@n=100while@n<=999beginset@i=@n/100set@j=(@n-@I*100)/10set@k=@n%10if@n=@i*@i*@i+@j*@j*@j+@k*@k*@kprintcast(@naschar(3))+"是水仙花数"set@n=@n+1endgo6.createfunctionscore_info(@xhchar(8))returns@total_scoretable(学号char(8),姓名char(6),性别char(2),课程号char(2),课程名称varchar(20),成绩numeric(5,1))asbegininsert@total_scoreselect学生.学号,姓名,性别,课程.课程号,课程名称,选修.成绩from学生,课程,选修where学生.学号=选修.学号and课程.课程号=选修.课程号and学生.学号=@xhreturnendgoselect*fromscore_info("08010101")习题八一、填空题1.客户端2.只进游标3.open4.scroll5.fetch6.基表7.select8.withcheckoption9.查询10.更新二、选择题1-5.ACCAD6-10.CACBA11-15.DAAAD 三、实践题1.usejxglgocreateviewinformasselect学号,姓名,性别,"入学成绩"=总分from学生where性别="女"go2.select*frominform3.usejxglgocreateviewInformasselect*from学生goinsertintoInform(学号,姓名,性别)values("08010203","贾诸葛","女")运行结果:两者都有数据,因为通过视图插入是直接对表的操作。Select*from学生和Select*fromInform4.usejxgldeclaremycursorscrollcursorforselect*from学生openmycursorfetchfirstfrommycursorfetchlastfrommycursor5.(1)usejxgldeclaremycursor2insensitivecursorforselect*from学生openmycursor2select@@cursor_rows,case@@cursor_rowswhen-1then"该游标为动态游标"when0then"没有打开游标"else"非动态游标,包含总行数"end (2)usejxgldeclaremycursor3cursorkeysetforselect*from学生select@@cursor_rows,case@@cursor_rowswhen-1then"该游标为动态游标"when0then"没有打开游标"else"非动态游标,包含总行数"endopenmycursor3select@@cursor_rows,case@@cursor_rowswhen-1then"该游标为动态游标"when0then"没有打开游标"else"非动态游标,包含总行数"end(3)usejxgldeclaremycursor4scrollcursorforselect*from学生openmycursor4select@@cursor_rows,case@@cursor_rowswhen-1then"该游标为动态游标"when0then"没有打开游标"else"非动态游标,包含总行数"end习题九一、填空题1.服务器2.系统3.varying4.##5.output6.表7.insteadof8.insert9.deleted10.update二、选择题1-5.DBABC6-10.ABACA11-15.DBBBC 三、实践题1.usejxglgocreateprocnacrissusasdeclare@nint,@iint,@jint,@kintset@n=100while@n<=999beginset@i=@n/100set@j=(@n-@I*100)/10set@k=@n%10if@n=@i*@i*@i+@j*@j*@j+@k*@k*@kprintcast(@naschar(3))+"是水仙花数"set@n=@n+1endgoexecnacrissus2.usejxglgocreateprocclass_info@bjbhchar(6)="080101"asselect*from班级where班级号=@bjbhgoexecclass_infogo3.usejxglgocreateprocproc_num@kchchar(2)="01"asselectcount(*)as人数from选修where课程号=@kchgroupby课程号goexecproc_num"02"go或createprocpro_num_选修1@kchchar(2)="01"as select课程号,count(*)as人数from选修groupby课程号having课程号=@kchgoexecpro_num_选修1"01"4.usejxglgocreatetriggerins_学生on学生afterinsertasdeclare@ageintselect@age=datediff(yy,inserted.出生日期,getdate())from学生,insertedwhere学生.学号=inserted.学号if@age<10beginraiserror("不能输入年龄小于10的学生",10,1)rollbacktransactionendgoinsertinto学生(学号,姓名,性别,出生日期)values("09130112","张风","男","2008-09-09")5.createtriggertri_选修on选修forupdate,insertasdeclare@scoreint,@courseidchar(2),@stuidchar(8)select@score=成绩,@courseid=课程号,@stuid=学号frominsertedif@score<60 update选修set备注="补考"where学号=@stuidand课程号=@courseidgoinsertinto选修(学号,课程号,成绩)values("08010101","06",56)goselect*from选修go6.usejxglgoaltertriggertri_del_学生on学生fordeleteasdeclare@stuidchar(8)select@stuid=学号fromdeleted if(selectcount(*)fromdeleted/*where学号=@stuid*/)<>@@rowcountprint"删除了选修表数据,有影响"elsebeginprint"没有影响"select*from选修where学号=@stuidendreturngodeletefrom学生where学号="08020102"7.createtrigger[checkid]on选修insteadofinsertasifnotexists(select*from学生where学号=(select学号frominserted))print"学号不存储在学生表中,不能插入该记录"elsebegininsertinto选修select*frominsertedprint"已经成功插入记录!"end习题十一、填空题1-5.ABDDC6-10.xAXBB11.D二、选择题1.T-SQL2.逻辑名称3.磁盘4.事务日志备份5.大容量日志模式6.物理设备名7.逻辑设备名8backupdatabase9.restoredatabase10sp_addumpdevice三、实践题1. 习题十一一、填空题1-5CCCCB6-10DBCAB11-15DBADD二、选择题1.备份2.master3.model4.登录5.windows模式6.语句权限7.dbo8.登录账户9.guest10.dbo三、实践题1.usemastergosp_addloginstu_login12.sp_addloginstu_login2,’123’,’pubs’3.(1)alterloginsaenable---部分机器需要这个代码启用sa登录名(2)初始界面(图1)----->断开连接(图2)----->连接对象资源管理器(图3)----->连接服务器(图4)---->sa成功登陆界面((图5)(3)输入如下代码usepubsgosp_grantdbaccess"stu_login1","stu_login1_u"gosp_grantdbaccess"stu_login2","stu_login2_u"4.usepubsgocreaterolemyrolegosp_addrolemember"myrole","stu_login1_u"5.(1)usepubs gograntcreatetabletostu_login1_u(2)usepubsgograntselect,insert,update,deleteon图书tostu_login1_u(3)usepubsgograntselecton图书(图书编号,定价,出版日期)tomyrolewithgrantoptiongrantselecton图书(图书编号,定价,出版日期)tostu_login1_u,stu_login2_uwithgrantoption(4)select*from图书--无法查询select图书编号,定价,出版日期from图书---能查询注意:验证需在登录名stu_login1状态下习题十二一、填空题1-5.BAABC6-10.ACBAA11-15.BBCCC二、选择题1.备份2.master3.model4.登录5.windows模式6.语句权限7.dbo8.登录账户9.guest10.dbo'