SQL Server查询和检索操作。
一道例题学会查询和检索操作:
1、在SQL SERVER 2008上附加teaching数据库,其中三张表的含义解释如下:
学生表dbo.student有属性sno、sname、spec、birthday、email、sex、scholarship,分别代表学号、姓名、专业、生日、电子邮箱、性别、奖学金;
课程表dbo.course有属性cno、cname、credit、teacher,分别代表课号、课程名、学分、任课教师;
选课表dbo.student_course有属性sno、cno、grade,分别代表学号、课号、成绩。
2、在teaching数据库中完成下列查询:
(1)求选修’10101’号课程且成绩大于80分的所有男生的姓名;
(2)求至少选修’10102’和’10104’两门课程的学生信息;
(3)求每个学生所选课程的平均成绩,并用查询结果来创建一个新的数据表XSPJCJ(sno,sname,avggrade);
(4)求选修全部课程的所有学生的学号和姓名;
(5)求课程不及格学生的课号、课程名、学号、姓名及成绩;
(6)查询选修’Java程序设计’课程的学生学号和姓名;
(7)查询所有低于学生选课平均成绩的学生情况;
(8)检索’信管’专业的学生信息,包括学号、姓名、性别;
(9)检索’网络’专业且有课程成绩不及格(<60)的学生信息,包括学号、姓名、课程名和分数;
(10)检索有学生成绩为满分(100分)的课程的课程号、课程名和学分。
SQL Server 2008 R2上实现过程:
--1
--求选修’10101’号课程且成绩大于80分的所有男生的姓名;
use teaching
select student.sname,student_course.cno,student_course.grade from student,student_course
where student_course.cno='10101' and student.sex='男'
and student_course.grade>80
go
--2
--求至少选修’10102’和’10104’两门课程的学生信息
use teaching
select distinct s.sno,s.sname,s.sex,s.spec,s.scholarship,s.birthday,s.email
from student s,student_course sc1,student_course sc2
where sc1.cno='10102' and sc2.cno='10104' and s.sno=sc1.sno
go
--3
--求每个学生所选课程的平均成绩,并用查询结果来创建一个新的数据表XSPJCJ(sno,sname,avggrade)
use teaching
select student.sno,student.sname,avg(student_course.grade) as avggrade
into XSPJCJ
from student,student_course
where student.sno=student_course.sno
group by student.sno,student.sname
go
--4
--求选修全部课程的所有学生的学号和姓名
use teaching
select student.sno,student.sname
from student,student_course,course
where student.sno=student_course.sno and student_course.cno=course.cno
group by student.sno,student.sname
having COUNT(*)=(select COUNT(*) from course)
go
--5
--求课程不及格学生的课号、课程名、学号、姓名及成绩
use teaching
select c.cno,c.cname,s.sno,s.sname,sc.grade
from student s,student_course sc,course c
where s.sno=sc.sno and sc.cno=c.cno and sc.grade<60
go
--6
--查询选修’Java程序设计’课程的学生学号和姓名
use teaching
select s.sno,s.sname
from student s,student_course sc,course c
where s.sno=sc.sno and sc.cno=c.cno and c.cname='Java程序设计'
go
--7
--查询所有低于学生选课平均成绩的学生情况
use teaching
select s.sno,s.sname,s.sex,s.spec,s.scholarship,s.email,s.birthday
from student s,student_course sc
where s.sno=sc.sno
and sc.grade<(select avggrade=avg(grade) from student_course)
go
--8
--检索’信管’专业的学生信息,包括学号、姓名、性别
use teaching
select s.sno,s.sname,s.sex
from student s
where s.spec='信管'
go
--9
--检索’网络’专业且有课程成绩不及格(<60)的学生信息,包括学号、姓名、课程名和分数
use teaching
select s.sno,s.sname,c.cname,sc.grade
from student s,student_course sc,course c
where s.sno=sc.sno and sc.cno=c.cno and sc.grade<60
go
--10
--检索有学生成绩为满分(100分)的课程的课程号、课程名和学分
use teaching
select c.cno,c.cname,c.credit
from student_course sc,course c
where sc.cno=c.cno and sc.grade=100
go
资源名:Teaching数据库