370SQLServer课后实训参考答案.docx
- 文档编号:2034446
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:31
- 大小:60.79KB
370SQLServer课后实训参考答案.docx
《370SQLServer课后实训参考答案.docx》由会员分享,可在线阅读,更多相关《370SQLServer课后实训参考答案.docx(31页珍藏版)》请在冰豆网上搜索。
370SQLServer课后实训参考答案
课后实训参考答案
单元1(SQLServer概述)
1、使用SQL语句。
在Sale数据库中创建名为MyDataType的用户定义数据类型,数据类型为NVARCHAR,长度为20,该列允许为NULL。
USESale
GO
EXECsp_addtypeMyDataType,'NVARCHAR(20)','NULL'
GO
单元2(单表数据)
使用查询窗口或sqlcmd实施查询。
本实训使用Xk数据库。
--1.查看系部编号为“03”的系部名称。
USEXk
GO
SELECTDepartName
FROMDepartment
WHEREDepartNo='03'
GO
--2.查看系部名称中包含有“工程”两个字的系的全名。
USEXk
GO
SELECTDepartName
FROMDepartment
WHEREDepartNameLIKE'%工程%'
GO
--3.显示共有多少个系部。
USEXK
GO
SELECT'系部总数'=COUNT(*)
FROMDepartment
GO
--4.显示“01”年级共有多少个班级。
USEXK
GO
SELECT'01级班级数'=COUNT(*)
FROMClass
WHEREClassNoLIKE'2001%'
GO
SELECT'01级班级数'=COUNT(*)
FROMClass
WHEREClassNameLIKE'01%'
GO
SELECT'01级班级数'=COUNT(*)
FROMStudent
WHEREClassNoLIKE'2001%'
GO
--5.查看在“周二晚”上课的课程名称和教师。
USEXK
GO
SELECT'课程名称'=CouName,'任课教师'=Teacher
FROMCourse
WHERESchoolTime='周二晚'
GO
--6.查看姓“张”、“陈”、“黄”同学的基本信息,要求按照姓名降序排序查询结果。
USEXK
GO
SELECT*
FROMStudent
WHEREStuNameLIKE'张%'OR
StuNameLIKE'陈%'OR
StuNameLIKE'黄%'
ORDERBYStuNameDESC
GO
--方法
USEXK
GO
SELECT*
FROMStudent
WHEREStuNamelike'[张,陈,黄]%'
ORDERBYStuNameDESC
GO
单元2(多表查询)
--1.按系部统计课程的平均报名人数,要求显示系部名称、平均报名人数。
SELECT'系部名称'=DepartName,'平均报名人数'=AVG(WillNum)
FROMCourseC,DepartmentD
WHEREC.DepartNo=D.DepartNo
GROUPBYDepartName
GO
--如果小数点后只保留位
SELECT'系部名称'=DepartName,'平均报名数'=CONVERT(DECIMAL(5,2),AVG(WillNum))
FROMCourseC,DepartmentD
WHEREC.DepartNo=D.DepartNo
GROUPBYDepartName
GO
--2.统计各个系部的班级数,要求显示系部编号、系部名称和班级数量。
SELECTC.DepartNo,DepartName,COUNT(*)
FROMClassC,DepartmentD
WHEREC.DepartNo=D.DepartNo
GROUPBYC.DepartNo,DepartName
GO
--3.查看“甘蕾”同学选修的课程名、学分、上课时间、志愿号,按志愿号(升序)排序查询结果。
SELECTCouName,Credit,SchoolTime,WillOrder
FROMStuCouSC,CourseC,StudentS
WHERESC.CouNo=C.CouNoANDSC.StuNo=S.StuNoANDStuName='甘蕾'
ORDERBYWillOrder
GO
--4.查看“00电子商务”班的选修报名情况。
要求显示学号、姓名、课程编号、课程名称、志愿号,并按学号(升序)、志愿号排序(升序)。
SELECTS.StuNo,StuName,C.CouNo,CouName,WillOrder
FROMStuCouSC,CourseC,StudentS,ClassCL
WHERESC.CouNo=C.CouNoAND
SC.StuNo=S.StuNoAND
CL.ClassNo=S.ClassNoAND
ClassNameLike'00电子商务'
ORDERBYS.StuNo,WillOrder
GO
--5.按系部统计各系的最少报名人数、最多报名人数、平均报名人数和报名总数,并汇总显示所有系部的报名总数。
要求平均报名人数保留两位小数位。
SELECT'系部名称'=DepartName,'最少报名人数'=MIN(WillNum),'最多报名人数'=MAX(WillNum),'平均报名人数'=CONVERT(DECIMAL(5,2),AVG(WillNum)),'报名总数'=SUM(WillNum)
FROMCourseC,DepartmentD
WHEREC.DepartNo=D.DepartNo
GROUPBYDepartNameWITHCUBE
GO
单元3(维护数据)
--12.学号为“00000025”的同学第一志愿报名选修“001”课程,请在数据库中进行处理。
INSERTStuCou(StuNo,CouNo,WillOrder,State)
VALUES('00000025','001',1,'报名')
GO
/*课程报名人数增加人*/
UPDATECourse
SETWillNum=WillNum+1
WHERECouNo='001'
GO
--2.删除学号为“00000025”的学生的选课报名信息。
DELETEStuCou
WHEREStuNo='00000025'
GO
/*课程表'00000025'同学报名的那些课程报名人数都要减少1*/
--方法:
UPDATECourse
SETWillNum=WillNum-1
FROMCourse,StuCou
WHEREStuNo='00000025'and
Course.CouNo=StuCou.CouNo
GO
--方法2:
(游标)
DECLARE@CouNochar(3)
DECLAREMYCursorcursor
for
SELECTCouNofromStuCou
WHEREStuNo='00000025'
OPENMYCursor
FETCHNEXTFROMMYCursorINTO@CouNo
WHILE@@FETCH_STATUS=0
BEGIN
UPDATECourseSETWillNum=WillNum-1WHERECouNo=@CouNo
FETCHNEXTFROMMYCursorINTO@CouNo
END
CLOSEMYCursor
DEALLOCATEMYCursor
GO
--3.需要将“00多媒体”班级“杜晓静”同学的名字修改为“杜小静”。
UPDATEStudent
SETStuName='杜小静'
FROMStudentS,ClassC
WHERES.ClassNo=C.ClassNoAND
StuName='杜晓静'ANDClassName='00多媒体'
GO
--“00电子商务”班的“林斌”同学申请将已选修的“网络信息检索原理与技术”课程修改为“Linux操作系统”。
UPDATEStuCou
SETCouNo=(SELECTCouNoFROMCourseWHERECouName='Linux操作系统')
FROMStuCouSC,StudentS,CourseC,ClassCl
WHERESC.StuNo=S.StuNoAND
SC.CouNo=C.CouNoAND
S.ClassNo=Cl.ClassNoAND
S.StuName='林斌'AND
Cl.ClassName='00电子商务'AND
CouName='网络信息检索原理与技术'
GO
单元4(数据库设计)
某公司计划对产品的销售情况进行计算机管理。
产品表具有产品编号、产品名称、单价、库存数量4个属性。
客户表包括有客户编号、客户姓名、住址、联系电话4个属性。
产品的入库表包括有入库日期、产品编号、产品名称、入库数量、单价属性。
销售表包括有销售日期、产品编号、产品名称、客户编号、客户姓名、单价、销售数量。
1.绘出产品销售的E-R图。
2、将产品销售的E-R图转换为关系数据模型。
产品表:
产品编号
产品名称
单价
库存数量
客户表:
客户编号
客户名称
住址
联系电话
入库表:
入库日期
产品编号
产品名称
入库数量
单价
销售表:
销售日期
产品编号
产品名称
客户编号
客户姓名
单价
销售数量
3、将产品销售关系数据模型规范为Ⅲ范式。
可参考“创建和管理表”实训题。
4、请分析主键、外键、公共键。
主键:
产品表的产品编号,客户表的客户编号。
外键:
入库表的产品编号,销售表的产品编号、客户编号。
5、举例说明如何保证产品销售数据的完整性。
表数据完整性:
给产品表、客户表创建主键。
列数据的完整性:
可以给指定的列创建约束(参见实施数据完整性实训题目)。
参照完整性:
给入库表、销售表创建外键。
单元5(创建与管理数据库)
写出实现如下功能的SQL语句。
1.创建名字为Sale的销售数据库。
该数据库有一个名为Sale.mdf的主数据文件和名字为Sale_log.ldf的事务日志文件。
主数据文件容量为4MB,日志文件容量为10MB,数据文件和日志文件的最大容量为20MB,文件增长量为1MB。
CREATEDATABASESale
ON
PRIMARY(NAME=Sale,
FILENAME='C:
\Sale.mdf',
SIZE=4,
MAXSIZE=10,
FILEGROWTH=1)
LOGON
(NAME=Sale_log,
FILENAME='D:
\Sale_log.ldf',
SIZE=2,
MAXSIZE=10,
FILEGROWTH=1)/*注意结尾处无逗号*/
GO
2.在Sale数据库下新增名字为UserGroup的文件组。
USESale
Go
ALTERDATABASESale
ADDFILEGROUPUserGroup
Go
3.以增加次数据文件的方式扩充Sale数据的容量。
次数据文件容量为5MB,最大容量为10MB,文件增量为1MB。
要求将次数据文件保存在与事务日志文件不同的存储设备上,次数据文件作为UserGr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 370 SQLServer 课后 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)