【MySQL】连接查询

感冒有点严重,最近又有考试要准备,学习状态有点差,只看了一点连接查询的内容。
前面学习的都是对一张表中的内容进行查询,当我们查询的内容涉及到多张表时,就要用到连接查询了。
首先,如果查询了多张表但是没有设置有效的连接条件,会导致多张表所有行实现完全连接,也就是笛卡尔乘积现象。
最后显示的表的行数会是各表行数的乘积,包含了各表的全部内容。
对于sql92和sql99,连接查询有所不同。
在sql92中,连接查询只有等值连接、非等值连接和自连接,支持一部分外连接(用于oracle、sqlserver,mysql不支持)。
在sql99中则分为内连接、外连接和交叉连接,其中内连接包括了等值连接、非等值连接和自连接,外连接分为左外连接、右外连接,还有全外连接(MySQL中不支持)。

sql92中连接查询的表名都放在FROM后面,连接条件都放在WHERE后面,
sql99中表名通过FROM (inner、outer、cross)JOIN等进行连接,连接条件则放在ON后面。

在内连接中,表的顺序不影响查询结果,内连接的结果是多表的交集。
外连接中:
①查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null。
②left join 左边的就是主表,right join 右边的就是主表,
full join 两边都是主表;
③一般用于查询除了交集部分的剩余的不匹配的行(通过where筛选主键为null或不为null)。

连接查询效果总结:
在这里插入图片描述
在这里插入图片描述