在做项目时用到了大量的查询,且绝大多数是多表连接查询,取一个数据不仅要找出它所在的表、列,还要找到与之关联的其他表,现将内查询、外查询的相关用法总结如下:
一、语法
①、内连接
SELECT 列名.*(可以有多个)
FROM 表1 JOIN 表2 ON 表1.列1=表2.列1
这是我用的最多的一种,内连接实质是通过各个表之间的共同列关联来查询数据
②、左外连接
SELECT 列名.*(可以有多个)
FROM 表1 LEFT JOIN 表2 ON 表1.列1=表2.列1
左外连接是指保留连接表达式中的左表(表1)的非匹配记录和右表中的符合条件部分
③、右外连接
SELECT 列名.*(可以有多个)
FROM 表1 RIGHT JOIN 表2 ON 表1.列1=表2.列1
右外连接是指保留连接表达式中的右表(表2)的非匹配记录和左表中的符合条件部分
二、举个小栗子加深理解
我这里准备了两个表,并随意插入了一些数据
表1
表2
①内连接查询示例,语句如下
SELECT * FROM 表1 JOIN 表2 ON 表1.evaluate_id=表2.evaluate_id
查询结果
②左外连接查询示例,语句如下
SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.evaluate_id=表2.evaluate_id
查询结果
可以看到,左表中不符合条件的数据也保留了下来
③右外连接查询示例,语句如下
SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.evaluate_id=表2.evaluate_id
查询结果
可以看到,这里右外查询的结果竟然和内查询是一样的,原因是两个表中都有1和2这两个evaluate_id,右外查询保留右表的非匹配记录,只保留左表的匹配条件的记录,而右表的记录中没有不匹配的,所以查询结果和内查询一样啦