SQL Server 2012(软件名称)——教学管理系统的后台数据库设计(实验名称)

实验报告展示

目   录

1、课本【P281-P287】

2、SQL语句【建立数据表(6个表)、插入数据】

2.1、中文字段表示

2.2、英文字段表示

3、新建视图

3.1、6表总视图

3.2、总学分(学号,学分)

3.3、总学分报表

4、查询练习


1、课本【P281-P287】

2、SQL语句【建立数据表(6个表)、插入数据】

使用到的所有SQL语句,都在这了!!!

2.1、中文字段表示

--表1-学生表
CREATE TABLE 学生表 (
	学号   char(8) PRIMARY KEY,
	姓名   char(8),
	性别   char(2) CHECK( 性别 IN ('男', '女') ),
	所在系 char(20),
	专业   char(20),
	班号   char(6)
)

--表2-课程表
CREATE TABLE 课程表 (
	课程号   char(8) PRIMARY KEY,
	课程号   varchar(30) NOT NULL,
	学分     tinyint CHECK( 学分 BETWEEN 1 AND 8 ),
	开课学期 tinyint CHECK( 开课学期 BETWEEN 1 AND 12 ) ,
	课程性质 char(4) CHECK( 课程性质 IN ('必修', '选修') ),
	考试性质 char(4) CHECK( 考试性质 IN ('考试', '考查') ),
	授课时数 tinyint CHECK( 授课时数 <= 68 ),
	实践时数 tinyint
)

--表3-教师表
CREATE TABLE 教师表 (
	教师号   char(10) PRIMARY KEY,
	教师名   char(8) NOT NULL,
	性别     char(2) CHECK( 性别 IN ('男', '女') ),
	职称     char(6) CHECK( 职称 IN ('助教','讲师','副教授','教授') ),
	学历     char(6) CHECK( 学历 IN ('本科','硕士','博士','博士后') ),
	出生日期 smalldatetime,
	所在部门 char (20)
)

--表4-选课表
CREATE TABLE 选课表 (
	学号     char(8) NOT NULL,
	课程号   char(8) NOT NULL,
	选课学年 char(8) NOT NULL,
	选课学期 char(8) NOT NULL,
	PRIMARY  KEY(学号, 课程号),
	FOREIGN  KEY(学号) REFERENCES 学生表(学号),
	FOREIGN  KEY(课程号) REFERENCES 课程表(课程号)
)

--表5-成绩表
CREATE TABLE 成绩表 (
	学号	 char(8) NOT NULL,
	课程号   char(8) NOT NULL,
	考试次数 tinyint CHECK( 考试次数 BETWEEN 1 AND 3),
	考试成绩 tinyint CHECK( 考试成绩 BETWEEN 0 AND 100),
	PRIMARY KEY(学号, 课程号, 考试次数),
	FOREIGN KEY(学号) REFERENCES 学生表(学号),
	FOREIGN KEY(课程号) REFERENCES 课程表(课程号)
)

--表6-授课表
CREATE TABLE 授课表 (
	课程号   char(8) NOT NULL,
	教师号   char(10) NOT NULL,
	授课学年 char(4),
	授课学期 tinyint,
	授课类别 char(6) CHECK( 授课类别 IN ('主讲', '辅导', '带实验') ),
	授课时数 tinyint,
	PRIMARY KEY(课程号, 教师号, 授课学年, 授课学期),
	FOREIGN KEY(课程号) REFERENCES 课程表(课程号),
	FOREIGN KEY(教师号) REFERENCES 教师表(教师号)
)



------------------插入数据------------------


--表1-学生表
INSERT INTO 学生表 VALUES('20180901', '李墨瞳', '女', '计算机系', '移动软件', '1801班');
INSERT INTO 学生表 VALUES('20180902', '苏小妍', '女', '计算机系', '移动软件', '1801班');
INSERT INTO 学生表 VALUES('20180903', '芬格尔', '男', '计算机系', '移动软件', '1801班');
INSERT INTO 学生表 VALUES('20180904', '路麟城', '男', '计算机系', '移动软件', '1801班');
INSERT INTO 学生表 VALUES('20180905', '路鸣泽', '男', '计算机系', '移动软件', '1801班');
INSERT INTO 学生表 VALUES('20180906', '路明非', '男', '计算机系', '移动软件', '1801班');
INSERT INTO 学生表 VALUES('20180907', '乔微尼', '女', '计算机系', '移动软件', '1801班');

