mysql 多表联合查询_聊聊MySQL三种常见的多表连接查询

什么是连接查询

我们将MySQL中的每一条数据当成一个样本,所谓连接查询就是将两个表(或者更多)的样本的域属性(字段或者列)通过关联属性(字段或者列)进行拼接。就像是下面这样。 学生表

1544014e5b025106988a6ada24f1d1ae.png

班级表

38b3f8d2c306d7e404bbeecf9cc77509.png

关联一下

94b5a35dadbcf43dc22ea13f44f50610.png

2x2=4(笛卡尔积)

inner join 内连接查询

就像上面那样单纯的拼到一起有什么意义,emm我也不知道有什么意义,所以我们要加上点条件让数据变得有意义,也就是内连接查询喽。执行如下SQL,on后面跟上的就是查询条件。
SELECT * FROM stu INNER JOIN cls ON stu.class_id = cls.class_id

cc7f1f7c745f5cd9d1ddad4384f33abc.png

内连接查询也就是将两个表的样本的域属性简单那么一拼,然后给你展示两个样本都有的数据。

b91f3917ed195d156e72912b3621cebc.png

蓝色区域即结果

left join  左连接查询

左外连接查询SQL
SELECT * FROM stu LEFT JOIN cls ON stu.class_id = cls.class_id

6c491aea922a208f8b07c8fed2df774e.png

左连接查询也就是 将两个表的样本 的域属性简单那么一拼,然后 给你展示左表拼接之后的 样本,那右表没有关联上的字段怎么办,就像上面那样两个Null 。

4a844477502b6b3ee1f13592b5943407.png

蓝色区域即结果

right join 右连接查询

左连接说完右连接不就简单啦,你把两个表换下位置不就好啦 60778c2de4898f67bf49647e6c70280b.png,看SQL
SELECT * FROM stu RIGHT JOIN cls ON stu.class_id = cls.class_id

2bfbaf2aca995cb5b1cf8efb855d45fc.png

右连接查询也就是 将两个表的样本 的域属性简单那么一拼,然后 给你展示右表拼接之后的 样本,那左表没有关联上的字段怎么办,就像上面那样两个Null 。

138b7d31e7a50b9e4766fa40a9e1d204.png

蓝色区域即 结果
当我们在MySQL中创建表时,可以为某个列或多个列创建索引,这可以加快查询速度。索引是一种特殊的数据结构,可以让对数据库表的某些操作更快,比如查找、排序和分组。 MySQL中的索引主要有以下几种类型: 1. 唯一索引:保证索引列的唯一性,可以为空。 2. 主键索引:是一种特殊的唯一索引,用于标识表中的每一行。一个表只能有一个主键。 3. 普通索引:最基本的索引类型,没有任何限制。 4. 全文索引:用于全文搜索,可以在大量文本数据中进行高效的搜索。 5. 复合索引:包含多个列的索引,可以提高查询性能,尤其是在多个列共同筛选的情况下。 当我们使用索引时,需要注意以下几点: 1. 索引不是越多越好,过多的索引会导致写操作变慢,因为每次写操作都需要更新所有相关的索引。所以,只有在需要查询的列上创建索引才是最优的。 2. 索引的选择性越高,查询速度就越快。选择性可以通过计算不同值的数量与总行数的比例来衡量。如果选择性很低,那么查询的效果就会很差。 3. 当我们使用多个列进行筛选时,可以创建复合索引来提高查询速度。要注意的是,索引的顺序很重要,应该将选择性高的列放在前面。 4. 索引不会自动更新,当我们对表进行插入、删除或更新操作时,需要更新索引,否则索引会变得失效,导致查询性能下降。 总之,索引是优化MySQL查询性能的重要手段,但是在使用时需要谨慎,选择恰当的索引类型和创建方式才能真正发挥其作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值