两个表的连接是通过将一个表中的一列或多列链接到另一个表中的列来建立的。 连接两个表的表达式构成连接条件。 如果连接成功,第二个表中的数据将连接到第一个表,并创建包含两个表的数据行的复合结果集。 简而言之,两块表有了子集。 只是暂时的
有两者的基本类型的连接、inner和outer的连接。 这两种类型的主要区别在于,即使不满足连接条件,外连接也在结果集中返回行,而内连接在结果集类中不返回行
如果外连接不满足连接条件,则通常返回一个表中的列,而第二个表没有返回值。 为空
(一)内部连接
内连接查询操作列出与连接条件匹配的数据行,并使用比较运算符对连接列的进行比较
列值。 内部连接有三种。
1、等效连接:比较连接条件中使用等号==运算符连接的列的列值,并比较其查询节点
结果列出了连接的表中的所有列。 也包括重复的列。
2、不等合并:在合并条件中使用等于运算符以外的比较运算符对合并的内容进行比较
请参阅。 这些运算符包括、、 说着。
3、自然连接:在连接条件下使用等于=运算符对连接列的列值进行比较,可以使用选项来执行此操作
选择该列表可指示查询结果集中包含的列,并从连接表中删除重复的列。
(二)外部连接
外连接。 查询结果集中返回的不仅是满足连接条件的行,还包括左表(
外连接或左连接)、右表(右外连接或右连接)或两个边连接(全外连接)中的所有数据行。
left join (左联接)返回左表中的所有记录和右表中的联接字段相等的记录。
right join (右联接)返回右表中的所有记录和左表中的联接字段相等的记录。
例如1:SELECT a.*,b.* fromluntanleftjoinusertableasb
ON a.username=b.username
例如2:SELECT a.*,b.*
fromcityasafullouterjoinuserasb
ON a.username=b.username
(三)交叉连接
交叉连接没有WHERE子句。 它返回两个连接表中所有数据行的笛卡儿积,然后返回
结果集中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数
查询条件的数据行数。 例如,titles表中有6种图书,publishers表中有8家出版社时
通过列交叉连接获取的记录数为6*8=48行。
示例: SELECT type,pub_name
FROM titles CROSS JOIN publishers
订单类型
(转自) 3358 le ign.iteye.com/blog/512822