INSERT INTO 学生表 VALUES('20110901', '王敏敏', '女', '计算机系', '网络工程', '1101班');
INSERT INTO 学生表 VALUES('20110902', '王敏儿', '女', '计算机系', '网络工程', '1101班');

INSERT INTO 学生表 VALUES('20010901', '李小琳', '女', '计算机系', '通信工程', '0101班');
INSERT INTO 学生表 VALUES('20010902', '李小花', '女', '计算机系', '通信工程', '0101班');
INSERT INTO 学生表 VALUES('20010903', '李小玲', '女', '计算机系', '通信工程', '0101班');
INSERT INTO 学生表 VALUES('20010904', '王尼尼', '男', '计算机系', '通信工程', '0102班');

INSERT INTO 学生表 VALUES('19990901', '宋书玉', '女', '计算机系', '网络运维', '9901班');
INSERT INTO 学生表 VALUES('19990902', '宋书航', '男', '计算机系', '网络运维', '9901班');

INSERT INTO 学生表 VALUES('19980901', '张小海', '男', '计算机系', '智能物联', '9801班');
INSERT INTO 学生表 VALUES('19980902', '钱小平', '男', '计算机系', '智能物联', '9801班');

INSERT INTO 学生表 VALUES('19210901', '王大力', '男', '计算机系', '网络开发', '2101班');
INSERT INTO 学生表 VALUES('19210902', '王小力', '男', '计算机系', '网络开发', '2101班');
INSERT INTO 学生表 VALUES('19210903', '王中力', '男', '计算机系', '网络开发', '2102班');
INSERT INTO 学生表 VALUES('19210904', '王牛力', '男', '计算机系', '网络开发', '2102班');


--表2-课程表
INSERT INTO 课程表 VALUES('a001', '《高等数学》', '2', '1', '必修', '考试', '46', '8');
INSERT INTO 课程表 VALUES('a002', '《离散数学》', '2', '2', '选修', '考试', '52', '6');
INSERT INTO 课程表 VALUES('a003', '《数学建模》', '4', '3', '选修', '考查', '46', '8');
INSERT INTO 课程表 VALUES('a004', '《线性代数》', '2', '4', '必修', '考试', '42', '8');

INSERT INTO 课程表 VALUES('b001', '《大学语文》', '2', '1', '必修', '考试', '46', '8');
INSERT INTO 课程表 VALUES('b002', '《大学数学》', '2', '2', '选修', '考试', '52', '6');
INSERT INTO 课程表 VALUES('b003', '《大学英语》', '4', '3', '选修', '考查', '46', '8');
INSERT INTO 课程表 VALUES('b004', '《大学物理》', '2', '4', '必修', '考试', '33', '8');
INSERT INTO 课程表 VALUES('b005', '《大学化学》', '2', '8', '必修', '考试', '33', '8');
INSERT INTO 课程表 VALUES('b006', '《大学生物》', '2', '4', '必修', '考试', '33', '8');
INSERT INTO 课程表 VALUES('b007', '《大学政治》', '2', '5', '必修', '考试', '42', '8');
INSERT INTO 课程表 VALUES('b008', '《大学历史》', '2', '4', '必修', '考试', '42', '8');
INSERT INTO 课程表 VALUES('b009', '《大学地理》', '2', '6', '必修', '考试', '42', '8');
INSERT INTO 课程表 VALUES('b010', '《大学体育》', '3', '4', '选修', '考试', '42', '8');


