创建mysql1数据库并创建表mytable1和mytable2,目录结构如下所示: mytable1内容如下:
mytable2内容如下:
查询结果:
将mytable1和mytable2这两个表连接到了一起,进行连接的条件是“工作”这一栏。 将2个表进行了连接,然后查询的*。 另外,还有一件要注意的事情,可以看到mytable1中有一个姓名为老板的栏,其对应工作为null 这一行是不参与内连接查询的。
那么结果为 即第一个表里的每一行,分别匹配连接了第二个表里的每一行。 如mytable1里面的“控制”匹配连接了mytable2中的“控制”“机械”‘电路’。 学名叫做 笛卡尔积 形式的结果。
上面的这种形式的写法
SELECT * FROM mytable1 INNER JOIN mytable2 ON mytable1.`工作`=mytable2.`工作`;在任何一个关系型数据库中,都是可以使用的。 mysql还有独有的简便写法:
SELECT * FROM mytable1,mytable2 WHERE mytable1.`工作`=mytable2.`工作`;结果为: 与内连接查询相比较,可以看出姓名为老板这一栏也出现了。外连接查询条件为null值的也会匹配连接。 这里返回的结果都为*,如果要选择部分列查询呢? 上面的显示结果中,工作显示了两列,分别对应mytable1和mytable2两个表里面的列, 如果把*改为工作,那么mysql就会分不清哪一个是mytable1中的,哪一个是mytable2 中的,解决方法是改为 mytable1.工作。工作用反引号括起来(就是一般位于键盘tab键上面那个键)
SELECT mytable1.`工作`,姓名,年龄 FROM mytable1 LEFT JOIN mytable2 ON mytable1.`工作`=mytable2.`工作`;左连接查询,是以mytable1表为主表,mytable2为从表。mytable1中的工作列里为null的项,也进行匹配连接
相比与左外连接查询,右外连接查询以mytable1为从表,mytable2为主表。mytable1中的工作列里为null的项,不进行匹配连接