Mysql 学校信息管理系统
1.创建数据库语句:
#创建数据库
CREATE DATABASE `schoolDB`;
USE `schoolDB`;
#创建学生表
CREATE TABLE `student`(
`sid` INT(4) AUTO_INCREMENT NOT NULL PRIMARY KEY COMMENT'学生编号',
`stuName` VARCHAR(10) NOT NULL COMMENT'学生姓名',
`age` INT(4) NOT NULL COMMENT'年龄',
`sex` INT(1) NOT NULL COMMENT'学生性别'
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='学生信息表';
#创建课程表
CREATE TABLE `course`(
`cid` INT(4) PRIMARY KEY COMMENT'课程编号',
`cName` VARCHAR(50) NOT NULL COMMENT'课程名称',
`tid` INT(4) NOT NULL COMMENT'教师编号'
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='课程信息表';
#创建成绩表
CREATE TABLE `score`(
`sid` INT(4) COMMENT'学生编号',
`cid` INT(4) COMMENT'课程便号',
`score` INT(4) NOT NULL COMMENT'成绩'
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='成绩表';
#创建教师 表
CREATE TABLE `teacher`(
`tid` INT(4) PRIMARY KEY COMMENT'教师编号',
`teaName` VARCHAR(50) NOT NULL COMMENT'教师姓名'
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='教师信息表';
#创建`score表`主键
ALTER TABLE `score` ADD CONSTRAINT `pk_score` PRIMARY KEY `score`(`sid`,`cid`);
#创建课程表外键外键关联 教师表 教师编号
ALTER TABLE `course` ADD CONSTRAINT `fk_course_teacher` FOREIGN KEY (`tid`) REFERENCES `teacher`(`tid`);
#创建成绩表外键关联 学生表 学生编号
ALTER TABLE `score` ADD CONSTRAINT `fk_score_student` FOREIGN KEY (`sid`) REFERENCES `student`(`sid`);
#创建成绩表外键关联 课程表 课程编号
ALTER TABLE `score` ADD CONSTRAINT `fk_score_course` FOREIGN KEY (`cid`) REFERENCES `course`(`cid`);
#插入学生表 数据
INSERT INTO `student` VALUES(1,'张三',16,1);
INSERT INTO `student` VALUES(2,'李三思',17,1);
INSERT INTO `student` VALUES(3,'李大齐',16,1);
INSERT INTO `student` VALUES(4,'王晓花',16,0);
INSERT INTO `student` VALUES(5,'刘得住',17,1);
INSERT INTO `student` VALUES(6,'谢谢你',16,1);
INSERT INTO `student` VALUES(7,'吴三桂',16,1);
INSERT INTO `student` VALUES(8,'桂花',16,0);
#插入教师表 数据
INSERT INTO `teacher` VALUES(101,'朱大胖');
INSERT INTO `teacher` VALUES(102,'方芳');
INSERT INTO `teacher` VALUES(103,'刘博士');
#插入课程表 数据
INSERT INTO `course` VALUES(1011,'语文',101);
INSERT INTO `course` VALUES(1012,'英语',102);
INSERT INTO `course` VALUES(1013,'数学',103);
#插入成绩表 数据
INSERT INTO `score` VALUES(1,1011,90);
INSERT INTO `score` VALUES(1,1012,70);
INSERT INTO `score` VALUES(1,1013,60);
INSERT INTO `score` VALUES(2,1011,88);
INSERT INTO `score` VALUES(2,1012,70);
INSERT INTO `score` VALUES(2,1013,70);
INSERT INTO `score` VALUES(3,1011,92);
INSERT INTO `score` VALUES(3,1012,71);
INSERT INTO `score` VALUES(3,1013,65);
INSERT INTO `score` VALUES(4,1011,99);
INSERT INTO `score` VALUES(4,1012,78);
INSERT INTO `score` VALUES(4,1013,88);
INSERT INTO `score` VALUES(5,1011,87);
INSERT INTO `score` VALUES(5,1012,79);
INSERT INTO `score` VALUES(5,1013,62);
INSERT INTO `score` VALUES(6,1011,56);
INSERT INTO `score` VALUES(6,1012,65);
INSERT INTO `score` VALUES(6,1013,75);
INSERT INTO `score` VALUES(7,1011,50);
INSERT INTO `score` VALUES(7,1012,55);
INSERT INTO `score` VALUES(7,1013,51);
INSERT INTO `score` VALUES(8,1011,95);
INSERT INTO `score` VALUES(8,1012,59);
INSERT INTO `score` VALUES(8,1013,64);
2.执行SQL查询
USE `schooldb`;
/*1.查询学过“方芳”老师所教课程的学生的学号、姓名。(假定学生所学的课程均参加了考试)。*/
#测试通过
SELECT `sid`,`stuName` FROM `student` WHERE `sid` IN(
SELECT `sid` FROM `score` WHERE `cid`=(
SELECT `cid` FROM `course` WHERE `tid`=(
SELECT `tid` FROM `teacher` WHERE `teaName`='方芳'
)
)
);
3.NOT IN取反的经典应用
/*2.查询所有课程成绩均小于60分的学生学号和姓名。*/
#改一下数据才有符合要求的数据
UPDATE `score` SET `score`=50 WHERE `sid`=7 AND `cid`=1013;
SELECT `sid`,`stuName` FROM `student` WHERE `sid` NOT IN(
SELECT `sid` FROM `score`
WHERE `score`>60
);
/*难点:步骤分析:
1.查询所有分数大于60的学生编号
2.取反,不在所有大于60分的里面的学生,就是所有成绩小于60的学生
*/
4.LIMIT不支持子查询的解决方法
/*3.查询“方芳”老师所教的“数据库”课程成绩排名在第3~6名的学生学号、姓名,
并将此记录插入新表tempScore中。(要求使用limit子句)*/
CREATE TABLE `tempScore`(
SELECT `sid`,`stuName` FROM `student` WHERE `sid` IN(
#查询方芳老师所教课程第3-6名学员的编号
SELECT `sid` FROM(
SELECT `sid` FROM `score` WHERE `cid` IN(
SELECT `cid` FROM `course` WHERE `tid`=(
SELECT `tid` FROM `teacher` WHERE `teaName`='方芳'
)
)GROUP BY `score` DESC LIMIT 2,4
)AS ta
)
);
/*难点:问题出现在mysql不支持在子查询中使用limit报错:This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery
解决的方法是:在limit子句外面加上一层查询"SELECT `sid` FROM()
并且给from的结果集取上别名,就不会报错
*/
4.HAVING进行分组的应用
/*4.查询有两门以上课程不及格的学生学号及其平均成绩。*/
SELECT s.sid, AVG(sc.score)
FROM `student` AS s, `score` AS sc
WHERE s.sid IN
(
SELECT `sid` FROM `score`
WHERE `score` < 60
GROUP BY `sid`
HAVING COUNT(`cid`)>= 2
)
AND s.sid=sc.sid
GROUP BY s.sid
/*用到了having 分组*/
5.创建视图
/*5.创建视图student_view,用于查询所有学生的学号、姓名、参加考试课程数、各科总成绩。*/
CREATE VIEW `student_view`
AS
SELECT s.sid,s.stuName,COUNT(c.cid),SUM(sc.score) FROM `student`AS s
INNER JOIN `score` AS sc ON sc.sid=s.sid
INNER JOIN `course` AS c ON c.cid = sc.cid
GROUP BY s.sid;
Mysql 学校信息管理系统的更多相关文章
- 基于数据库MySQL的简易学生信息管理系统
通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...
- 石家庄铁道大学课程信息管理系统(javaWeb+servlet+Mysql)
实现网页版的课程管理系统,具有增删改查的功能. 1.首先连接数据库,具体数据库的使用及如何连接eclipse,参考 https://blog.csdn.net/lrici/article/de ...
- 谈一谈个人利用Java的mysql的知识完成的数据库的项目-----用户信息管理系统
首先,我先简述一下自己做的过程啊,相信大家来找这样的博客,也都是为了完成自己课程任务吧.我也一样是一名大一的学生,是为了自己的课程任务而开始做数据库的项目的.因为还没学mysql吗,所以是自己找视频啊 ...
- 基于Spring MVC + Spring + MyBatis的【图书信息管理系统(二)】
资源下载:https://download.csdn.net/download/weixin_44893902/35123371 练习点设计:添加.删除.修改 一.语言和环境 实现语言:JAVA语言. ...
- Anynote 基于ExtJS多用户个人信息管理系统
Anynote——个人信息管理系统 —–主要用于学习交流—– 源码下载:https://git.oschina.net/xiyt/Anynote.git 一.系统说明 Anynote是一个基于extj ...
- C++ 简单的学生信息管理系统
// // main.cpp // 2013-7-17作业1 // // Created by 丁小未 on 13-7-17. // Copyright (c) 2013年 dingxiaowei. ...
- PHP基础示例:商品信息管理系统v1.1[转]
实现目标:使用php和mysql写一个商品信息管理系统,并带有购物车功能 一.创建数据库和表 1.创建数据库和表:demodb 2.创建表格:goods 字段:商品编号,商品名称,商品类型,商品图 ...
- 学生信息管理系统v1.0
昨天一个教师朋友找到我,告诉我现在学期末他工作比较忙.需要统计处理很多学生信息,想让我帮他做一个管理系统.实现的功能就是把WPS表格转化成Word文档,将每一个学生的信息都能够分开,并且要根据名字找到 ...
- 学生信息管理系统应用ios源码iPad版
学生信息管理系统应用iPad版,该应用源码比较完整的,而且也很详细,这也是一款学校用的学生和老师管理系统,里面涉及到了很多ipad常用的控件,操作和数据存储. <ignore_js_op> ...
随机推荐
- Docker最全教程之使用Node.js搭建团队技术文档站(二十三)
前言 各种编程语言均有其优势和生态,有兴趣的朋友完全可以涉猎多门语言.在平常的工作之中,也可以尝试选择相对适合的编程语言来完成相关的工作. 在团队技术文档站搭建这块,笔者尝试了许多框架,最终还是选择了 ...
- 微服务SpringCloud之服务注册与发现
在找.net core 微服务框架时发现了Steeltoe开源项目,它可以基于Spring Cloud实现.net core和.net Framework的微服务.正好之前也有学习过SpringBo ...
- 【设计模式】结构型03外观模式(Facade Pattern)
[设计模式]结构型02装饰模式(Decorator Pattern) 意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 主要解决:降低访问 ...
- 为什么很多IT公司不喜欢进过培训机构的人呢
这几天在知乎看到一个问题“为什么很多IT公司不喜欢进过培训机构的人呢?” 身为IT培训师,这样的问题必然会引起我的关注, 花时间看了各路人士的回答, 我了个去,尽是对培训机构排山倒海的谩骂声, 负面评 ...
- Python静态方法,其实暗藏玄机
文章首发于 微信公众号:Python编程时光 这个标题「静态方法其实暗藏玄机」其实只是该文章的一个知识点.或许有些标题党,但没有关系,我相信有不少人对此并没有深入研究他们,不信我问你三个问题,你看能否 ...
- Python开发【第六篇】: 面向对象
内容概要 面向对象和面向过程 面向对象三大特征 面向对象的成员 类与类之间的关系 约束 type.issubclass.isinstance self.super.MRO 1. 面向对象和面向过程 0 ...
- 《ASP.NET Core 高性能系列》致敬伟大的.NET斗士甲骨文!
写在开始 三年前,曾写过一篇文章:从.NET和Java之争谈IT这个行业,当时遭到某些自认为懂得java就了不起的Javaer抨击, 现在可以致敬伟大的.NET斗士甲骨文了 (JDK8以上都需要收费, ...
- Java 代码界 3% 的王者?看我是如何解错这 5 道题的
前些日子,阿里妹(妹子出题也这么难)发表了一篇文章<悬赏征集!5 道题征集代码界前 3% 的超级王者>——看到这个标题,我内心非常非常激动,因为终于可以证明自己技术很牛逼了. 但遗憾的是, ...
- mybatis的example类
1. 场景描述 idea下使用mybatis_generator自动生成mapper文件,默认生成了一大堆的example文件及方法,使用规则类似于Hibernate,给了一大堆参数,感觉没必要,只所 ...
- MyBatis 使用枚举或其他对象
From<Mybatis从入门到精通> 1.笔记: <!-- 6.3 使用枚举或者其他对象 6.3.1 使用MyBatis提供的枚举处理器 不懂: 因为枚举除了本身的字面值外,还可以 ...