--表3-教师表
INSERT INTO 教师表 VALUES('t001', '王尼尼', '男', '教授', '本科', '2000-01-01', '计算机');
INSERT INTO 教师表 VALUES('t002', '陆怡婷', '男', '助教', '博士', '1998-01-01', '计算机');
INSERT INTO 教师表 VALUES('t003', '路易斯', '男', '讲师', '硕士', '1997-01-01', '计算机');
INSERT INTO 教师表 VALUES('t004', '达芬奇', '男', '助教', '博士', '2001-01-01', '计算机');
INSERT INTO 教师表 VALUES('t005', '阿萨斯', '男', '讲师', '博士', '2013-01-01', '计算机');
INSERT INTO 教师表 VALUES('t006', '尼克尔', '男', '教授', '博士', '2000-01-01', '计算机');
INSERT INTO 教师表 VALUES('t007', '桐人君', '男', '助教', '本科', '2012-01-01', '计算机');
INSERT INTO 教师表 VALUES('t008', '明代尔', '男', '教授', '硕士', '1871-01-01', '计算机');
INSERT INTO 教师表 VALUES('t009', '李义海', '男', '讲师', '博士', '1970-01-01', '计算机');
INSERT INTO 教师表 VALUES('t010', '鲁军一', '男', '教授', '博士', '2010-01-01', '计算机');


--表4-选课表
INSERT INTO 选课表 VALUES('20180907', 'a001', '2018', '1');
INSERT INTO 选课表 VALUES('20180907', 'a002', '2018', '1');
INSERT INTO 选课表 VALUES('20180907', 'a003', '2018', '2');
INSERT INTO 选课表 VALUES('20180907', 'a004', '2018', '2');

INSERT INTO 选课表 VALUES('20180906', 'b001', '2019', '1');
INSERT INTO 选课表 VALUES('20180906', 'b002', '2019', '1');
INSERT INTO 选课表 VALUES('20180906', 'b003', '2019', '2');
INSERT INTO 选课表 VALUES('20180906', 'b004', '2019', '2');
INSERT INTO 选课表 VALUES('20180906', 'b005', '2019', '2');

--delete from 选课表;


--表5-成绩表
INSERT INTO 成绩表 VALUES('20180907', 'a001', '1', '99');
INSERT INTO 成绩表 VALUES('20180907', 'a002', '2', '87');
INSERT INTO 成绩表 VALUES('20180907', 'a003', '3', '88');
INSERT INTO 成绩表 VALUES('20180907', 'a004', '1', '99');

INSERT INTO 成绩表 VALUES('20180906', 'b001', '2', '33');
INSERT INTO 成绩表 VALUES('20180906', 'b002', '1', '99');
INSERT INTO 成绩表 VALUES('20180906', 'b003', '2', '91');
INSERT INTO 成绩表 VALUES('20180906', 'b004', '1', '92');
INSERT INTO 成绩表 VALUES('20180906', 'b005', '3', '93');


--表6-授课表
INSERT INTO 授课表 VALUES('a001', 't001', '2018', 1, '主讲', 33);
INSERT INTO 授课表 VALUES('a002', 't002', '2010', 2, '主讲', 24);
INSERT INTO 授课表 VALUES('a003', 't003', '2012', 1, '主讲', 25);
INSERT INTO 授课表 VALUES('a004', 't004', '2011', 2, '主讲', 25);

INSERT INTO 授课表 VALUES('b001', 't005', '2018', 1, '主讲', 33);
INSERT INTO 授课表 VALUES('b002', 't006', '2010', 2, '主讲', 24);
INSERT INTO 授课表 VALUES('b003', 't007', '2012', 1, '主讲', 25);
INSERT INTO 授课表 VALUES('b005', 't009', '2018', 1, '主讲', 33);

--delete from 授课表;



------------------查询操作------------------

--1、学生选课情况报表
SELECT 班号, 学生表.学号, 姓名, 课程名
	FROM 学生表 JOIN 选课表 ON 学生表.学号 = 选课表.学号
	JOIN 课程表 ON 课程表.课程号 = 选课表.课程号
	WHERE 班号 = '1801班' AND 选课学年 = '2018' AND 选课学期 = 2

--2、学生考试成绩报表
SELECT 班号, 学生表.学号, 姓名, 课程名, 考试成绩
	FROM 学生表 JOIN 成绩表 ON 学生表.学号 = 成绩表.学号
	JOIN 课程表 ON 课程表.课程号 = 成绩表.课程号
	JOIN 选课表 ON 课程表.课程号 = 选课表.课程号
	WHERE 班号 = '1801班' AND 选课学年 = '2018' AND 选课学期 = 1

