设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询计算机系学生的姓名、所选的课程号和成绩。
select sname,cno,grade from student join sc on student.sno = sc.sno where sdept = '计算机系'
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询计算机系年龄大于20的学生详细信息。
select * from student where sdept = '计算机系' and sage > 20
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询第3学期开设的学分为4的课程名。
select cname from course where semester = 3 and creidt = 4
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询第2~4学期开设课程的课程名、学分和开课学期。
select cname,credit,semester from course where semester between 2 and 4
设有课程表:Course(Cno,Cname,Credit,Semester)。
写出在Course表中插入一行新数据的SQL语句,课程号为C100,课程名为Java,开课学期未定,学分为3。
insert into course values('C100','Java',3,null)
'设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询奇数学期(设学期的取值是1~8的整数)开设的课程名、开课学期和学分。 select cname,credit,semester from course where semester in(1,3,5,7)
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester),
选课表:SC(Sno,Cno,Grade)
查询计算机系成绩在80~90之间的学生姓名、课程名和成绩。
select sname,cname,grade from Student join SC on Student.sno = SC.sno join Course on Course.cno = SC.cno
where sdept = '计算机系' and grade between 80 and 90
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
写出在Student表中插入一行新数据的SQL语句,学号为S100,姓名:新生,性别:男,年龄:19,所在系未定。
insert into Student values('S100','新生','男',19,null)
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计每个系的女生人数,列出系名和女生人数。
select sdept,count(*) 女生人数 from student where ssex = '女' group by sdept
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计每个系的选课人数,列出系名和选课人数。
select sdept,count(distinct s.sno ) 选课人数 from student s join sc on s.sno = sc.sno group by sdept
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 将计算机系学生年龄加1。
update student set sage = sage + 1 where sdept = '计算机系'
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计计算机系每个学生的选课门数和考试总成绩(不包括没选课的学生),并按选课门数升序显示结果。
select s.sno,count(*) 选课门数,sum(grade) 总成绩 from student s join sc on student.sno = sc.sno
where sdept = '计算机系' group by s.sno order by count(*) asc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询选修了Java课程的学生姓名和所在系。
select sname,sdept from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'Java'
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果。
select sname,cno,grade from student s join sc on s.sno = sc.sno where grade > 80 order by grade desc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询选课门数最多的前2位学生,列出学号和选课门数。(不考虑并列情况) select top 2 sno,count(*) 选课门数 from sc group by sno order by count(*) desc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询选课人数最少的2门课程(包括没人选的课程,包括并列的情况),列出课程号和选课人数。(请用外连接实现)
select top 2 with ties c.cno,Count(sc.cno) 选课人数 from course c left join sc on c.cno = sc.cno group by c.cno order by count(sc.cno) asc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询哪些课程没有学生选,列出课程号和课程名。(请用外连接实现)
select c.cno,cname from course c left join sc on c.cno = sc.cno where sc.cno is null
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester),
选课表:SC(Sno,Cno,Grade)
查询计算机系哪些学生没有选课,列出学生姓名。(请用外连接实现)
select sname from student s left join sc on s.sno = sc.sno where sdept = '计算机系' and sc.sno is null
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询计算机系Java考试成绩最高的前3名学生的姓名和Java成绩(包括并列情况)。(请用连接查询实现)
select top 3 with ties sname from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'Java' and sdept = '计算机系' order by grade desc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade) 查询年龄最大的男生姓名和年龄。(请用子查询实现) select sname,sage from student where sage in( select max(sage) from student where ssex = '男') and ssex = '男'
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询C001课程的考试成绩高于该课程平均成绩的学生的学号和C001课成绩。(请用子查询实现)
select sno,grade from sc where cno = 'c001' and grade >( select avg(grade) from sc where cno = 'c001')
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
删除Java考试成绩小于50的学生的全部选课记录。(请用子查询形式实现) delete from sc where grade < 50 and cno in ( select cno from course where cname = 'Java' )
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
删除计算机系Java成绩不及格(小于60)学生的Java选课记录。(请用子查询形式实现) delete from sc
where sno in ( select sno from student where sdept = '计算机系') and cno in ( select cno from course where cname = 'Java')
and grade < 60
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
删除选课人数少于10人的课程(包括没人选的课程)。(请用子查询实现)
delete from course where cno in ( select cno from course c left join sc on c.cno = sc.cno group by c.cno having count(sc.cno)<10)
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询计算机系每个学生的Java考试情况,列出学号、姓名、Java成绩和成绩情况,其中成绩情况的显示规则为:
如果成绩大于等于90,则成绩情况为“好”; 如果成绩在80~89,则成绩情况为“较好”; 如果成绩在70~79,则成绩情况为“一般”; 如果成绩在60~69,则成绩情况为“较差”; 如果成绩小于60,则成绩情况为“差”。 select s.sno,sname,grade,成绩情况 = case when grade >= 90 then '好'
when grade between 80 and 89 then '较好' when grade between 70 and 79 then '一般' when grade between 60 and 69 then '较差' when grade < 60 then '差' end
from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'Java'
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),