目录
join具有连接作用。当两个或以上的表有关系时,就可以使用jion来连接这些相关的表处理或分析数据。
join的相关连接机制如下:
会发现jion后的列名是两个表加起来后的结果(可能会出现相同的情况,就像上面例子中一样)。S1 jion S2 后,S1中的列会与S2中的列一一合并一次最后组成新的表。所以上面的例子中最后生成的新表有3 * 2 = 6个列。
如果这时候对这个新生成的表不满意,想要相对应的选项合在一起,我们可以选择使用on。
on用来添加约束。例如在使用S1 join S2合并表的时,我们想要让S1中的l1列与S2中的l2列相等匹配时,我们可以将语句改成:S1 join S2 on S1.l1 = S2.l2
在列名不重复的前提下,我们也可以直接不用.操作符。
还是上面那个例子:
可以看到合并时不再像之前那样“傻瓜式”合并了,而是将classid和id相等的列合并成一条而形成的新的表。
两个语句是同一个性质,和join相比,left / right join的区别主要在于left / right join必须要有on。
left join语句会检查左边表的数据是否都包含在新的表中,如果缺少就用NULL填补上:
要注意一点:对于left join来说左右表的位置很重要。在join中可以交换位置,最终生成的新表都是一样的;但是使用left join的话,交换左右表的位置最终合成的新表是完全不一样的。比如上面这个例子,如果将stu和class的位置交换:
所以写的时候一定要注意。
和left join同个性质相反:
A right join B = B left join A --> 都是以B为基准的
偶然发现的,下载之后连接上自己的库操作操作发现还挺方便的,可以在里面创建管理你的数据库。主要是可以图形化,设计的时候宏观看起来比较方便。但归根结底还是多用终端操作为好,这可以当个辅助。
MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南 - 卡拉云说起终端操作,今天还装了一个插件可以自动补全sql语句,巨巨巨巨巨方便啊(咆哮,昨天还在为SQL语句总输错而烦恼。
叫mycli,安装后使用时直接命令行打开相关库操作即可:
还能给命令和表名列名标绿色,看起来舒服多了,我爱死。