--3、学生累计修课总学分报表
--SELECT 学生表.学号, 姓名, 班号, 总学分 = SUM(学分)
--	FROM 学生表 JOIN 选课表 ON 学生表.学号 = 选课表.学号
--	JOIN 课程表 ON 课程表.课程号 = 选课表.课程号
--	WHERE 考试成绩 >= 60
--	GROUP BY 学生表.学号

--4、【需要 新建查询】
--CREATE VIEW v_总学分(学号, 总学分)
--AS
--SELECT 学生表.学号, SUM(学分)
--	FROM 学生表 JOIN 成绩表 ON 学生表.学号 = 成绩表.学号
--	JOIN 课程表 ON 课程表.课程号 = 成绩表.课程号
--	WHERE 考试成绩 >= 60
--	GROUP BY 学生表.学号

--5、
CREATE VIEW v_总学分(学号, 总学分)
AS
SELECT 学生表.学号, SUM(学分)
	FROM 学生表 JOIN 成绩表 ON 学生表.学号 = 成绩表.学号
	JOIN 课程表 ON 课程表.课程号 = 成绩表.课程号
	WHERE 考试成绩 >= 60
	GROUP BY 学生表.学号

CREATE VIEW v_总学分报表
AS
	SELECT 学生表.学号, 姓名, 班号, 总学分
	FROM 学生表 JOIN v_总学分 ON 学生表.学号 = v_总学分.学号

2.2、英文字段表示

--表1-学生表
CREATE TABLE Student ( --学生表
	Sno      char(8) PRIMARY KEY, --学号
	Sname    char(8), --姓名
	Sgender  char(2) CHECK( Sgender IN ('男', '女') ), --性别
	Sdepart  char(20), --所在系
	Smajor   char(20), --专业
	SclassNo char(6) --班号
)

--表2-课程表
CREATE TABLE Course (
	Cno   		   char(8) PRIMARY KEY, --课程号
	Cname   	   varchar(30) NOT NULL, --课程名
	Credit     	   tinyint CHECK( Credit BETWEEN 1 AND 8 ), --学分
	Semester 	   tinyint CHECK( Semester BETWEEN 1 AND 12 ) , --开课学期
	Cnature 	   char(4) CHECK( Cnature IN ('必修', '选修') ), --课程性质
	ExamNature 	   char(4) CHECK( ExamNature IN ('考试', '考查') ), --考试性质
	LectureHours   tinyint CHECK( LectureHours <= 68 ), --授课时数
	PracticalHours tinyint --实践时数
)

--表3-教师表
CREATE TABLE Teacher (
	 Tno  		  char(10) PRIMARY KEY, --教师号
	 Tname  	  char(8) NOT NULL, --教师名
	 Tgender      char(2) CHECK( Tgender IN ('男', '女') ), --性别
	 Ttitle       char(6) CHECK( Ttitle IN ('助教','讲师','副教授','教授') ), --职称
	 Teducation   char(6) CHECK( Teducation IN ('本科','硕士','博士','博士后') ), --学历
	 TdateOfBirth smalldatetime, --出生日期
	 Tdepartment  char (20) --所在部门
)

--表4-选课表
CREATE TABLE StudentCourse (
	Sno     		 char(8) NOT NULL, --学号
	Cno   			 char(8) NOT NULL, --课程号
	AcademicYear     char(8) NOT NULL, --选课学年
	ElectiveSemester char(8) NOT NULL, --选课学期
	PRIMARY  KEY(Sno, Cno),
	FOREIGN  KEY(Sno) REFERENCES Student(Sno),
	FOREIGN  KEY(Cno) REFERENCES Course(Cno)
)

--表5-成绩表
CREATE TABLE Score (
	Sno	 char(8) NOT NULL, --学号
	Cno   char(8) NOT NULL, --课程号
	NumOfExam tinyint CHECK( NumOfExam BETWEEN 1 AND 3), --考试次数
	ExamRes tinyint CHECK( ExamRes BETWEEN 0 AND 100), --考试成绩
	PRIMARY KEY(Sno, Cno, NumOfExam),
	FOREIGN KEY(Sno) REFERENCES Student(Sno),
	FOREIGN KEY(Cno) REFERENCES Course(Cno)
)

