mysql内连接,外连接,自然连接总结
1.UNION 和 UNION ALL 的区别
UNION ALL 关键字和 UNION 关键字的属性类似,它可以实现查询结果的合并,但不同的是UNION ALL 关键字 不会去掉合并结果中重复的数据。
2.关于笛卡尔积
在数据库中,使用这个概念表示两个表中每一行数据的所有组合。
select 查询字段 from 表1 cross join 表2
内连接:简单说就是返回两个表关联字段相符的记录,也就是返回两个表的交集。
select 查询字段
from 表1
[inner] join 表2 on 连接条件
[inner] join 表3 on 连接条件
.....
where 条件查询;
外连接: 外连接可以返回没有关联的数据,返回结果不仅包含符合条件的数据,而且包含左表或右表或两个表中的所有数据。
左外连接:查询结果中不仅显示左表满足条件的数据,还显示不满足条件的数据(左表的数据全部显示),而右表只保留满足条件的数据,不满足条件的显示为空。
select 查询条件 from 1 left [outer] join 表 2 on 表1.关键字 = 表2.关键字 where 查询条件;
右外连接:查询条件不仅显示右表满足条件的数据,还显示不满足条件的数据(右表的数据全部显示),而左表只保留满足条件的数据,不满足条件的显示为空。
自然连接: Mysql 还有一种自然连接,不需要指定连接字段,表与表之间列名和数据类型相同的字段会自动匹配。自然连接默认按内连接的方式进行查询。
其语法格式如下: select 查询字段 from 表1 [别名] nature join 表2 [别名];
自然连接也可以指定左连接或右连接的方式进行查询,语法格式如下
select 查询字段 from 表1 【别名】 nature 【left|right】 join on 表2 别名;
嵌套查询
1.子查询作为查询条件
在复杂的查询中,子查询往往作为查询条件来使用,它可以嵌套select 语句中。子查询可以在where 关键字 后作为 查询条件 或在from 关键字 后作为 作为表来使用。
2.子查询作为表