Mysql----关于内联,左联,右联,全联的使用和理解
准备工作:新建两张表
表一:student
填充内容:编号,姓名,班级
表二:school
填充内容:编号,班级,专业
这两张表建好了,意为班级选课表,两张表没有任何主外键的关系,下面进行内联,左联,右联,全联的实验
一, 内联接.
关键字:INNER JOIN
语法:SELECT * from 表一 INNER JOIN 表二 on 表一.属性=表二.属性
使用上面的语法来试一下:SELECT * from student INNER JOIN school on student.class=school.class
输出结果:
这条sql语句用了内连接的关键字,并将两表中的class属性进行了链接,得出了以上的结果,发现结果的得出是有后面具体链接属性来控制的,我下面将数据修改看下得到什么结果
修改数据:school,student没有更改
继续执行上面的语句:
现在得出的数据结果可以看出通过内联接,只有后面属性值对应时,才会显示出两表对应的数据,如果没有对应的属性值,其他数据就不会被显示,也就是student与school内联接,只会取出class相同的字段,而不会取出其他数据!
二, 左联接.
关键字:LEFT JOIN
语法:SELECT * From 表一 LEFT JOIN 表二 ON 表一.属性=表二.属性
测试:SELECT * from student LEFT JOIN school on student.class=school.class
结果:
可以看出左联接就是以左表为主,会显示出左表的全部数据,而与其连接的表会根据字段的匹配显示对应数据,也就是说首先取出student表中所有数据,然后再加上与student与school表class字段匹配的数据!
三,右联接.
关键字:RIGHT JOIN
语法:SELECT * FROM 表一 RIGHT JOIN 表二 ON 表一.属性=表二.属性
测试:SELECT * FROM student RIGHT JOIN school ON student.class=school.class
结果:
可以看出,右链接与左联接雷同,会取出school中的全部数据,再取出与其class字段相匹配的数据,关于右链接不多解释!
四,全联接.
MySQL不支持完全链接,在这里可以通过 UNION ALL 将左联和右联的结果合并实现全联接
测试:SELECT * from student LEFT JOIN school on student.class=school.class
UNION ALL
SELECT * FROM student RIGHT JOIN school ON student.class=school.class
结果:
也就是说完全链接就是左联接和右连接的合并,两边都会通过字段匹配一遍获取数据,通过union all将结果和合并,这就是完全链接状态!
关于建表,和sql语句已经在随笔中写出了,实验的话直接copy使用,谢谢!