--表6-授课表
CREATE TABLE Teach (
	Cno   char(8) NOT NULL, --课程号
	Tno   char(10) NOT NULL, --教师号
	TeachingYear char(4), --授课学年
	TeachingTerm tinyint, --授课学期
	TeachingType char(6) CHECK( TeachingType IN ('主讲', '辅导', '带实验') ), --授课类别
	TeachingHours tinyint, --授课时数
	PRIMARY KEY(Cno, Tno, TeachingYear, TeachingTerm),
	FOREIGN KEY(Cno) REFERENCES Course(Cno),
	FOREIGN KEY(Tno) REFERENCES Teacher(Tno)
)



------------------插入数据------------------

--表1-学生表-Student
INSERT INTO Student VALUES('20180901', '李墨瞳', '女', '计算机系', '移动软件', '1801班');
INSERT INTO Student VALUES('20180902', '苏小妍', '女', '计算机系', '移动软件', '1801班');
INSERT INTO Student VALUES('20180903', '芬格尔', '男', '计算机系', '移动软件', '1801班');
INSERT INTO Student VALUES('20180904', '路麟城', '男', '计算机系', '移动软件', '1801班');
INSERT INTO Student VALUES('20180905', '路鸣泽', '男', '计算机系', '移动软件', '1801班');
INSERT INTO Student VALUES('20180906', '路明非', '男', '计算机系', '移动软件', '1801班');
INSERT INTO Student VALUES('20180907', '乔微尼', '女', '计算机系', '移动软件', '1801班');

INSERT INTO Student VALUES('20110901', '王敏敏', '女', '计算机系', '网络工程', '1101班');
INSERT INTO Student VALUES('20110902', '王敏儿', '女', '计算机系', '网络工程', '1101班');

INSERT INTO Student VALUES('20010901', '李小琳', '女', '计算机系', '通信工程', '0101班');
INSERT INTO Student VALUES('20010902', '李小花', '女', '计算机系', '通信工程', '0101班');
INSERT INTO Student VALUES('20010903', '李小玲', '女', '计算机系', '通信工程', '0101班');
INSERT INTO Student VALUES('20010904', '王尼尼', '男', '计算机系', '通信工程', '0102班');

INSERT INTO Student VALUES('19990901', '宋书玉', '女', '计算机系', '网络运维', '9901班');
INSERT INTO Student VALUES('19990902', '宋书航', '男', '计算机系', '网络运维', '9901班');

INSERT INTO Student VALUES('19980901', '张小海', '男', '计算机系', '智能物联', '9801班');
INSERT INTO Student VALUES('19980902', '钱小平', '男', '计算机系', '智能物联', '9801班');

INSERT INTO Student VALUES('19210901', '王大力', '男', '计算机系', '网络开发', '2101班');
INSERT INTO Student VALUES('19210902', '王小力', '男', '计算机系', '网络开发', '2101班');
INSERT INTO Student VALUES('19210903', '王中力', '男', '计算机系', '网络开发', '2102班');
INSERT INTO Student VALUES('19210904', '王牛力', '男', '计算机系', '网络开发', '2102班');


--表2-课程表-Course
INSERT INTO Course VALUES('a001', '《高等数学》', '2', '1', '必修', '考试', '46', '8');
INSERT INTO Course VALUES('a002', '《离散数学》', '2', '2', '选修', '考试', '52', '6');
INSERT INTO Course VALUES('a003', '《数学建模》', '4', '3', '选修', '考查', '46', '8');
INSERT INTO Course VALUES('a004', '《线性代数》', '2', '4', '必修', '考试', '42', '8');

INSERT INTO Course VALUES('b001', '《大学语文》', '2', '1', '必修', '考试', '46', '8');
INSERT INTO Course VALUES('b002', '《大学数学》', '2', '2', '选修', '考试', '52', '6');
INSERT INTO Course VALUES('b003', '《大学英语》', '4', '3', '选修', '考查', '46', '8');
INSERT INTO Course VALUES('b004', '《大学物理》', '2', '4', '必修', '考试', '33', '8');
INSERT INTO Course VALUES('b005', '《大学化学》', '2', '8', '必修', '考试', '33', '8');
INSERT INTO Course VALUES('b006', '《大学生物》', '2', '4', '必修', '考试', '33', '8');
INSERT INTO Course VALUES('b007', '《大学政治》', '2', '5', '必修', '考试', '42', '8');
INSERT INTO Course VALUES('b008', '《大学历史》', '2', '4', '必修', '考试', '42', '8');
INSERT INTO Course VALUES('b009', '《大学地理》', '2', '6', '必修', '考试', '42', '8');
INSERT INTO Course VALUES('b010', '《大学体育》', '3', '4', '选修', '考试', '42', '8');


