欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】

程序员文章站 2022-03-28 13:35:06
...
1、使用union和union all合并两个查询结果:select 字段名 from tablename1 union select 字段名 from tablename2;

mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】

注意这个操作必须保证两张表字段相同,字段数据类型也相同。另外,使用union的时候会去除重复(相同)的记录,而union all则不会。

注:下边的几个连接查询涉及到笛卡尔积的概念,即如果存在两张表,第一张记录数为n条,另一张表的记录数为m条,那么笛卡尔积得出的记录数就是n*m条;如果第一张表的字段数为a个,另一张的字段数为b个,则笛卡尔积得出的字段数就是a+b个。

2、使用natural join自然连接:前提是两张表有相同的字段:(这个操作会去掉重复的字段)

mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】

对于这个查询,我的理解是:保留这两张表中关联字段(例如这里的depart_id)都存在的数据,去掉只有一个表中有的:

mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】

如上述内容中,company中有四条数据,而emp中有7条,结果不论哪个放前边都只出来六条,因为company中depart_id为4的,emp中没有,而emp中depart_id为5的,company中又没有。

3、inner join on等值连接查询:

mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】

这个操作在我理解,和上边的自然连接区别就在于没有去掉重复的字段,还有更加的灵活,不需要有相同字段名的字段:

mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】

4、inner join on不等值连接查询:

mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】

对于这个查询,我的理解就是,他是“=”查询的补集,即这个查询的结果集 = 笛卡尔积结果集 减去“=”查询的结果集;本例中,company有4条记录,emp有7条记录,笛卡尔积是4*7=28条记录;“=”查询的结果是6条记录,一次"!="查询就应该是其余的22条记录。

5、从上边的操作中可以拓展出另一种查询:字连接查询,即实际只有一张表,用重命名的方式当成两张来用:

mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】

可以看到,根据笛卡尔积,这里应该有4*4=16条结果,但是因为有了条件,就筛选出了四条。

以上就是mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】的内容,更多相关内容请关注PHP中文网(www.php.cn)!