【mysql基础系列之八】连接查询

在关系型数据库设计过程中,实体(表)与实体之间是存在很对关系的(一对一、一对多、多对多)。通常在时间操作的过程中,需要利用这层关系来保护数据的完整性。即连接查询:将多张表连接到一起进行查询(会导致记录数行和字段数列发生改变)。没有任何条件时,产生笛卡尔积。本质上就是select * from 表1,表2;

连接查询分类

交叉连接、内连接、外连接(左外连接、右外连接)、自然连接。

交叉连接

原理:依次从第一张表中一次取出每一条记录,与另一张表中的全部记录逐个匹配。

语法:表1查询语句 cross join 表2查询语句;

内连接

原理:依次从一张表中取出每一条记录去另外一张表中匹配,根据条件匹配成功了就保留,失败就不保存。

表1查询语句 【inner】 join 表2查询语句 on 匹配条件;


注意:表的设计过程中容易产生同名字段,通常使用:表名.字段名。

外连接

原理:按照某一张表作为主表(表中所有数据都会保留),根据条件去连接另外一张表作为从表,从而得到数据。


-- 左外连接(left join)
主表 left join 从表 on 连接条件;

-- 右外连接(right join)
主表 right join 从表 on 连接条件;


using关键字

是在连接查询中用来代替对应的on关键字的,进行条件匹配。

原理:使用using的前提是对应的两张表连接的字段是同名的(类似自然连接自动匹配),并且对应的同名字段最终在结果中只会保留一个。

表1 【inner/left/right】 join 表2 using(同名字段1,同名字段2...);


猜你喜欢

转载自blog.csdn.net/pjz161026/article/details/80358457