SQL Server之查询检索操作

 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数据库

你可能感兴趣的:(SQL,Server)