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> ...
随机推荐
- jvm异常记录
1.如果出现java.lang.OutOfMemoryError: Java heap space异常.原因:Java虚拟机的堆内存不够. 具体如下: a.Java虚拟机 ...
- Java打印实心、空心的三角形和菱形
1.实心三角形 代码: import java.util.Scanner; public class Test { public static void main(String[] args) { i ...
- spring boot 2.x 系列——spring-boot 集成 Swagger2 打造在线接口文档
文章目录 一.Springfox 与 Swagger 简介 1.1 Springfox 1.2 Swagger 1.3 OpenApi.Swagger.Springfox的关系 二.spring bo ...
- c/c++基础内容回顾
1.1基本数据类型 1.1.1 变量的定义 变量类型 变量名 变量类型 变量名=初值: 注意:不能以C语言标识符作为变量名,变量名的第一个字符必须是字母或者下划线,其它位置字符必须是字母.数字.下划线 ...
- navicat12.0.29破解操作步骤
navicat12.0.29破解操作步骤 2018年07月11日 22:21:17 xijian0521 阅读数:1620 我的百度网盘地址: 下载点这里 以管理员身份运行 此注册机: 打开注册 ...
- 机器学习读书笔记(二)使用k-近邻算法改进约会网站的配对效果
一.背景 海伦女士一直使用在线约会网站寻找适合自己的约会对象.尽管约会网站会推荐不同的任选,但她并不是喜欢每一个人.经过一番总结,她发现自己交往过的人可以进行如下分类 不喜欢的人 魅力一般的人 极具魅 ...
- 深入学习Spring框架(一)- 入门
1.Spring是什么? Spring是一个JavaEE轻量级的一站式开发框架. JavaEE: 就是用于开发B/S的程序.(企业级) 轻量级:使用最少代码启动框架,然后根据你的需求选择,选择你喜欢的 ...
- 简述vue中父子组件是怎样相互传递值的(基础向)
前言 首先,你需要知道vue中父组件和子组件分别指的是什么? 父组件:vue的根实例——用new Vue()构造函数创建的vue实例(实例会有一个挂载点,挂载点里的所有内容可理解为父组件的内容) ...
- Innovus Lab和Lab Guide下载地址 | Innovus教程 - Flow系列 - 数据准备
本文转自:自己的微信公众号<集成电路设计及EDA教程> <Innovus Lab和Lab Guide下载地址 | Innovus教程 - Flow系列 - 数据准备> ...
- Java基础之增强for循环
平时大家for循环应该用的不少,特别是增强for循环,简单快捷.但是在增强for中做删除操作,却会抛出java.util.ConcurrentModificationException,一起来看下. ...

