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> ...
随机推荐
- .NET分布式框架 | Orleans 知多少
引言 公司物联网项目集成Orleans以支持高并发的分布式业务,对于Orleans也是第一次接触,本文就分享下个人对Orleans的理解. 这里先抛出自己的观点:Orleans 是一个支持有状态云生应 ...
- POJ 2449:Remmarguts' Date(A* + SPFA)
题目链接 题意 给出n个点m条有向边,源点s,汇点t,k.问s到t的第k短路的路径长度是多少,不存在输出-1. 思路 A*算法是启发式搜索,通过一个估价函数 f(p) = g(p) + h(p) ,其 ...
- HDU 2888:Check Corners(二维RMQ)
http://acm.hdu.edu.cn/showproblem.php?pid=2888 题意:给出一个n*m的矩阵,还有q个询问,对于每个询问有一对(x1,y1)和(x2,y2),求这个子矩阵中 ...
- django基础知识之POST属性:
POST属性 QueryDict类型的对象 包含post请求方式的所有参数 与form表单中的控件对应 问:表单中哪些控件会被提交? 答:控件要有name属性,则name属性的值为键,value属性的 ...
- scrapy基础知识之将item写入JSON文件:
pipelines.py import json class xxPipeline(object): def __init__(self): self.filename=ope ...
- Html5学习导航
给大家推荐一下学习研究HTML5必备的一些个网站,更加有利于大家对HTML5的学些和研究.如果各位童鞋还有更多的,欢迎投递资源给我们,也可以支持我们,让我们利用大家的力量收集更多的HTML5学习资料, ...
- Minimum Spanning Tree
前言 说到最小生成树(Minimum Spanning Tree),首先要对以下的图论概念有所了解. 图 图(Graph)是表示物件与物件之间的关系的数学对象,是图论的基本研究对象.图的定义方式有两种 ...
- .Net高级编程-自定义错误页 web.config中<customErrors>节点配置
错误页 1.当页面发生错误的时候,ASP.Net会将错误信息展示出来(Sqlconnection的错误就能暴露连接字符串),这样一来不好看,二来泄露网站的内部实现信息,给网站带来安全隐患,因此需要定制 ...
- C语言学习书籍推荐《C语言入门经典(第4版)》
霍顿 (Ivor Horton) (作者), 杨浩 (译者) <C语言入门经典(第4版)>的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员.读者基本不需要具备任何编程知识, ...
- python连接greenplum_postgresql
1. 场景描述 使用python连接greenplum或者postgresql. 2. 解决方案 2.1 真实代码 2.1.1 调用类 import dbgp as dbgp # 执行 def exe ...