--表3-教师表-Teacher
INSERT INTO Teacher VALUES('t001', '王尼尼', '男', '教授', '本科', '2000-01-01', '计算机');
INSERT INTO Teacher VALUES('t002', '陆怡婷', '男', '助教', '博士', '1998-01-01', '计算机');
INSERT INTO Teacher VALUES('t003', '路易斯', '男', '讲师', '硕士', '1997-01-01', '计算机');
INSERT INTO Teacher VALUES('t004', '达芬奇', '男', '助教', '博士', '2001-01-01', '计算机');
INSERT INTO Teacher VALUES('t005', '阿萨斯', '男', '讲师', '博士', '2013-01-01', '计算机');
INSERT INTO Teacher VALUES('t006', '尼克尔', '男', '教授', '博士', '2000-01-01', '计算机');
INSERT INTO Teacher VALUES('t007', '桐人君', '男', '助教', '本科', '2012-01-01', '计算机');
INSERT INTO Teacher VALUES('t008', '明代尔', '男', '教授', '硕士', '1991-01-01', '计算机');
INSERT INTO Teacher VALUES('t009', '李义海', '男', '讲师', '博士', '1970-01-01', '计算机');
INSERT INTO Teacher VALUES('t010', '鲁军一', '男', '教授', '博士', '2010-01-01', '计算机');


--表4-选课表-StudentCourse
INSERT INTO StudentCourse VALUES('20180907', 'a001', '2018', '1');
INSERT INTO StudentCourse VALUES('20180907', 'a002', '2018', '1');
INSERT INTO StudentCourse VALUES('20180907', 'a003', '2018', '2');
INSERT INTO StudentCourse VALUES('20180907', 'a004', '2018', '2');

INSERT INTO StudentCourse VALUES('20180906', 'b001', '2019', '1');
INSERT INTO StudentCourse VALUES('20180906', 'b002', '2019', '1');
INSERT INTO StudentCourse VALUES('20180906', 'b003', '2019', '2');
INSERT INTO StudentCourse VALUES('20180906', 'b004', '2019', '2');
INSERT INTO StudentCourse VALUES('20180906', 'b005', '2019', '2');

--delete from StudentCourse;


--表5-成绩表-Score
INSERT INTO Score VALUES('20180907', 'a001', '1', '99');
INSERT INTO Score VALUES('20180907', 'a002', '2', '87');
INSERT INTO Score VALUES('20180907', 'a003', '3', '88');
INSERT INTO Score VALUES('20180907', 'a004', '1', '99');

INSERT INTO Score VALUES('20180906', 'b001', '2', '33');
INSERT INTO Score VALUES('20180906', 'b002', '1', '99');
INSERT INTO Score VALUES('20180906', 'b003', '2', '91');
INSERT INTO Score VALUES('20180906', 'b004', '1', '92');
INSERT INTO Score VALUES('20180906', 'b005', '3', '93');


--表6-授课表-Teach
INSERT INTO Teach VALUES('a001', 't001', '2018', 1, '主讲', 33);
INSERT INTO Teach VALUES('a002', 't002', '2010', 2, '主讲', 24);
INSERT INTO Teach VALUES('a003', 't003', '2012', 1, '主讲', 25);
INSERT INTO Teach VALUES('a004', 't004', '2011', 2, '主讲', 25);

INSERT INTO Teach VALUES('b001', 't005', '2018', 1, '主讲', 33);
INSERT INTO Teach VALUES('b002', 't006', '2010', 2, '主讲', 24);
INSERT INTO Teach VALUES('b003', 't007', '2012', 1, '主讲', 25);
INSERT INTO Teach VALUES('b005', 't009', '2018', 1, '主讲', 33);

--delete from Teach;

------------------查询操作------------------

