MySql实例
来源:互联网 发布:方伯谦 知乎 编辑:程序博客网 时间:2024/06/06 20:48
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), couCid INT, CONSTRAINT course_class_fk FOREIGN KEY(couCid) REFERENCES class(cid) ) INSERT INTO course(couName,couTime,couCid) VALUES('java','2014-01-01',1);INSERT INTO course(couName,couTime,couCid) VALUES('jsp','2014-03-01',2);INSERT INTO course(couName,couTime,couCid) VALUES('mysql','2014-04-04',2);DROP TABLE student;-- 学生表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 );DROP TABLE score;-- 成绩表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) ); INSERT INTO student VALUES('U001','狗蛋','1985-09-17','火星',1 );INSERT INTO student VALUES('U002','美美','1993-07-16','火星', 2);INSERT INTO student VALUES('U003','狗剩','1988-10-17','火星',1);INSERT INTO student VALUES('U004','铁蛋','1989-06-09','火星',1 );DELETE FROM score;DELETE FROM student;SELECT * FROM student;INSERT INTO score VALUES('U001',1,80);INSERT INTO score VALUES('U001',2,90);INSERT INTO score VALUES('U002',3,90);INSERT INTO score VALUES('U003',1,80);INSERT INTO score VALUES('U004',1,80);INSERT INTO score VALUES('U004',2,55);INSERT INTO score VALUES('U003',2,85);INSERT INTO score VALUES('U003',3,96);SELECT * FROM student;SELECT * FROM score;SELECT * FROM class;SELECT * FROM course;SELECT cou.*,cla.* FROM course cou,class cla WHERE cou.couCid = cla.cid;DELETE FROM student;-- 2. 查询出通过考试(高于60分)的学员所在的姓名、、所属学学习阶段、考试科目名称、学员的成绩。SELECT s.sname,cla.cname,sg.sgrade,cou.couName FROM student s,score sg,course cou,class cla WHERE s.sid=sg.sStuId AND sg.sCouId=cou.couId AND sg.sgrade>60 ;-- 查询“java”课程考试成绩为60-80分的学生名单SELECT s.sname,cla.cname,sg.sgrade,cou.couName FROM student s,score sg,course cou,class cla WHERE s.sid=sg.sStuId AND sg.sCouId=cou.couId AND sg.sgrade>60 AND sg.sgrade<=80 AND cou.couCid = 1 ;-- 查询参加最近一次“mysql”考试成绩最低分SELECT MIN(sg.sgrade) AS mysql FROM score sg,course cou WHERE sg.sCouId=cou.couId AND cou.couId = 3;-- 查询参加最近一次“mysql”考试成绩最高分SELECT MAX(sg.sgrade) AS mysql FROM score sg,course cou WHERE sg.sCouId=cou.couId AND cou.couId = 3;-- 查询出基础班考试的平均成绩SELECT AVG(sg.sgrade) AS avg_jichuban FROM score sg,course cou,class cla WHERE sg.sCouId=cou.couId AND cla.cid = cou.couCid AND cla.cid=2;TRUNCATE TABLE score;-- 查询所有信息SELECT s.*,sg.*,cou.*,cla.* FROM student s,score sg,course cou,class cla WHERE s.sid=sg.sStuId AND sg.sCouId=cou.couId AND cou.couCid = cla.cid ORDER BY s.sid;-- 存储过程-- 统计并显示2014-04-04的mysql考试平均分DELIMITER $CREATE PROCEDURE pro_avg_mysql(OUT grade INT)BEGIN SELECT AVG(sg.sgrade) AS mysql INTO grade FROM score sg,course cou WHERE sg.sCouId=cou.couId AND cou.couId = 3; END $CALL pro_avg_mysql(@grade);SELECT @grade;-- 如果平均分在70以上,显示“考试成绩优秀”-- 如果在70以下,显示“考试成绩较差”DROP PROCEDURE pro_avg_score;DELIMITER $CREATE PROCEDURE pro_avg_score(OUT gradeAll VARCHAR(20))BEGIN DECLARE temp INT; SELECT AVG(sg.sgrade) AS grade INTO temp FROM score sg,course cou WHERE sg.sCouId=cou.couId; IF temp>70 THEN SET gradeAll = '考试成绩优秀'; ELSEIF temp<=70 THEN SET gradeAll = '考试成绩较差'; END IF;END $CALL pro_avg_score(@gradeAll);SELECT @gradeAll;
0 0
- 实例MYSQL
- mysql实例
- MySQL 实例
- MySql实例
- MySQL优化实例
- MySQL优化实例
- Mysql存储过程实例
- mysql操作实例
- MySQL做同步实例
- [转]MySQL优化实例
- MySQL优化实例
- MYSQL索引实例
- spring+hibernate+mysql实例
- MySQL优化实例
- mysql group_concat 使用实例
- mysql游标实例
- flex + java + mysql实例
- MySQL优化实例
- java 读取properties 的不同方式,ResourceBundle和Porperties
- 【Spring3】依赖注入
- CodeForces 550A Two Substrings 简单题
- 卸载软件包
- 综合项目之闪讯破解(一)之 闪讯拨号用户名核心算法
- MySql实例
- Android之响应式编程RxJava/RxAndroid
- 【泉州一中国庆集训day6】String
- usaco 1.3 Ski Course Design
- 手动添加导入表修改EXE功能
- boost 内存管理
- 联想天逸F41a重装win7 x64
- c#中的不同文件中类的调用
- 模拟计算器