DataBase实验三代码 SQL

1.简单查询:

1)查询班号为“g9940206”班的学生的学号和姓名;

select学号,学生姓名

from [学生表] WHERE班级号='g9940206'

没有查询到符合条件的数据。

 

2)查询网络技术与实践课程的周学时和学分;

select周学时,课程学分

from [课程表] WHERE课程名称='网络技术与实践';

 

3)查询选修了课程编号为“dep04_s001”的学生的学号和成绩,并将成绩按降序输出;

select学号,成绩

from [学生选课表] WHERE课程号='dep04_s001'

ORDER BY成绩DESC

 

4)查询所有姓张的学生的信息;

select *

from [学生表] WHERE学生姓名LIKE '%'

 

5)查询出生在1984年和1985年间的学生信息;

select *

from [学生表]

WHERE  substring(出生时间,1,4)='1984' or substring(出生时间,1,4)='1985'

没有查询到符合条件的数据。

6)查询1982年以后出生的女学生的学号、姓名、性别和出生日期,结果按年龄从小到大排序;

select学号,学生姓名,性别,出生时间

from [学生表]

WHERE  cast(substring(出生时间,1,4) as int)>1984 and性别=''

ORDER By cast(出生时间as date) DESC

7)显示所有学生的相关信息,并汇总学生总人数。

select count(*) from [学生表]

select * FROM [学生表]

 

8)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;

select学生表.学号,学生姓名,成绩

From [学生表],[学生选课表]

WHERE课程号='dep04_s002' and成绩>85 and学生表.学号=学生选课表.学号

 

9)查询所有学生的学号、姓名、选修的课程名称和成绩;

select学生表.学号,学生姓名,课程名称,成绩

From [学生表],学生选课表,课程表

WHERE学生选课表.课程号=课程表.课程号and学生表.学号=学生选课表.学号

 

10)查询计算机科学系林红同学选修的课程名称、学分和成绩(考试成绩>60有学分,否则无学分)

select课程名称,学分,成绩

From [学生表],学生选课表,课程表

WHERE学生选课表.课程号=课程表.课程号and学生表.学号=学生选课表.学号and学生姓名='林红' and成绩>=60

 

11)查询每个教师的基本信息及教师类别;

select教师编号,教师姓名,性别,出生时间,所在系编号,职称,联系电话,家庭地址,邮政编码,类别名称

From教师类别表,教师表

WHERE教师类别表.类别编号=教师表.类别编号

 

12)使用完全外联接查看StuSelDB数据库中每位教师的授课情况;

select教师姓名,课程名称

from

(教师表full join [teacher_course_class]

on [teacher_course_class].教师编号=教师表.教师编号)

FULL JOIN [课程表] ON [teacher_course_class].课程号=课程表.课程号

 

13)查询选课程最多的学生由高到低排序;

select学生姓名,count(课程号)

from [学生表] FULL JOIN学生选课表

on学生表.学号=学生选课表.学号

GROUP BY学生姓名

ORDER BY COUNT(课程号) DESC

 

14)查询计算机工程系的教师授课课程的选修情况;

select教师姓名,课程名称

from ([教师表] LEFT JOIN [teacher_course_class] ON [teacher_course_class].教师编号=教师表.教师编号)

LEFT JOIN [系表] ON [系表].系编号=教师表.所在系编号

LEFT JOIN [课程表] ON [teacher_course_class].课程号=课程表.课程号

where系名称='计算机工程'

 

15)查询严为老师和李红老师教授的同1门课程并列出课程名称;

select课程名称

from [课程表]

WHERE课程号IN (

(select课程号from [teacher_course_class] join [教师表] ON [teacher_course_class].教师编号=教师表.教师编号where教师表.教师姓名='严为')

     intersect (select课程号from [teacher_course_class] join [教师表] ON [teacher_course_class].教师编号=教师表.教师编号where教师表.教师姓名='李红')

)

 

16)查询由严为老师授课而没有由李红老师授课的课程。

select课程名称

from [课程表]

WHERE课程号IN ((select课程号from [teacher_course_class] join [教师表] ON [teacher_course_class].教师编号=教师表.教师编号where教师表.教师姓名='严为')

     except (select课程号from [teacher_course_class] join [教师表] ON [teacher_course_class].教师编号=教师表.教师编号where教师表.教师姓名='李红'))

