为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

SQL 左外连接,右外连接,全连接,内连接 4种连接的区别

2017-10-23 7页 doc 22KB 21阅读

用户头像

is_496339

暂无简介

举报
SQL 左外连接,右外连接,全连接,内连接 4种连接的区别SQL 左外连接,右外连接,全连接,内连接 4种连接的区别 连接件可在条或子句中指定~建连在子句中指定连接件。条和子句FROMWHEREFROMWHEREHAVING 也可以包含搜索件~以连一步连连连接件所连的行。条条 连接可分连以下连,几 内连接。;典型的连接算~使用像 运 或 之连的比连算符,。包括运 相等连接和自然连接 。 = <> 内运个两个连接使用比连算符根据每表共有的列的连匹配表中的行。例如~连索 和 students courses 表中生连连相同的所有行。学号 外连接。外连接可以是左向外连接、右向外...
SQL 左外连接,右外连接,全连接,内连接 4种连接的区别
SQL 左外连接,右外连接,全连接,内连接 4种连接的区别 连接件可在条或子句中指定~建连在子句中指定连接件。条和子句FROMWHEREFROMWHEREHAVING 也可以包含搜索件~以连一步连连连接件所连的行。条条 连接可分连以下连,几 内连接。;典型的连接算~使用像 运 或 之连的比连算符,。包括运 相等连接和自然连接 。 = <> 内运个两个连接使用比连算符根据每表共有的列的连匹配表中的行。例如~连索 和 students courses 表中生连连相同的所有行。学号 外连接。外连接可以是左向外连接、右向外连接或完整外部连接。 在子句中指定外连接连~可以由下列连连连字中的一连指定,几 FROM 或 。 LEFT JOIN LEFT OUTER JOIN 左向外连接的连果集包括子句中指定的左表的所有行~而不连连是连接列所匹配的行。如果 LEFT OUTER 左表的某行在右表中有匹配行~连在相连连的连果集行中右表的所有连连列表列均连空连。没 或 。 RIGHT JOIN RIGHT OUTER JOIN 右向外连接是左向外连接的反向连接。将没将返回右表的所有行。如果右表的某行在左表中有匹配行~连连左 表返回空连。 或 。 FULL JOIN FULL OUTER JOIN 完整外部连接返回左表和右表中的所有行。某行在一表中有匹配行连~连一表的连连列表列包当另个没另个 含空连。如果表之连有匹配行~连整连果集行包含基表的据连。个数 交叉连接。交叉连接返回左表中的所有行~左表中的每一行右表中的所有行连合。交叉连接也作笛连连与称卡。 例如~下面的连接连索某出版商居住在相同州和城市的作者, 内与个 USE pubs SELECT a.au_fname, a.au_lname, p.pub_name FROM authors AS a INNER JOIN publishers AS p ON a.city = p.city AND a.state = p.state ORDER BY a.au_lname ASC, a.au_fname ASC 子句中的表或连连可通连连接或完整外部连接按任意连序指定~但是~用左或右向外连接指定表或内 FROM 连连连~表或连连的连序重要。有连使用左或右向外连接排列表的更多信息~连连使用外连接。很参 例子, 表 表 aid name bid job parent_id 连 1 3 1 23 1 李四 2 2 34 2 王武 3 3 34 4 同存在连系 a.idparent_id 内连接 select a.*,b.* from a inner join b on a.id=b.parent_id 连果是 连 1 3 1 23 1 李四 2 2 34 2 左连接 select a.*,b.* from a left join b on a.id=b.parent_id 连果是 连 1 3 1 23 1 李四 2 2 34 2 王武 3 null 右连接 select a.*,b.* from a right join b on a.id=b.parent_id 连果是 连 1 3 1 23 1 李四 2 2 34 2 null 3 34 4 完全连接 select a.*,b.* from a full join b on a.id=b.parent_id 连果是 连 1 3 1 23 1 李四 2 2 34 2 null 3 34 4 王武 3 null SQL code DECLARE @TA TABLE (IDA INT,VA VARCHAR(10)) DECLARE @TB TABLE (IDB INT,VB VARCHAR(10)) INSERT INTO @TA SELECT 1,'AA' UNION SELECT 2,'BC' UNION SELECT 3,'CCC' INSERT INTO @TB SELECT 1,'2' UNION SELECT 3,'58' UNION SELECT 4,'67' --连接连连法 内写SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A,@TB B WHERE A.IDA=B.IDB --连接 内SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A INNER JOIN @TB B ON A.IDA=B.IDB SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A JOIN @TB B ON A.IDA=B.IDB --左外连接 SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A LEFT JOIN @TB B ON A.IDA=B.IDB SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A LEFT OUTER JOIN @TB B ON A.IDA=B.IDB --右外连接 SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A RIGHT JOIN @TB B ON A.IDA=B.IDB SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A RIGHT OUTER JOIN @TB B ON A.IDA=B.IDB --完整外连接 SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A FULL JOIN @TB B ON A.IDA=B.IDB SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A FULL OUTER JOIN @TB B ON A.IDA=B.IDB --交叉连接 SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A CROSS JOIN @TB B --自连接 SELECT A.IDA,A.VA,B.IDA,B.VA FROM @TA A,@TA B WHERE A.IDA=B.IDA+1 连连分析器中连行, --建表table1,table2, create table table1(id int,name varchar(10)) create table table2(id int,score int) insert into table1 select 1,'lee' insert into table1 select 2,'zhang' insert into table1 select 4,'wang' insert into table2 select 1,90 insert into table2 select 2,100 insert into table2 select 3,70 如表 --------- ---------------------------------------- table1|table2| ------------------------------------------------- idname|idscore| 1lee| 190| 2zhang|2100| 4wang|370| ------------------------------------------------- 以下均在连连分析器中连行 一、外连接 1.念,包括左向外连接、右向外连接或完整外部连接 概2.左连接,left join 或 left outer join (1)左向外连接的连果集包括 LEFT OUTER 子句中指定的左表的所有行~而不连连是连接列所匹配的行。如果左表的某行在右表中有匹配行~连在相连连的连果集行中右表的所有连连列没 表列均连空连(null)。 (2)sql连句 select * from table1 left join table2 on table1.id=table2.id -------------连果------------- idnameidscore ------------------------------ 1lee190 2zhang2100 4wangNULLNULL ------------------------------ 注连,包含table1的所有子句~根据指定条件返回table2相连的字段~不符合的以null连示 3.右连接,right join 或 right outer join (1)右向外连接是左向外连接的反向连接。返回右表的所将 有行。如果右表的某行在左表中有匹配行~连连左表返回空连。 没将(2)sql 连句 select * from table1 right join table2 on table1.id=table2.id -------------连果------------- idnameidscore ------------------------------ 1lee190 2zhang2100 NULLNULL370 ------------------------------ 注连,包含table2的所有子句~根据指定件返回条table1相连的字段~不符合的以null连示 4.完整外部连接:full join 或 full outer join (1)完整外部连接返回左表和右表中的所有行。某行在一表中有匹配行连~当另个没 连一表的连连列表列包含空连。如果表之连有匹配行~连整连果集行包含另个个 基表的据连。 数(2)sql连句 select * from table1 full join table2 on table1.id=table2.id -------------连果------------- idnameidscore ------------------------------ 1lee190 2zhang2100 4wangNULLNULL NULLNULL370 ------------------------------ 注连,返回左右连接的和;连上左、右连接, 二、连接 内1.念,连接是用比连算符比连要连接列概内运 的连的连接 2.连接,内join 或 inner join 3.sql连句 select * from table1 join table2 on table1.id=table2.id -------------连果------------- idnameidscore ------------------------------ 1lee190 2zhang2100 ------------------------------ 注连,只返回符合件的条table1和table2的 列 4.等价;下列连行效果相同, 与A:select a.*,b.* from table1 a,table2 b where a.id=b.id B:select * from table1 cross join table2 where table1.id=table2.id (注,cross join后加件只能用条where,不能用 on) 三、交叉连接(完全) 1.念,有 概没WHERE 子句的交叉连接连生连将 接所涉及的表的笛连连。第一表的行乘以第二表的行等于笛连连卡个数个数卡 连果集的大小。;table1和table2交叉连接连生3*3=9连连, 条2.交叉连接, cross join (不连件条where...) 3.sql连句 select * from table1 cross join table2 -------------连果------------- idnameidscore ------------------------------ 1lee190 2zhang190 4wang190 1lee2100 2zhang2100 4wang2100 1lee370 2zhang370 4wang370 ------------------------------ 注连,返回3*3=9连连~笛连连 条即卡4.等价 ;下列连行效果相同, 与A:select * from table1,table2
/
本文档为【SQL 左外连接,右外连接,全连接,内连接 4种连接的区别】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索