2023年6月21日发(作者:)

设学生选课库中有三个数据表:

S(sno,sname,birthday,sdepartment,tel,sex)

SC(sno,cno,grade)

C(cno,cname,teacher,pcno)

完成下列查询任务:

1、检索至少选修课程“数据结构”和“C语言”的学生学号。

Select

From SC AS x, SC As y

Where = and

=(Select cno From C Where cname='数据结构') and

=(Select cno From C Where cname='C语言')

2、检索学习课程号为C02的学生学号和姓名。

Select ,sname

From S,SC

Where = and ='C02'

3、检索选修课程“数据库”的学生学号和姓名。

Select ,sname

From S,SC,C

Where = and = and ='数据库'

4、检索选修课程号为C02或C04的学生学号。

Select distinct

From S,SC

Where = and (='C02' or ='C04')

5、检索至少选修课程号为C02和C04的学生姓名。

Select sname From S Where sno in

(Select

From SC AS x, SC As y

Where = and ='C02' and ='C04')

6、检索没有选修课程“数据库”的学生姓名和年龄。

Select sname,year(getdate()) - year(birthday)

From S where not Exists(

Select * From C, SC

Where = and = and cname='数据库') 7、在SC表中检索男生选修的课程名。

Select distinct cname From S, SC, C

Where ='男' and = and =

8、检索每个学生的出生年份。

Select Year(birthday) From S

9、在S中检索学生的姓名和出生年份,输出的列名分别为STUDENT_NAME和BIRTH_YEAR。

Select sname as STUDENT_NAME, Year(birthday) as BIRTH_YEAR From S

10、向基本表SC中插入一条元组(S0404,C06,90)。

Insert Into SC Values('S0404', 'C06', 90)

11、把课程名为VB的成绩从基本表SC中删除。

Delete From SC Where cno =

(Select cno From C Where cname='VB')

12、把女生的成绩提高10%。

Update SC Set grade=grade*1.1

Where sno in(

Select sno From S Where sex='女'

)

13、列出选修课程超过3门的学生姓名及选修门数。

Select sname, count(*) From SC, S

Where =

Group By sname

Having count(*) > 3

14、求选修了各课程的学生人数。

Select cname, count(*) From SC, C

Where =

Group By cname

15、在SC中,求选修课程C01的学生的学号和得分,并将结果按分数降序排序。

Select sno, grade From SC Where cno='C01' order by Grade Desc

16、查找每个同学的学号及选修课程的平均成绩情况。

Select sno, AVG(Grade) From SC

Group By sno

17、列出学生所有可能的选课情况。

Select , sname, cname From S, SC, C Where = and =

18、列出每个同学的学号及选修课程的平均成绩情况,没有选修的同学也列出。

Select ,AVG(Grade)

From SC right Join S ON =

Group By

19、列出每个同学的学号及选修课程号,没有选修的同学也列出。

Select ,cno

From SC right Join S ON =

20、如果学号为J0404的学生成绩少于90分,则加上10分。

Update SC Set Grade=Grade+10 Where sno='J0404' and Grade<90

21、将成绩最低的学生成绩加上10分。

Update SC Set =+10 From

(Select * From SC Where Grade=(Select Min(Grade) From SC)) as t

Where = and =

22、将成绩最高前3名的学生成绩减去20分。

Update SC Set =-20 From

(Select Top 3 * From SC Order By Grade Desc) as t

Where = and =

23、将成绩最低前10%的学生成绩减去5分。

Update SC Set =-5 From

(Select Top 10 PERCENT * From SC Order By Grade ASC) as t

Where = and =

24、检索至少有两名男生选修的课程名。

Select cname From C Where cno in

(Select cno From SC, S

Where = and sex='男'

Group by

Having Count() > 1)

25、检索S中不姓“王”同学记录。

Select * From S Where sname not Like '王%'

26、检索和“李军”同性别并同班的同学姓名。

Select sname From S

Where sex=(Select sex From S Where sname='李军') and sdepartment=(Select sdepartment From S Where sname='李军')

and sno <>(Select sno From S Where sname='李军')

27、统计被学生选修的课程门数。

Select Count(distinct cno) From SC

28、求选修C04课程的学生的平均年龄。

Select AVG(Year(getdate()) - Year(Birthday)) From SC, S

Where ='C04' and =

29、求LIU老师所授课程的每门课程的学生平均成绩。

Select cno, AVG(Grade) From SC

Where cno in(

Select cno From C Where Teacher='Liu')

Group By cno

30、统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

Select cno, Count(sno) as rs

From SC

Group by cno

Having Count(sno)> 10

Order By rs Desc,cno Asc

31、求年龄大于所有女同学年龄的男同学姓名和年龄。

Select sname,Year(getdate()) - Year(Birthday) From S

Where Year(Birthday) <

(Select Min(Year(Birthday)) From S Where sex='女')

32、把WANG同学的学习选课和成绩全部删去。

Delete From SC Where sno in(Select sno From S Where sname='WANG')

33、把选修MATHS课不及格的成绩全改为空值。

Update SC Set Grade = NULL

Where Grade<60 and cno = (Select cno From C Where cname='MATHS')

34、从学生表中删除成绩出现过 0 分的所有学生信息。

Delete From S Where sno in

(Select sno From SC Where Grade=0)

