一.创建相应的表


1)创建一张学生信息的表,包含 id(自增),学号,姓名,性别,身高,体重,备注

CREATE TABLE t_student (
id int(25) PRIMARY KEY auto_increment,
number int(25) UNIQUE not null,
name varchar(25) not null ,
gender varchar(9) not null,
height int(25) default 0,
weight int(25) default 0,
comment varchar(9) default ' '
);
insert into t_student values(null,2018001,'李四','男',167,50,'');
insert into t_student values(null,2018002,'李内','男',173,58,'');
insert into t_student values(null,2018003,'蒙牛','男',172,70,'');

±—±--------±-------±-------±-------±-------±--------+
| id | number | name | gender | height | weight | comment |
±—±--------±-------±-------±-------±-------±--------+
| 1 | 2018001 | 李四 | 男 | 167 | 50 | |
| 2 | 2018002 | 李内 | 男 | 173 | 58 | |
| 3 | 2018003 | 蒙牛 | 男 | 172 | 70 | |
±—±--------±-------±-------±-------±-------±--------+
2)创建一张成绩表,包含 成绩ID ,学号,科目(语数英),年级,分数
根据设计的目的这个时候,要考虑到两张表之间的关系,学生信息表的学号成为成绩表的外键,确保学号的一致性,代码如下:
需要注意的是,在下表中不能再将number学号再设置为唯一键了,因为要存放多个重复的值。

create table t_grade (
id int(26) primary key auto_increment,
number int(26)  not null ,
subject varchar(10) not null ,
class varchar(10) not null,
score float(10,2) default 0.0 ,
foreign key (number) REFERENCES t_student(number));insert into t_grade values(null,2018001,'数学','高一上',89);
insert into t_grade values(null,2018001,'语文','高一上',93);
insert into t_grade values(null,2018001,'英语','高一上',79);insert into t_grade values(null,2018002,'数学','高一上',84);
insert into t_grade values(null,2018002,'语文','高一上',95);
insert into t_grade values(null,2018002,'英语','高一上',45);insert into t_grade values(null,2018003,'数学','高一上',84);
insert into t_grade values(null,2018003,'语文','高一上',99);
insert into t_grade values(null,2018003,'英语','高一上',78);

±—±--------±--------±----------±------+
| id | number | subject | class | score |
±—±--------±--------±----------±------+
| 1 | 2018001 | 数学 | 高一上 | 89.00 |
| 2 | 2018001 | 语文 | 高一上 | 93.00 |
| 3 | 2018001 | 英语 | 高一上 | 79.00 |
| 4 | 2018002 | 数学 | 高一上 | 84.00 |
| 5 | 2018002 | 语文 | 高一上 | 95.00 |
| 6 | 2018002 | 英语 | 高一上 | 45.00 |
| 7 | 2018003 | 数学 | 高一上 | 84.00 |
| 8 | 2018003 | 语文 | 高一上 | 99.00 |
| 9 | 2018003 | 英语 | 高一上 | 78.00 |
±—±--------±--------±----------±------+

以上的难点在于处理两个表之间的关系。

二.进行连表查询

1)查询高一上学期,所有人的总成绩,并且从高到低顺序

select name,student.number,class,sum(score) from t_student as student,t_grade as grade
where student.number=grade.number and class = '高一上'
GROUP BY grade.number ORDER BY SUM(score) ASC ;

