sql查询 表连接

作者:落知秋 | 创建时间: 2023-05-08
1、内连接:表中的行互相连接。 2、外连接:参与连接的表有主次之分,主表的每一行数据去匹配从表的数据列,符合连接条件的数据将直接返回到结果集中,不符合连接条件的数据列将以null填充后返回到结果集中,其中外连接又分左外连接、右外连接和全连接...
sql查询 表连接

操作方法

首先建两张表,分别插入数据 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)

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

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

LEFT JOIN:左连接,即使右表中没有匹配,也从左表返回所有的行, 右表不匹配的用null 填充 --左外联接 select * from Emp left join nation on emp.nid = nation.nid

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

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

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

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

点击展开全文

更多推荐