2023年6月21日发(作者:)

设学生选课库中有三个数据表:

S(sno,sname,birthday,sdepartment,tel,sex)

SC(sno,cno,grade)

C(cno,cname,teacher,pcno)

完成下列查询任务:

1、检索至少选修课程“数据结构”和“C语言”的学生学号。

Select

From SC AS x, SC As y

Where = and

=(Select cno From C Where cname='数据结构') and

=(Select cno From C Where cname='C语言')

2、检索学习课程号为C02的学生学号和姓名。

Select ,sname

From S,SC

Where = and ='C02'

3、检索选修课程“数据库”的学生学号和姓名。

Select ,sname

From S,SC,C

Where = and = and ='数据库'

4、检索选修课程号为C02或C04的学生学号。

Select distinct

From S,SC

Where = and (='C02' or ='C04')

5、检索至少选修课程号为C02和C04的学生姓名。

Select sname From S Where sno in

(Select

From SC AS x, SC As y

Where = and ='C02' and ='C04')

6、检索没有选修课程“数据库”的学生姓名和年龄。

Select sname,year(getdate()) - year(birthday)

From S where not Exists(

Select * From C, SC

Where = and = and cname='数据库') 7、在SC表中检索男生选修的课程名。

Select distinct cname From S, SC, C

Where ='男' and = and =

8、检索每个学生的出生年份。

Select Year(birthday) From S

9、在S中检索学生的姓名和出生年份,输出的列名分别为STUDENT_NAME和BIRTH_YEAR。

Select sname as STUDENT_NAME, Year(birthday) as BIRTH_YEAR From S

10、向基本表SC中插入一条元组(S0404,C06,90)。

Insert Into SC Values('S0404', 'C06', 90)

11、把课程名为VB的成绩从基本表SC中删除。

Delete From SC Where cno =

(Select cno From C Where cname='VB')

12、把女生的成绩提高10%。

Update SC Set grade=grade*1.1

Where sno in(

Select sno From S Where sex='女'

)

13、列出选修课程超过3门的学生姓名及选修门数。

Select sname, count(*) From SC, S

Where =

Group By sname

Having count(*) > 3

14、求选修了各课程的学生人数。

Select cname, count(*) From SC, C

Where =

Group By cname

15、在SC中,求选修课程C01的学生的学号和得分,并将结果按分数降序排序。

Select sno, grade From SC Where cno='C01' order by Grade Desc

16、查找每个同学的学号及选修课程的平均成绩情况。

Select sno, AVG(Grade) From SC

Group By sno

17、列出学生所有可能的选课情况。

Select , sname, cname From S, SC, C Where = and =

18、列出每个同学的学号及选修课程的平均成绩情况,没有选修的同学也列出。

Select ,AVG(Grade)

From SC right Join S ON =

Group By

19、列出每个同学的学号及选修课程号,没有选修的同学也列出。

Select ,cno

From SC right Join S ON =

20、如果学号为J0404的学生成绩少于90分,则加上10分。

Update SC Set Grade=Grade+10 Where sno='J0404' and Grade<90

21、将成绩最低的学生成绩加上10分。

Update SC Set =+10 From

(Select * From SC Where Grade=(Select Min(Grade) From SC)) as t

Where = and =

22、将成绩最高前3名的学生成绩减去20分。

Update SC Set =-20 From

(Select Top 3 * From SC Order By Grade Desc) as t

Where = and =

23、将成绩最低前10%的学生成绩减去5分。

Update SC Set =-5 From

(Select Top 10 PERCENT * From SC Order By Grade ASC) as t

Where = and =

24、检索至少有两名男生选修的课程名。

Select cname From C Where cno in

(Select cno From SC, S

Where = and sex='男'

Group by

Having Count() > 1)

25、检索S中不姓“王”同学记录。

Select * From S Where sname not Like '王%'

26、检索和“李军”同性别并同班的同学姓名。

Select sname From S

Where sex=(Select sex From S Where sname='李军') and sdepartment=(Select sdepartment From S Where sname='李军')

and sno <>(Select sno From S Where sname='李军')

27、统计被学生选修的课程门数。

Select Count(distinct cno) From SC

28、求选修C04课程的学生的平均年龄。

Select AVG(Year(getdate()) - Year(Birthday)) From SC, S

Where ='C04' and =

29、求LIU老师所授课程的每门课程的学生平均成绩。

Select cno, AVG(Grade) From SC

Where cno in(

Select cno From C Where Teacher='Liu')

Group By cno

30、统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

Select cno, Count(sno) as rs

From SC

Group by cno

Having Count(sno)> 10

Order By rs Desc,cno Asc

31、求年龄大于所有女同学年龄的男同学姓名和年龄。

Select sname,Year(getdate()) - Year(Birthday) From S

Where Year(Birthday) <

(Select Min(Year(Birthday)) From S Where sex='女')

32、把WANG同学的学习选课和成绩全部删去。

Delete From SC Where sno in(Select sno From S Where sname='WANG')

33、把选修MATHS课不及格的成绩全改为空值。

Update SC Set Grade = NULL

Where Grade<60 and cno = (Select cno From C Where cname='MATHS')

34、从学生表中删除成绩出现过 0 分的所有学生信息。

Delete From S Where sno in

(Select sno From SC Where Grade=0)