1.什么是链接查询呢?html
概念:根据两个表或多个表的列之间的关系,从这些表中查询数据。sql
目的:实现多个表查询操做。app
2.分类:post
首先划分一下,链接分为三种:内链接、外链接、交叉链接
内链接(INNER JOIN):ui
分为三种:等值链接、天然链接、不等链接
外链接(OUTER JOIN): spa
分为三种:
左外链接(LEFT OUTER JOIN或LEFT JOIN)
右外链接(RIGHT OUTER JOIN或RIGHT JOIN)
全外链接(FULL OUTER JOIN或FULL JOIN)
交叉链接(CROSS JOIN): .net
没有WHERE 子句,它返回链接表中全部数据行的笛卡尔积 code
3.具体使用介绍htm
联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也能够包含搜索条件,以进一步筛选联接条件所选的行。
联接可分为如下几类: blog
具体事例表:
book表a:
stu表b:
一、内联接
定义:仅将两个表中知足链接条件的行组合起来做为结果集。
在内链接中,只有在两个表中匹配的行才能在结果集中出现
关键词:INNER JOIN
格式:
SELECT 列名表 FROM 表名1 [INNER] JOIN 表名2 ON或WHERE 条件表达式
内链接分类:
等值链接:在链接条件中使用等于号(=)运算符比较被链接列的列值,其查询结果中列出被链接表中的全部列,包括其中的重复列。
不等值链接:在链接条件使用除等于运算符之外的其它比较运算符比较被链接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
天然链接:在链接条件中使用等于(=)运算符比较被链接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除链接表中的重复列。
外联接能够是左向外联接、右向外联接或完整外部联接。
大概意思就是:在内链接的基础上,还包含表中全部不符合条件的数据行,并将相对应的表列填写NULL (左--对应右NULL)
在 FROM子句中指定外联接时,能够由下列几组关键字中的一组指定:
1)LEFT JOIN或LEFT OUTER JOIN
左向外联接的结果集包括 LEFT OUTER子句中指定的左表的全部行,而不单单是联接列所匹配的行。若是左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的全部选择列表列均为空值。
select * from book as a left join stu as b on a.sutid = b.stuid
2)RIGHT JOIN 或 RIGHT OUTER JOIN
右向外联接是左向外联接的反向联接。将返回右表的全部行。若是右表的某行在左表中没有匹配行,则将为左表返回空值。
select * from book as a right join stu as b on a.sutid = b.stuid
select * from book as a full outer join stu as b on a.sutid = b.stuid
select * from book as a cross join stu as b order by a.id
附录一个高大上的图解:
解释一下: 1.上图(来源网上大神)左边两个为左链接的例子图解
2.上图右边两个为右链接的例子图解
3.上图中间一个为内链接的例子图解
4.上图下面两个为全链接的例子图解
http://blog.sina.com.cn/s/blog_9bf70eb101012va6.html
http://dataunion.org/11954.html
http://www.jb51.net/article/39432.htm