在保证需操作的数据库中已经存在XSKC模式下的数据表student、course、sc
1、修改数据表信息
1)修改student表,将cs系姓名为“李咏”的学生姓名为“李勇”
UPDATE XSKC.student
SET sname = ‘李勇’
WHERE sdept=‘CS’ AND sname=‘李咏’
2)将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”
UPDATE XSKC.student
SET sname=‘王丹丹’,ssex=‘女’,sage=20,sdept=‘MA’
WHERE sno=‘200515010’
3)修改course表,将“数据处理”的学分改为3学分
UPDATE XSKC.COURSE
SET ccredit=3
WHERE cname=‘数据处理’
4)修改CS表,将选修课程“1”的同学成绩加5分
UPDATE XSKC.sc
SET grade=grade+5
WHERE cno=1
5)删除数据表student中无专业的学生记录
DELETE FROM XSKC.student
WHERE sdept IS NULL
6)删除数据表course中学分低于1学分的课程信息
DELETE
FROM XSKC.course
WHERE ccredit<1
2.请使用T-SQL 语句实现以下操作
1)列出姓“王”且全名为3个汉字的学生的基本信息
USE student
SELECT *
FROM XSKC.student
WHERE sname like ‘王__’
2)查询在1986年以后出生的学生的学号和姓名
USE student
SELECT sno,sname
FROM XSKC.student
WHERE sage<2019-1986
3)查询没有分配院系的学生的姓名和学号
USE student
SELECT sno,sname
FROM XSKC.student
WHERE sdept IS NULL
4)按照课程号、成绩降序显示课程成绩在70-80之间的学生的学号、课程号及成绩
USE student
SELECT *
FROM XSKC.sc
WHERE grade BETWEEN 70 AND 80
ORDER BY cno DESC,grade DESC
5)按照院系降序显示所有学生的 “院系,学号、姓名、性别、年龄”等信息,其中院系按照以下规定显示:院系为CS显示为计算机系,院系为IS显示为信息系,院系为MA显示为数学系,院系为EN显示为外语系,院系为CM显示为中医系,院系为WM显示为西医系,其他显示为院系不明
USE student
SELECT 院系=
case
when sdept=‘CS’ then ‘计算机系’
when sdept=‘IS’ then ‘信息系’
when sdept=‘MA’ then ‘数学系’
when sdept=‘EN’ then ‘外语系’
when sdept=‘CM’ then ‘中医系’
when sdept=‘WM’ then ‘西医系’
else ‘院系不明’
end,sno as ‘学号’,sname as ‘姓名’,ssex as ‘性别’,sage as ‘年龄’
FROM XSKC.student
ORDER BY 院系 DESC
6)查询同时选修“1”号课程和“2”号课程的所有学生的学号
USE student
SELECT sno
FROM XSKC.sc
WHERE cno=1 AND sno in(SELECT sno FROM XSKC.sc WHERE Cno=2)
7)查询所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段“院系规模”,其中若该院系人数>=5则该字段值为“规模很大”,若该院系人数大于等于4小于5则该字段值为“规模一般”, 若该院系人数大于等于2小于4则该字段值为“规模稍小”,否则显示“规模很小”
USE student
SELECT distinct sdept,院系规模=
case
when count()>5 then ‘规模较大’
when count()between 4 and 5 then ‘规模一般’
when count(*)between 2 and 4 then ‘规模较小’
end
FROM XSKC.student
WHERE sdept IS NOT NULL
GROUP BY sdept
8)查询学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为“学生总人数,平均年龄”
USE student
SELECT 学生总人数=COUNT(distinct sno),平均年龄=AVG(sage)
FROM XSKC.student
9)查询选修的课程数大于3的各个学生的选修课程数
USE student
SELECT DISTINCT 学号=sno,选课数=COUNT(cno)
FROM XSKC.sc
GROUP BY sno
HAVING COUNT(cno)>3
10)查询IS系学生的学号、姓名、性别、年龄,并统计出IS系的学生个数
USE student
SELECT sno 学号,sname 姓名,ssex 性别,sage 年龄
FROM XSKC.student
SELECT distinct IS系的学生个数=COUNT(*)
FROM XSKC.student
WHERE sdept=‘IS’
11)查询每个院系的学生前两条记录,并组成新表ceshi
USE student
SELECT a.*
INTO ceshi
FROM XSKC.student a
WHERE sno IN
(SELECT top 2 sno
FROM XSKC.student
WHERE sdept=a.sdept
order by sno)
12)查询平均成绩大于“赵菁菁”平均成绩的各个学生的学号、平均成绩
USE student
SELECT sno 学号,AVG(grade) 平均成绩
FROM XSKC.sc
GROUP BY sno
HAVING AVG(grade)>(SELECT AVG(grade)from XSKC.sc,XSKC.student where sname=‘赵菁菁’)
实验步骤
命令方式:在【SQL Server Management Studio】窗口左上方选择【新建查询】按钮,启动SQL编辑器窗口,在光标处输入T-SQL语句,单击【执行】按钮。例如第一题可输入:
select * from student where sname not like ‘刘%’