一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。
1-1数据库的表结构
表(一)Student                         
sql统计每个系的学生人数
属性名
数据类型
可否为空
Sno
Char(3)
学号(主键)
Sname
Char(8)
学生姓名
Ssex
Char(2)
学生性别
Sbirthday
datetime
学生出生年月
Class
Char(5)
学生所在班级
表(二)Course
属性名
数据类型
可否为空
Cno
Char(5)
课程号(主键)
Cname
Varchar(10)
课程名称
Tno
Char(3)
教师编号(外键)
表(三)Score
属性名
数据类型
可否为空
Sno
Char(3)
学号(外键)
Cno
Char(5)
课程号(外键)
Degree
Decimal(4,1)
成绩
主码:Sno+ Cno
表(四)Teacher
属性名
数据类型
可否为空
Tno
Char(3)
教师编号(主键)
Tname
Char(4)
教师姓名
Tsex
Char(2)
教师性别
Tbirthday
datetime
教师出生年月
Prof
Char(6)
职称
Depart
Varchar(10)
教师所在部门
1-2数据库中的数据
表(一)Student
Sno
Sname
Ssex
Sbirthday
class
108
曾华
1977-09-01
95033
105
匡明
1975-10-02
95031
107
王丽
1976-01-23
95033
101
李军
1976-02-20
95033
109
王芳
1975-02-10
95031
103
陆君
1974-06-03
95031
 
表(二)Course
Cno
Cname
Tno
3-105
计算机导论
825
3-245
操作系统
804
6-166
数字电路
856
9-888
高等数学
831
表(三)Score
Sno
Cno
Degree
103
3-245
86
105
3-245
75
109
3-245
68
103
3-105
92
105
3-105
88
109
3-105
76
101
3-105
64
107
3-105
91
108
3-105
78
101
6-166
85
107
6-166
79
108
6-166
81
表(四)Teacher
Tno
Tname
Tsex
Tbirthday
Prof
Depart
804
李诚
1958-12-02
副教授
计算机系
856
张旭
1969-03-12
讲师
电子工程系
825
王萍
1972-05-05
助教
计算机系
831
刘冰
1977-08-14
助教
电子工程系
-- 1、查询Student表中的所有记录的SnameSsexClass列。
  select sname,ssex,class from student;
-- 2、查询教师所有的单位即不重复的Depart列。
  select distinct depart from Teacher;
-- 3、查询Student表的所有记录。
  select * from student;
-- 4、查询Score表中成绩在6080之间的所有记录。
  select * from score where degree between 60 and 80;
-- 5、查询Score表中成绩为858688的记录。
  select * from score where degree in(85,86,88);
-- 6、查询Student表中“95031”班或性别为的同学记录。
  select * from student where class = '95031' or ssex='';
-- 7、以Class降序查询Student表的所有记录。
  select * from student order by class desc;
-- 8、以Cno升序、Degree降序查询Score表的所有记录。
  select * from score order by cno,degree desc;
-- 9、查询“95031”班的学生人数。
  select class,count(*) as 学生人数 from student
  group by class having class='95031';
-- 10、查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
  select sno,cno,degree,
  (select max(degree) from score) as maxscore--计算最高分
  from score where degree= (select max(degree) from score);
-- 11、查询‘3-105’号课程的平均分。
  select avg(degree) as avgdegree
  from score group by cno having cno='3-105';
-- 12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
  select avg(degree) as avgdegree from score group by cno --按照课程分组取平均值
  having cno= (select cno from score group by cno having count(*)>=5)--至少有5名学生选修的课程
  and cno like '3%';--3开头的课程
-- 13、查询最低分大于70,最高分小于90Sno列。
  select sno,max(degree)as maxdegree,min(degree) as mindegree from Score group by sno
  having max(degree)<90 and min(degree)>70

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。