70-00_SQLServer00课后实训参考答案
课后实训参考答案
单元1(SQL Server概述)
1、使⽤SQL语句。在Sale数据库中创建名为MyDataType的⽤户定义数据类型,数据类型为NV ARCHAR,长度为20,该列允许为NULL。
USE Sale
GO
EXEC sp_addtype MyDataType,'NVARCHAR(20)','NULL' GO
单元2(单表数据)
使⽤查询窗⼝或sqlcmd实施查询。本实训使⽤Xk数据库。
--1.查看系部编号为“03”的系部名称。
USE Xk
GO
SELECT DepartName
FROM Department
WHERE DepartNo='03'
GO
--2.查看系部名称中包含有“⼯程”两个字的系的全名。
USE Xk
GO
SELECT DepartName
FROM Department
WHERE DepartName LIKE'%⼯程%' GO
-
-3.显⽰共有多少个系部。
USE XK
GO
SELECT'系部总数'=COUNT(*)
FROM Department
GO
--4.显⽰“01”年级共有多少个班级。
USE XK
GO
SELECT'01 级班级数'=COUNT(*)
FROM Class
WHERE ClassNo LIKE'2001%'
GO
SELECT'01 级班级数'=COUNT(*)
FROM Class
WHERE ClassName LIKE'01%'
GO
SELECT'01 级班级数'=COUNT(*)
FROM Student
WHERE ClassNo LIKE'2001%'
GO
--5.查看在“周⼆晚”上课的课程名称和教师。
USE XK
GO
SELECT'课程名称'=CouName,'任课教师'=Teacher
sql统计每个系的学生人数
FROM Course
WHERE SchoolTime='周⼆晚'
GO
--6.查看姓“张”、“陈”、“黄”同学的基本信息,要求按照姓名降序排序查询结果。USE XK
GO
SELECT*
FROM Student
WHERE StuName LIKE'张%'OR
StuName LIKE'陈%'OR
StuName LIKE'黄%'
ORDER BY StuName DESC
GO
--⽅法
USE XK
GO
SELECT*
FROM Student
WHERE StuName like'[张,陈,黄]%' ORDER BY StuName DESC
GO
单元2(多表查询)
--1.按系部统计课程的平均报名⼈数,要求显⽰系部名称、平均报名⼈数。
'=AVG(WillNum)
FROM Course C,Department D
WHERE C.DepartNo=D.DepartNo
GROUP BY DepartName
GO
--如果⼩数点后只保留位
SELECT'系部名称'=DepartName,'平均报名数
'=CONVERT(DECIMAL(5,2),AVG(WillNum))
FROM Course C,Department D
WHERE C.DepartNo=D.DepartNo
GROUP BY DepartName
GO
--2.统计各个系部的班级数,要求显⽰系部编号、系部名称和班级数量。
SELECT C.DepartNo,DepartName,COUNT(*)
FROM Class C,Department D
WHERE C.DepartNo=D.DepartNo
GROUP BY C.DepartNo,DepartName
GO
--3.查看“⽢蕾”同学选修的课程名、学分、上课时间、志愿号,按志愿号(升序)排序查询结果。
SELECT CouName,Credit,SchoolTime,WillOrder
FROM StuCou SC,Course C,Student S
WHERE SC.CouNo=C.CouNo AND SC.StuNo=S.StuNo AND StuName='⽢蕾'
ORDER BY WillOrder
GO
--4.查看“00电⼦商务”班的选修报名情况。要求显⽰学号、姓名、课程编号、课程名称、志愿号,并按学号(升序)、志愿号排序(升序)。
SELECT S.StuNo,StuName,C.CouNo,CouName,WillOrder FROM StuCou SC,Course C,Student S,Class CL
WHERE SC.CouNo=C.CouNo AND
SC.StuNo=S.StuNo AND
CL.ClassNo=S.ClassNo AND
ClassName Like'00电⼦商务'
ORDER BY S.StuNo,WillOrder
GO
--5.按系部统计各系的最少报名⼈数、最多报名⼈数、平均报名⼈数和报名总数,并汇总显⽰所有系部的报名总数。要求平均报名⼈数保留两位⼩数位。
'=MIN(WillNum),'最多报名⼈数'=MAX(WillNum),'平均报名⼈数'=CONVERT(DECIMAL(5,2),AVG(WillNum)),'报名总数'=SUM(WillNum)
FROM Course C,Department D
WHERE C.DepartNo=D.DepartNo
GROUP BY DepartName WITH CUBE
GO
单元3(维护数据)
--12.学号为“00000025”的同学第⼀志愿报名选修“001”课程,请在数据库中进⾏处理。
INSERT StuCou(StuNo,CouNo,WillOrder,State)
VALUES('00000025','001',1,'报名')
GO
/*课程报名⼈数增加⼈*/
UPDATE Course
SET WillNum=WillNum+1
WHERE CouNo='001'
GO
--2.删除学号为“00000025”的学⽣的选课报名信息。
DELETE StuCou
WHERE StuNo='00000025'
GO
/*课程表'00000025'同学报名的那些课程报名⼈数都要减少1*/
--⽅法:
UPDATE Course
SET WillNum=WillNum-1
FROM Course,StuCou
WHERE StuNo='00000025'and
Course.CouNo=StuCou.CouNo
GO
--⽅法2:(游标)
DECLARE @CouNo char(3)
DECLARE MYCursor cursor
for
SELECT CouNo from StuCou
WHERE StuNo='00000025'
OPEN MYCursor
FETCH NEXT FROM MYCursor INTO @CouNo
WHILE@@FETCH_STATUS=0
BEGIN
UPDATE Course SET WillNum=WillNum-1 WHERE CouNo=@CouNo
FETCH NEXT FROM MYCursor INTO @CouNo
END
CLOSE MYCursor
DEALLOCATE MYCursor
GO
--3.需要将“00多媒体”班级“杜晓静”同学的名字修改为“杜⼩静”。
UPDATE Student
SET StuName='杜⼩静'
FROM Student S,Class C
WHERE S.ClassNo=C.ClassNo AND
StuName='杜晓静'AND ClassName='00多媒体' GO
--“00电⼦商务”班的“林斌”同学申请将已选修的“⽹络信息检索原理与技术”课程修改为“Linux操作系统”。
UPDATE StuCou
SET CouNo=(SELECT CouNo FROM Course WHERE CouName='Linux操作系统')
FROM StuCou SC,Student S,Course C,Class Cl
WHERE SC.StuNo=S.StuNo AND
SC.CouNo=C.CouNo AND
S.ClassNo=Cl.ClassNo AND
S.StuName='林斌'AND
Cl.ClassName='00电⼦商务'AND
CouName='⽹络信息检索原理与技术'
GO
单元4(数据库设计)
某公司计划对产品的销售情况进⾏计算机管理。产品表具有产品编号、产品名称、单价、库存数量4个
属性。客户表包括有客户编号、客户姓名、住址、4个属性。产品的⼊库表包括有⼊库⽇期、产品编号、产品名称、⼊库数量、单价属性。销售表包括有销售⽇期、产品编号、产品名称、客户编号、客户姓名、单价、销售数量。
1.绘出产品销售的E-R图。
2、将产品销售的E-R图转换为关系数据模型。
产品表:
客户表:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。