SQL Server 數據庫【系統設計大作業】【教學管理系統】【完整代碼】

目   錄

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、查詢練習

希望對您有所幫助!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章