17)查询至少选修了三门课程的学生的学号和姓名;

select学生姓名,学生表.学号

from [学生表] LEFT JOIN学生选课表on [学生表].学号=学生选课表.学号

GROUP BY学生姓名,学生表.学号

having count(课程号)>=3

 

18)查询选修课程号为“dep04_b001”的学生的平均成绩;

select avg(成绩)

from [学生选课表]

GROUP BY课程号

having课程号='dep04_b001'

 

19)查询所有学生的学号和其选修课程的最高成绩,要求他的选修课程中没有成绩为空的;

select学生表.学号,max(成绩)

from [学生选课表] JOIN学生表on [学生选课表].学号=学生表.学号

GROUP BY学生表.学号

HAVING学生表.学号NOT IN(SELECT学号from [学生选课表] where成绩IS NULL )

 

20)查询严为老师2011/2012学年所授软件开发技术课程的最高成绩及此学生的学号、姓名、班级;

SELECT成绩,学生表.学号,学生姓名,学生表.班级号,课程名称

from教师表join [teacher_course_class] on [teacher_course_class].教师编号=教师表.教师编号

JOIN [课程表] ON [teacher_course_class].课程号=课程表.课程号

join [学生选课表] ON [teacher_course_class].课程号=学生选课表.课程号

join [学生表] ON [学生选课表].学号=学生表.学号

where成绩IN (

    select max(成绩)

    from学生选课表

    GROUP BY课程号,学年)

and教师姓名='严为' and [teacher_course_class].学年='2011/2012' and课程名称='软件开发技术'

 

21)查询数据库开发技术课程用过的教材名称,作者和出版社;

SELECT教材名,作者,出版社

from教材JOIN [课程表] ON书号=教材编号

where课程名称='数据库开发技术'

 

22)查询计算机科学系讲授过“JAVA程序设计与开发的老师姓名和职称。

SELECT教师姓名,职称

from教师表JOIN [teacher_course_class] ON [teacher_course_class].教师编号=教师表.教师编号

JOIN [系表] ON [教师表].所在系编号=系表.系编号

JOIN [课程表] ON [teacher_course_class].课程号=课程表.课程号

WHERE系名称='计算机科学' and课程名称='JAVA程序设计与开发'

 

3.嵌套查询:

23)查询所有已获副教授职称的女教师的--姓名、性别、学历和职称;

Select教师姓名,性别,学历,职称

From教师表

Where性别=’’ and职称=’副教授

 

24)查询开设了课程ID*的课程的教师的相关信息;

select * FROM [教师表] WHERE教师编号IN

( SELECT教师编号FROM [teacher_course_class] WHERE课程号='*')

 

25)查询选修了*号课程的学生学号、姓名和联系电话;

select学号,学生姓名,联系电话FROM [学生表] WHERE学号IN

( SELECT学号FROM [学生选课表] WHERE课程编号='*')

//好像没有联系电话???

 

26)查询课程考试不及格的学生的姓名、性别;

select学生姓名,性别FROM [学生表] WHERE学号IN

( SELECT学号FROM [学生选课表] WHERE成绩<60)

 

27)查询网页设计课程不及格的学生姓名、性别和联系电话;

select学生姓名,性别,联系电话FROM [学生表] WHERE学号IN

( SELECT学号FROM [学生选课表] WHERE成绩<60 and课程号IN

  ( SELECT 课程号FROM课程表where课程名称='网页设计'))

 

28)查询选修了计算机基础的学生的学号和姓名;

select学生姓名,学号FROM [学生表] WHERE学号IN

( SELECT学号FROM [学生选课表] WHERE课程号IN

  ( SELECT 课程号FROM课程表where课程名称='计算机基础'))

 

29)查询没有选修计算机基础的学生的学号和姓名;

select学号,学生姓名

from [学生表]

WHERE

学号IN (

select学号from学生选课表where课程号IN (

SELECT课程号from课程表where课程名称='计算机基础'

))

30)查询至少选修了学号为“g9940201”的学生所选修的所有课程的学生的学号和姓名。

SELECT 学号,学生姓名 FROM [学生表] WHERE 学号 IN

( SELECT 学号 from [学生选课表] WHERE 课程号 IN

 ( SELECT 课程号 from [学生选课表] WHERE 学号='g9940201'))


版权声明:本文为VeritasC原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。