FROM join_table join_type join_table
[ON (join_condition)]
其中join_table指出参与连接操作的表名, 连接可以对同一个表操作, 也可以对多表操作, 对同一
个表操作的连接又称做自连接 。
join_type 指出连接类型, 可分为三种:内连接、外连接和交叉连接 。 内连接(INNER JOIN)使用比
较运算符进行表间某(些)列数据的比较操作, 并列出这些表中与连接条件相匹配的数据行 。 根据所使用
的比较方式不同, 内连接又分为等值连接、自然连接和不等连接三种 。
外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)
和全外连接(FULL OUTER JOIN或FULL JOIN)三种 。 与内连接不同的是, 外连接不只列出与连接条件相匹
配的行, 而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的
数据行 。
交叉连接(CROSS JOIN)没有WHERE 子句, 它返回连接表中所有数据行的笛卡尔积, 其结果集合中的
数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数 。
连接操作中的ON (join_condition) 子句指出连接条件, 它由被连接表中的列和比较运算符、逻辑
运算符等构成 。
无论哪种连接都不能对text、ntext和image数据类型列进行直接连接, 但可以对这三种列进行间接
连接 。 例如:
SELECT p1.pub_id,p2.pub_id,p1.pr_info
FROM pub_info AS p1 INNER JOIN pub_info AS p2
ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)
(一)内连接
内连接查询操作列出与连接条件匹配的数据行, 它使用比较运算符比较被连接列的列值 。 内连接分
三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值, 其查询结果中列出被连接
表中的所有列, 包括其中的重复列 。
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值 。 这些
运算符包括>、>=、<=、<、!>、!<和<> 。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值, 但它使用选择列表指出查询
结果集合中所包括的列, 并删除连接表中的重复列 。
例, 下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
又如使用自然连接, 在选择列表中删除authors 和publishers 表中重复列(city和state):
SELECT a.*,p.pub_id,p.pub_name,p.country
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
(二)外连接
内连接时, 返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件
的行 。 而采用外连接时, 它返回到查询结果集合中的不仅包含符合连接条件的行, 而且还包括左表(左外
连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行 。
如下面使用左外连接将论坛内容和作者信息连接起来:
SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
ON a.username=b.username
下面使用全外连接将city表中的所有作者以及user表中的所有作者, 以及他们所在的城市:
SELECT a.*,b.*
FROM city as a FULL OUTER JOIN user as b
ON a.username=b.username
(三)交叉连接
交叉连接不带WHERE 子句, 它返回被连接的两个表所有数据行的笛卡尔积, 返回到结果集合中的数
据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数 。
例, titles表中有6类图书, 而publishers表中有8家出版社, 则下列交叉连接检索到的记录数将等
于6*8=48行 。
SELECT type,pub_name
推荐阅读
- 学习知识|银行贷款利息怎么算,个人借款还款协议书
- 娱乐知识|梦溪笔谈作者是谁,《梦溪笔谈》是谁写的
- 娱乐知识|张大大是谁,为什么很多人喷张大大
- 娱乐知识|三国演义的作者是谁,三国演义作者是陈寿吗
- 娱乐知识|你是谁,歌曲《你是谁》
- 娱乐知识|望梅止渴的主人公是谁,梦笔生花的主人公是谁?
- 娱乐知识|负荆请罪的主人公是谁,囊萤映雪的主人公是谁?
- 娱乐知识|胎记是怎么得的,胎记什么时候去掉是最佳年龄
- 娱乐知识|白夜追凶最终boss是谁,白夜追凶2原版小说
- 历史地理知识|怎么查邮政编码,邮编363000是哪里