一、概要

作为《学生成绩管理系统》项目开发组的程序员,请按要求完成:
数据库的创建;
数据表的创建;
相关数据的操作。

二、实施步骤及内容

《学生成绩管理系统》的E-R图如图2.25所示,逻辑数据模型如图2.26所示,物理数据模型如图2.27所示, 数据表字段名定义见表2.11。请按要求完成数据库创建、数据表创建和数据操作任务:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、代码

-- 创建数据库表
CREATE TABLE IF NOT EXISTS T_student_info(
	Student_no CHAR(6) NOT NULL COMMENT '学号,主键',
	Student_name VARCHAR(20) NOT NULL COMMENT '姓名',
	Sex CHAR(2) NOT NULL COMMENT '性别' DEFAULT '男',
	Birth DATETIME NOT NULL COMMENT '出生年月',
	Enter_date DATETIME NOT NULL COMMENT '入学年份',
	Address VARCHAR(50) COMMENT '家庭住址',
	PRIMARY KEY(Student_no)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS T_course_info(
	Course_no CHAR(8) NOT NULL COMMENT '课程编号,主键',
	Course_name VARCHAR(50) NOT NULL COMMENT '课程名',
	Credit TINYINT NOT NULL COMMENT '学分',
	Classhour TINYINT NOT NULL COMMENT '学时',
	PRIMARY KEY(Course_no)
)ENGINE=INNODB DEFAULT CHARSET=utf8;



CREATE TABLE IF NOT EXISTS T_student_scores(
	Student_no CHAR(6) NOT NULL COMMENT '学号',
	Course_no CHAR(8) NOT NULL COMMENT '课程编号',
	Ordinary_scores FLOAT COMMENT '平时成绩',
	End_scores FLOAT COMMENT '期末成绩',
	Total_scores FLOAT COMMENT '总评成绩',
	PRIMARY KEY(Student_no,Course_no)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO T_student_scores VALUES('102011','1020001',60,80,70);
INSERT INTO T_student_scores VALUES('102012','1020002',50,90,80);
INSERT INTO T_student_scores VALUES('102013','1020003',40,90,80);

-- 插入数据
INSERT INTO T_student_info VALUES('102011','刘德华','男','1991-03-23','2009-09-01','湖南长沙劳动东路168号');
INSERT INTO T_student_info VALUES('102012','张三','男','1990-03-23','2009-09-01','湖南长沙劳动东路169号');
INSERT INTO T_student_info VALUES('102013','李四','男','1992-03-13','2009-09-01','湖南长沙劳动东路170号');

INSERT INTO T_course_info VALUES('1020001','高等数学',25,64);
INSERT INTO T_course_info VALUES('1020002','大学语文',25,64);
INSERT INTO T_course_info VALUES('1020003','英语',25,64);

-- 查询出1991年出生的学生信息
SELECT * FROM T_student_info WHERE YEAR(Birth)='1991'

-- 查询选修了“高等数学”的学生姓名、平时成绩、期末成绩、总评成绩
SELECT Student_name,Ordinary_scores,End_scores,Total_scores FROM T_student_info INNER JOIN T_student_scores
ON T_student_info.`Student_no` = T_student_scores.`Student_no`
WHERE T_student_scores.`Course_no` = 
(SELECT Course_no FROM T_course_info WHERE Course_name='高等数学')

SELECT Student_name,Ordinary_scores,End_scores,Total_scores FROM T_student_info,T_student_scores,T_course_info
WHERE T_student_info.`Student_no` = T_student_scores.`Student_no`
AND T_student_scores.`Course_no` = T_course_info.`Course_no`
AND Course_name = '高等数学'

-- 创建视图查询学生的学号、姓名、课程名、总评成绩
CREATE VIEW Stu_cou_sco_view
AS
SELECT T_student_info.`Student_no`,Student_name,Course_name,Total_scores FROM T_student_info,T_student_scores,T_course_info
WHERE T_student_info.`Student_no` = T_student_scores.`Student_no`
AND T_student_scores.`Course_no` = T_course_info.`Course_no`

SELECT * FROM Stu_cou_sco_view

-- 统计每门课程的选课人数、最高分、平均分,并将统计结果保存在表T_total中
CREATE TABLE IF NOT EXISTS T_total(
	Course_no VARCHAR(50),
	People_num INT,
	Max_scores FLOAT,
	Avg_scores FLOAT
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO T_total
SELECT Course_no AS '课程编号' ,COUNT(*) AS '人数' ,MAX(Total_scores) AS '最高分',AVG(Total_scores) AS '平均分'
FROM T_student_scores
GROUP BY Course_no



Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