1. 需求:
设计数据库表存储:(用户考试信息)
用户信息、考试时间、考试科目与考试成绩,及所属年级!
2. 测试数据:
U001, 张三,1985-09-09, 广州天河, java,80,基础班, 考试时间为2014-01-01 jsp,90,就业班,
考试时间为2014-03-01,mysql,90, 就业班, 考试时间为2014-04-04
U002 ,李四,1995-09-09, 广州越秀, java,67,基础班, 考试时间为2014-01-01,mysql,90, 就业班,
考试时间为2014-04-04
……….(录入其他记录)
3. 查询需求:
1. 查询学号是U001的学生参加2014-01-01 “java”课程考试的成绩,要求输出学生姓名和成绩
2. 查询出通过考试(高于60分)的学员所在的姓名、、所属学学习阶段、考试科目名称、学员的成绩。
利用子查询语句,筛选出生日期比“李四”大的学生
查询“java”课程考试成绩为60-80分的学生名单
查询参加最近一次“mysql”考试成绩最高分和最低分
查询出基础班考试的平均成绩;
需求(存储过程)
统计并显示2014-04-04的mysql考试平均分
如果平均分在70以上,显示“考试成绩优秀”
如果在70以下,显示“考试成绩较差”
4.实现
1.数据库设计
学生表
学号 姓名 出生日期 地址 课程号
CREATE TABLE student(
sid VARCHAR(4) PRIMARY KEY,
sname VARCHAR(20),
sbday VARCHAR(20),
saddress VARCHAR(20),
scouId INT,
CONSTRAINT student_course_fk FOREIGN KEY(scouId) REFERENCES course(couId) ON UPDATE CASCADE ON DELETE CASCADE
);
课程表
课程号 课程名 考试时间 班级号
CREATE TABLE course(
couId INT PRIMARY KEY AUTO_INCREMENT,
couName VARCHAR(20),
couTime VARCHAR(20),
couCid INT,
CONSTRAINT course_class_fk FOREIGN KEY(couCid) REFERENCES class(cid)
)
班级表
班级号 班级名
CREATE TABLE class(
cid INT PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(20)
)
成绩表
学号 课程号 成绩
CREATE TABLE score(
sStuId VARCHAR(4),
sCouId INT,
sgrade INT,
CONSTRAINT score_student_fk FOREIGN KEY(sStuId) REFERENCES student(sid),
CONSTRAINT score_course_fk FOREIGN KEY(sCouId) REFERENCES course(couId)
);
2.源码
CREATE DATABASE homework;
USE homework;
-- 班别表
CREATE TABLE class(
cid INT PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(20)
)
INSERT INTO class(cname) VALUES('基础班');
INSERT INTO class(cname) VALUES('就业班');
-- 课程表
CREATE TABLE course(
couId INT PRIMARY KEY AUTO_INCREMENT,
couName VARCHAR(20),
couTime VARCHAR(20)