±-------±--------±----------±-----------+
| name | number | class | sum(score) |
±-------±--------±----------±-----------+
| 李内 | 2018002 | 高一上 | 224.00 |
| 李四 | 2018001 | 高一上 | 261.00 |
| 蒙牛 | 2018003 | 高一上 | 261.00 |
±-------±--------±----------±-----------+

  • 首先,分析上面的语句,先选则要查询的字段,注意到number字段在两个表中都有,所以可以用来做,相等判断,保持名字和学号在两个表中的一致性。
  • 两个表中都有number字段,指定其中一个即可。
  • 还有是根据number分组的,所以查询选择分组很重要。
    2)查询高一上所有女同学的总成绩
    ±—±--------±-------±-------±-------±-------±--------+
    | id | number | name | gender | height | weight | comment |
    ±—±--------±-------±-------±-------±-------±--------+
    | 1 | 2018001 | 李四 | 男 | 167 | 50 | |
    | 2 | 2018002 | 李内 | 男 | 173 | 58 | |
    | 3 | 2018003 | 蒙牛 | 男 | 172 | 70 | |
    | 4 | 2018004 | 慧萍 | 女 | 167 | 50 | |
    | 5 | 2018005 | 流水 | 女 | 173 | 58 | |
    | 6 | 2018006 | 蒙香 | 女 | 172 | 70 | |
    ±—±--------±-------±-------±-------±-------±--------+
    ±—±--------±--------±----------±------+
    | id | number | subject | class | score |
    ±—±--------±--------±----------±------+
    | 1 | 2018001 | 数学 | 高一上 | 89.00 |
    | 2 | 2018001 | 语文 | 高一上 | 93.00 |
    | 3 | 2018001 | 英语 | 高一上 | 79.00 |
    | 4 | 2018002 | 数学 | 高一上 | 84.00 |
    | 5 | 2018002 | 语文 | 高一上 | 95.00 |
    | 6 | 2018002 | 英语 | 高一上 | 45.00 |
    | 7 | 2018003 | 数学 | 高一上 | 84.00 |
    | 8 | 2018003 | 语文 | 高一上 | 99.00 |
    | 9 | 2018003 | 英语 | 高一上 | 78.00 |
    | 10 | 2018004 | 数学 | 高一上 | 89.00 |
    | 11 | 2018004 | 语文 | 高一上 | 93.00 |
    | 12 | 2018004 | 英语 | 高一上 | 79.00 |
    | 13 | 2018005 | 数学 | 高一上 | 84.00 |
    | 14 | 2018005 | 语文 | 高一上 | 95.00 |
    | 15 | 2018005 | 英语 | 高一上 | 45.00 |
    | 16 | 2018006 | 数学 | 高一上 | 84.00 |
    | 17 | 2018006 | 语文 | 高一上 | 99.00 |
    | 18 | 2018006 | 英语 | 高一上 | 78.00 |
    ±—±--------±--------±----------±------+

查询代码如下:

select name,gender,students.number,class,SUM(score) from t_student as students,t_grade as grade
where students.number=grade.number and class= '高一上'  and students.gender='女'
GROUP BY grade.number ORDER BY SUM(score) ASC;
  • 关键点还是一样,要确保两表的数据一致性,students.number=grade.number 添加这句就是要名字和学号相对应,如若不加的话就会默认匹配一条记录而已,会出错的。

今天去面试,连最基本的这些都没答好,捂脸,奈何不是科班出身,自己累的要命,东补西补的。
还是要写东西才有印象。完成一篇,是不是要点激励的话结束,?,加油,明天。

