内连接,左右连接的区别
- 通过Mysql数据库实际操作演示,来展示该三者的区别。
- 数据库版本:mysql Ver 8.0.19
先创建两个表test1和test2
- sql语句:
CREATE TABLE `test1` (
`a_id` int(11) DEFAULT NULL,
`a_name` varchar(10) DEFAULT NULL,
`a_age` int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `test2` (
`b_id` int(11) DEFAULT NULL,
`b_name` varchar(10) DEFAULT NULL,
`b_age` int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
- 两个表格插入数据如下:
一、内连接
- sql: select * from test1 a INNER JOIN test2 b on a.a_id = b.b_id
- 执行结果:
- 通过执行结果可以看到,内连接查询就是在限制条件的情况下,将两个表相等的id所有的信息查询出来,有点类似于数学中的求两个集合的交集(个人见解,方便理解)。
二、左连接
- sql: select * from test1 a left JOIN test2 b on a.a_id = b.b_id
- 根据执行结果,左连接查询就是先将左表的所有记录显示的前提之下,右表只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
三、右连接
- sql: select * from test1 a right JOIN test2 b on a.a_id = b.b_id
- 右连接跟左连接结果恰恰相反,左表只会显示符合搜索条件的记录。左表记录不足的地方均为NULL。