SQL Server之查詢檢索操作

J_Anson發表於2016-05-19

 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資料庫

相關文章