多语言展示
当前在线:920今日阅读:145今日分享:43

sql查询 表连接

1、内连接:表中的行互相连接。2、外连接:参与连接的表有主次之分,主表的每一行数据去匹配从表的数据列,符合连接条件的数据将直接返回到结果集中,不符合连接条件的数据列将以null填充后返回到结果集中,其中外连接又分左外连接、右外连接和全连接3种。
工具/原料

sql

方法/步骤
1

首先建两张表,分别插入数据create table Nation( nId int primary key, Name varchar(20))insert Nation(nid,name)  values(1 , '汉族')insert Nation (nid,name) values(2 , '苗族')insert Nation (nid,name) values(3 , '回族')insert Nation (nid,name) values(4 , '壮族')create table Emp( eId varchar(10) primary key, eName varchar(8), eSex char(2), nId int )insert Emp(eid,ename,esex,nid)  values('e01' , '大白菜' , '男' , 2)insert Emp(eid,ename,esex,nid)  values('e02' , '大萝卜' , '女' , 4)insert Emp (eid,ename,esex,nid) values('e03' , '小猪肉' , '男' , 1)insert Emp (eid,ename,esex,nid) values('e04' , '公猪肉' , '女' , 5)

2

a.INNER JOIN:内连接,如果表中有至少一个匹配,则返回行b.LEFT JOIN:左连接,即使右表中没有匹配,也从左表返回所有的行c.RIGHT JOIN:右连接,即使左表中没有匹配,也从右表返回所有的行d.FULL JOIN:完整外连接,只要其中一个表中存在匹配,则返回行e.cross join: 交叉连接,两表的倍数

3

inner join 内连接,如果表中有至少一个匹配,则返回行(下面三种写法 返回的结果是一样的)--内联接:写法1:(inner join):返回2表中满足条件的数据(条件:on后面的)select eId,eName , emp.nId , Name from nation inner join  Empon emp.nid = nation.nid  --内联接:写法2:省略inner:select eId,eName , emp.nId , Name from nation  join  Empon emp.nid = nation.nid --内联接:写法3 用','把inner join替换 后面直接加表2名:select eId,eName , emp.nId , Name from nation , Empwhere emp.nid = nation.nid

5

RIGHT JOIN:右连接,即使左表中没有匹配,也从右表返回所有的行--右外联接select * from Empselect * from Nation select * from Emp right join nationon emp.nid = nation.nid

6

FULL JOIN:完整外连接,只要其中一个表中存在匹配,则返回行--完整外联接select * from Empselect * from Nation select * from Emp full join nationon emp.nid = nation.nid

7

cross join: 交叉连接,两表的倍数--交叉表联接select * from Emp cross join Nation

8

联合查询union(union all)--联合查询select ename from empunion select name from nationselect ename from empunion all select name from nationunion是一个特殊的运算符,用于将两个或两个以上的查询产生一个结果集。join将信息水平连接(添加更多列),而union将信息垂直连接(添加更多行)。当使用union处理查询时,要注意以下几个关键点。(1)、所有union的查询必须在select列表中有相同的列数。即如果第一个查询有3个列数,第二个查询也要只有3个列数。(2)、union返回结果的标题集仅从第一个查询中获得,无论第二个查询如何命名或取别名都不会更改。(3)、查询中对应的列的数据类型必须隐式一致。注意不要求完全一致,只需要隐式一致。

推荐信息