Mysql连接join查询原理知识点
mysql连接(join)查询
1、基本概念
将两个表的每一行,以“两两横向对接”的方式,所得到的所有行的结果。
假设:
表a有n1行,m1列;
表b有n2行,m2列;
则表a和表b“对接”之后,就会有:
n1*n2行;
m1+m2列。
2、则他们对接(连接)之后的结果类似这样:
3、连接查询基本形式: from 表1 【连接方式】 join 表2 【on连接条件】连接查询基本形式: from 表1 【连接方式】 join 表2 【on连接条件】
1、连接查询的分类
交叉连接
其实就是两个表之间按连接的基本概念,进行连接之后所得到的“所有数据”,而对此无任何“筛选”的结果——筛选就是指连接条件。
即:交叉连接就是没有条件的“全部连接”——有称为 笛卡尔积。
交叉连接通常没有实用价值,因为这样连接之后 数据,每一行数据的意义就可能会“丢失”。
形式:
from 表1 【cross】 join 表2 ;
或:
from 表1 , 表2 ;
内连接
形式:
from 表1 【inner】 join 表2 on 表1.字段1 = 表2.字段2;
含义:
取得一个“交叉连接”的结果中,满足所设定的连接条件(就是on后面的条件)的那些行的数据;
交叉连接往往会有“无意义数据”,如下:
2、看内连接的结果:
3、结果为:
4、可见:内连接其实就是找出一个交叉连接的数据结果中,“有意义”的那些数据行。而一个交叉连接,其中的数据,有的有意义,有的没有意义(错误数据)。
但是,要注意:
- 1,这种连接条件,不是随意设置,而是要根据表之间的实际关系来设置,通常该关系就是两个表之间的具有“主外键关系”的两个字段的值相等。
- 2,可见,连接查询,跟我们之前所学的“外键关系”,是有其内在的逻辑一致性的。
- 3,不过,我们做内连接的时候,并不是要求2个表“必须”有外键关系——我们只是自己从现实角度理解他们有外键关系(数据关系)就可以,而在查询的时候使用内连接就建立起了他们的关系。可见:内连接其实就是找出一个交叉连接的数据结果中,“有意义”的那些数据行。而一个交叉连接,其中的数据,有的有意义,有的没有意义(错误数据)。
上一篇: php简单的会话类代码
下一篇: 生产环境中安全运行Docker容器
推荐阅读
-
Java连接mysql数据库并进行内容查询的方法
-
JDBC连接MySql数据库步骤 以及查询、插入、删除、更新等
-
JDBC连接MySql数据库步骤 以及查询、插入、删除、更新等
-
详解MySQL数据库--多表查询--内连接,外连接,子查询,相关子查询
-
MySql学习day03:数据表之间的连接、查询详解
-
MySQL中(JOIN/ORDER BY)语句的查询过程及优化方法
-
Java对MySQL数据库进行连接、查询和修改操作方法
-
MySQL利用profile分析慢sql详解(group left join效率高于子查询)
-
【MySQL】MySQL内连接,左连接,右连接查询
-
MySQL利用UNION连接2个查询排序失效详解