MySQL实现连表查询相关推荐

  1. mysql的联表查询和去重复数据

    mysql的联表查询和去重复数据 /* SQLyog Ultimate v10.00 Beta1 MySQL - 5.7.17-log : Database - pusmtnew ********** ...

  2. day15(mysql 的多表查询,事务)

    mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1(a INT PRIMARY KEY ,b V ...

  3. Mysql的交叉表查询

    最近由于找工作,所以在恶补PHP和Mysql方面的东西,发现还是学习的不够.这几天看到关于mysql的交叉表查询的内容,根据自己的理解简单的尝试了下. 由于MonsterHunter World较火, ...

  4. MySQL的多表查询

    文章目录 MySQL的多表查询 什么是多表联合查询 交叉连接(CROSS JOIN) 笛卡尔积 交叉连接 内连接 外连接 左连接 右连接 分组查询 GROUP BY单独使用 GROUP BY 与 GR ...

  5. mysql表deptno,MySQL:多表查询

    MySQL:多表查询 SELECT查询不但可以从一张表查询数据,还可以从多张表同时查询数据.查询多张表的语法是:SELECT * FROM 表1 表2,普通多表查询会获取M x N行记录,所以一般使用 ...

  6. mysql怎样两表查询_mysql怎样两表查询?

    mysql两表查询的方法:1.使用"select 字段列表 from 表1,表2 [where 条件]"进行查询:2.使用"SELECT 字段列表 FROM 表1 关键字 ...

  7. mysql数据库多表查询(内连接,外连接,自连接,子查询及案例分析)

    mysql数据库多表查询 之前接触的项目或者自己涉及的部分对于多表查询的使用都比较的少,常常是自己更具案例进行学习,最近见到的比较的多,所以今天就好好的总结一下,为下一步学习做准备! 1.多表查询关系 ...

  8. MySQL数据库多表查询

    MySQL数据库多表查询 前言 在之前的文章MySQL数据库之SQL入门中,我们讲到了四类SQL中的DQL(数据库查询语言,用于查询表中数据),但是我仅仅用DQL去查询一张表中数据,而在实际的应用中, ...

  9. MySQL:单表查询---简单查询+条件查询+高级查询+表和字段取别名

    目录 一.通用模版展示 简单查询 条件查询 高级查询 表和字段取别名 二.举例说明 简单查询 条件查询 高级查询 表和字段取别名 三.注意事项 四.Mapper简单举例 简单查询 条件查询 高级查询 ...

  10. mysql教程多表查询_mysql重点,表查询操作和多表查询

    表单查询 1. 完整的查询语句语法 select distinct(* or 字段名 or 四则运算 )from 表名 where 条件 group by 条件 having 条件 order by ...

最新文章

  1. Scala中的foreach方法和map方法
  2. python 指定字符串长度_Python指定字符串的长度,主要是
  3. .net3.5的安装与修复
  4. STL算法algorithm,
  5. python做运动控制_ROS探索总结-61.MoveIt!编程驾驭机械臂运动控制
  6. Oracle会话及连接数优化
  7. 5-4 是否同一棵二叉搜索树 (25分)
  8. how does framework know the Advertisement model should be used to parse json
  9. java程序设计p75_java语言程序设计实用教程第四讲控制结构.ppt
  10. Waveform Audio 驱动(Wavedev2)之:WAV 驱动解析
  11. python编程(深拷贝和浅拷贝)
  12. Doris之动态分区(全面)
  13. bootstraptable查看详情_bootstrap table detailView详情视图树形模式
  14. gps 数据解析-NMEA 0183协议
  15. 导出excel文件,若在一台PC端无法正常导出,闪退,进程还存在时(以下方法也许对你有用)
  16. 百度api翻译html,帮助文档首页
  17. 群晖5.2php核心设置_只需四步, 黑群晖5.2 NAS 最简明搭建教程
  18. 广东迅视资管 “亦庄智造”填补国内高速棒材技术空白
  19. 国产 CAE 软件研发
  20. qlikview一些设置

热门文章

  1. 【Spring Cloud Alibaba】Gateway 服务网关
  2. iOS HAMC(哈希)256带密钥的加密方法
  3. oracle 12.1.0.2版本对象ku$_user_view是失效状态的修复
  4. 二叉树的顺序结构及实现
  5. 两个数学家的问题,“你不知道我不知道你知道我知道”
  6. 南加大计算机硕士学制,南加州大学研究生学制几年
  7. java-php-net-python-书籍租阅管理系统计算机毕业设计程序
  8. 入门C语言排序n个数
  9. 《有限与无限的游戏》第三章 我是自己的天才:经典摘抄(1)
  10. 曲径通幽——遇见未知的你