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 学校信息管理系统的更多相关文章

  1. 基于数据库MySQL的简易学生信息管理系统

    通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...

  2. 石家庄铁道大学课程信息管理系统(javaWeb+servlet+Mysql)

    实现网页版的课程管理系统,具有增删改查的功能. 1.首先连接数据库,具体数据库的使用及如何连接eclipse,参考     https://blog.csdn.net/lrici/article/de ...

  3. 谈一谈个人利用Java的mysql的知识完成的数据库的项目-----用户信息管理系统

    首先,我先简述一下自己做的过程啊,相信大家来找这样的博客,也都是为了完成自己课程任务吧.我也一样是一名大一的学生,是为了自己的课程任务而开始做数据库的项目的.因为还没学mysql吗,所以是自己找视频啊 ...

  4. 基于Spring MVC + Spring + MyBatis的【图书信息管理系统(二)】

    资源下载:https://download.csdn.net/download/weixin_44893902/35123371 练习点设计:添加.删除.修改 一.语言和环境 实现语言:JAVA语言. ...

  5. Anynote 基于ExtJS多用户个人信息管理系统

    Anynote——个人信息管理系统 —–主要用于学习交流—– 源码下载:https://git.oschina.net/xiyt/Anynote.git 一.系统说明 Anynote是一个基于extj ...

  6. C++ 简单的学生信息管理系统

    // // main.cpp // 2013-7-17作业1 // // Created by 丁小未 on 13-7-17. // Copyright (c) 2013年 dingxiaowei. ...

  7. PHP基础示例:商品信息管理系统v1.1[转]

      实现目标:使用php和mysql写一个商品信息管理系统,并带有购物车功能 一.创建数据库和表 1.创建数据库和表:demodb 2.创建表格:goods 字段:商品编号,商品名称,商品类型,商品图 ...

  8. 学生信息管理系统v1.0

    昨天一个教师朋友找到我,告诉我现在学期末他工作比较忙.需要统计处理很多学生信息,想让我帮他做一个管理系统.实现的功能就是把WPS表格转化成Word文档,将每一个学生的信息都能够分开,并且要根据名字找到 ...

  9. 学生信息管理系统应用ios源码iPad版

    学生信息管理系统应用iPad版,该应用源码比较完整的,而且也很详细,这也是一款学校用的学生和老师管理系统,里面涉及到了很多ipad常用的控件,操作和数据存储. <ignore_js_op> ...

随机推荐

  1. C++按格式接收输入字符(京东,滴滴,360笔试必用)

    头一次起这种标题,为了对得起这个标题,我尽量多写点~ 最近还是一边实习一遍投简历--笔试--面试,然而发现了自己的好多问题. 在答了京东笔试(滴滴,360也是这样的)的题后,发现与腾讯,阿里等公司的不 ...

  2. Scala 学习之路(九)—— 继承和特质

    一.继承 1.1 Scala中的继承结构 Scala中继承关系如下图: Any是整个继承关系的根节点: AnyRef包含Scala Classes和Java Classes,等价于Java中的java ...

  3. HDU 3338:Kakuro Extension(脑洞大开的网络流)

    http://acm.hdu.edu.cn/showproblem.php?pid=3338 题意:在一个n*m的地图里面,有黑方块和白方块,黑方块可能是“XXXXXXX”或者“YYY/YYY”,这里 ...

  4. 获取当前时间的MySql时间函数

    mysql> select current_timestamp(); +---------------------+ | current_timestamp() | +------------- ...

  5. python网络爬虫(11)近期电影票房或热度信息爬取

    目标意义 为了理解动态网站中一些数据如何获取,做一个简单的分析. 说明 思路,原始代码来源于:https://book.douban.com/subject/27061630/. 构造-下载器 构造分 ...

  6. abview查找范例时说 NI服务器未定位 这是怎么回事?

    NI服务定位器未运行在使用labview查找范例时,出现“NI服务定位器未运行”的对话框,而后不能够打开范例.有以下方法.方法一:是防火墙服务禁用造成的,在防火墙规则里面找,把和NI相关的都允许. 方 ...

  7. IDEA安装Scala

    Scala的安装 使用scala必须有jdk windows下开发工具的安装(我这里使用的是IDEA) 打开IDE 进入这个页面,如果没有进入这个界面,而直接进入项目的话 请点击https://blo ...

  8. Adobe全系软件下载安装工具 CCMaker 1.3.6

    CCMaker是俄罗斯大神El Sanchez开发的一款集Adobe软件全家桶下载.安装.激活一条龙服务的小工具. 程序小巧强大,使用微软通用运行库开发,效率高体积小. 注意,此程序需要安装微软通用C ...

  9. 使用kubectl管理k8s集群(二十九)

    前言 在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理.命令和语法记不住没有关系,但是请记住主要的语法和命令以及帮助命令的使用. 在下一篇,我们将讲述 ...

  10. .NET Core CSharp初级篇 1-1

    .NET Core CSharp初级篇 1-1 本节内容是对于C#基础类型的存储方式以及C#基础类型的理论介绍 基础数据类型介绍 例如以下这句话:"张三是一名程序员,今年15岁重50.3kg ...