经过前面的共同探讨相信大家对查找已经有了不错的理解。现在我将和大家一起共同探讨MySQL数据库的多表查询。相信不少人都有这样的疑惑,为什么需要多表查询?因为实际开发过程中往往数据来自不同的表,所以需要多表查询。老习惯,我们建三张表以用来演示下面的例子。这三张表构成立一个简易的学生管理系统。

因为希望便于大家阅读,表项起名我先用中文,(大家实际开发中视自己的情况而定)

表一,是一个成绩级别表。包含三个等级不及格,良好,优秀

不及格是小于等于59分

良好是大于等于60,小于等于84分

优秀是大于等于85小于等于100分

mysql查询多个表名和数据量 mysql多表查询学生成绩_子查询

第二张表中记录了学号,班级,姓名,语数英三科成绩;

mysql查询多个表名和数据量 mysql多表查询学生成绩_实际开发_02

第三张表记录每个学生的宿舍楼号

mysql查询多个表名和数据量 mysql多表查询学生成绩_实际开发_03

首先要向大家介绍一种运算;笛卡尔积

1从第一张表中选出第一条记录,和第二张表的所有记录进行组合

2从第二张表中选出第一条记录,和第二张表的所有记录进行组合

3.不加过滤条件,得到的就是笛卡尔积。

下面我用成绩表,和宿舍表为大家演示一下,应为表太长我们就用下面将进行一系分析

mysql查询多个表名和数据量 mysql多表查询学生成绩_mysql查询多个表名和数据量_04

可以看出这张表是两张表的笛卡尔积(11*11=121),在这张表中并没有达到多表查询的作用,原因出在哪里呢,经过观察我们发现其实我们只需要学号相同的项进行拼接,而这张表多了许多许多的无用项,下面我们来加上限定的条件再来看看

mysql查询多个表名和数据量 mysql多表查询学生成绩_实际开发_05

这样这张表就有了查询的作用

所以说多表查询就是把多个表有效的组合起来,使信息更完全,已达到获取需要信息的目的。

下面我来举一些例子我们大家一起来熟悉这种操作。

如何显示宿舍号为1的学生姓名。

mysql查询多个表名和数据量 mysql多表查询学生成绩_实际开发_06

 显示各个学生的姓名,数学成绩,及数学成绩级别

mysql查询多个表名和数据量 mysql多表查询学生成绩_mysql查询多个表名和数据量_07

下面我要介绍一下子查询

什么是子查询呢

自连接是指在同一张表连接查询

这样听大家是不是有些不太理解,其实通俗的来讲就是把一个查寻结果当做另一个查询过程中的查询条件

比如

显示比雷佳数学成绩高的同学的名字,在这个例子里我们要首先知道雷佳的数学成绩,然后把雷佳的数学成绩当做查询条件,用来显示比雷佳数学成绩高的同学的名字

mysql查询多个表名和数据量 mysql多表查询学生成绩_mysql查询多个表名和数据量_08

 

这一篇呢就到这里了,预知后事如何,且听下回分解