--1、学生选课情况报表
SELECT SclassNo, Student.Sno, Sname, Cname
	FROM Student JOIN StudentCourse ON Student.Sno = StudentCourse.Sno
	JOIN Course ON Course.Cno = StudentCourse.Cno
	WHERE SclassNo = '1801班' AND AcademicYear = '2018' AND ElectiveSemester = 2

--2、学生考试成绩报表
SELECT SclassNo, Student.Sno, Sname, Cname, ExamRes
	FROM Student JOIN Score ON Student.Sno = Score.Sno
	JOIN Course ON Course.Cno = Score.Cno
	JOIN StudentCourse ON Course.Cno = StudentCourse.Cno
	WHERE SclassNo = '1801班' AND AcademicYear = '2018' AND ElectiveSemester = 1

--3、学生累计修课总学分报表【有错误!】
--SELECT 学生表.学号, 姓名, 班号, 总学分 = SUM(学分)
--	FROM 学生表 JOIN 选课表 ON 学生表.学号 = 选课表.学号
--	JOIN 课程表 ON 课程表.课程号 = 选课表.课程号
--	WHERE 考试成绩 >= 60
--	GROUP BY 学生表.学号

--4、【需要 新建查询】
--CREATE VIEW v_总学分(Sno, 总学分)
--AS
--SELECT 学生表.学号, SUM(学分)
--	FROM 学生表 JOIN 成绩表 ON 学生表.学号 = 成绩表.学号
--	JOIN 课程表 ON 课程表.课程号 = 成绩表.课程号
--	WHERE 考试成绩 >= 60
--	GROUP BY 学生表.学号

--5、
--CREATE VIEW v_总学分(学号, 总学分)
--AS
--SELECT 学生表.学号, SUM(学分)
--	FROM 学生表 JOIN 成绩表 ON 学生表.学号 = 成绩表.学号
--	JOIN 课程表 ON 课程表.课程号 = 成绩表.课程号
--	WHERE 考试成绩 >= 60
--	GROUP BY 学生表.学号

--CREATE VIEW v_总学分报表
--AS
--	SELECT 学生表.学号, 姓名, 班号, 总学分
--	FROM 学生表 JOIN v_总学分 ON 学生表.学号 = v_总学分.学号

--4、【需要 新建查询】
CREATE VIEW v_总学分(Sno, SUM(Credit))
AS
SELECT Student.Sno, SUM(Credit)
	FROM Student JOIN Score ON Student.Sno = Score.Sno
	JOIN Course ON Course.Cno = Score.Cno
	WHERE ExamRes >= 60
	GROUP BY Student.Sno

--5、
CREATE VIEW v_总学分(Sno, SUM(Credit))
AS
SELECT Student.Credit, SUM(Credit)
	FROM Student JOIN Score ON Student.Sno = Score.Sno
	JOIN Course ON Course.Cno = Score.Cno
	WHERE ExamRes >= 60
	GROUP BY Student.Sno

CREATE VIEW v_总学分报表
AS
	SELECT Student.Sno, Sname, SclassNo, SUM(Credit)
	FROM Student JOIN v_总学分 ON Student.Sno = v_总学分.Sno



/*
1、根据系、专业、班等信息查询学生的基本信息。
2、根据学期查询课程的基本信息。
3、根据部门查询教师的基本信息。
4、根据班号查询学生在当前学期和学年的选课情况。
5、根据班号查询学生在当前学期和学年的考试情况。
6、根据课程查询当前学期和学年学生的选课及考试情况。
7、根据部门、职称查询教师的授课情况。
8、统计每个部门的各种职称的教师人数。
9、统计当前学期和学年每门课程的选课人数。
10、按班统计当前学期和学年每个学生的考试平均成绩。
11、按班统计每个班考试平均成绩最高的前三名学生。
*/

--1、根据系、专业、班等信息查询学生的基本信息。
--SELECT Sdepart FROM Student GROUP BY Sdepart;
SELECT Sdepart, Smajor, SclassNo FROM Student GROUP BY Sdepart, Smajor, SclassNo;

3、新建视图

3.1、6表总视图

3.2、总学分(学号,学分)

 

3.3、总学分报表

4、查询练习

希望对您有所帮助!!!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