Sql 数据库 join 连接

来源:互联网 发布:南丹县网络问政平台 编辑:程序博客网 时间:2024/05/21 17:28

sql里面有两个连接一个是union,另一个就是join 
他们两个的区别:
union 连接的是行 是一行一行的连  而 join 连接的是列(字段)    (他们俩的区别暂时就就知道这点)

join连接的使用的前提:
1.必须要有至少一个表(一个表可以用自连接)
2.必须要有相关联的列(字段),主键外键啥的。

join 分为 内连接(inner join)、外连接(left outer join 和 right outer join)、交叉连接(cross join)和自连接。

首先, 内连接 inner join  这个用的比较多 
作用就是 当要查询的多个列在不同的表中时,为了进行跨表查询而使用的

用法:

select SName,SAge,CName from Student  inner join Class on Class.classid=Student.sclassid;

这个查询里面SName和 SAge是Student表里的,CName是Class表里的  这里面是根据Class里的classid(主键)和Student表里的sclassid关联的
如果要是有等多个表,嫌总是写表名麻烦可以给各个表设个名,如下

select SName,SAge,CName from Student as S1  inner join Class as C1 on C1.classid=S1.sclassid;

然后,外连接 left outer join 和 right outer join  这个用的也比较多 主要是用在找一个表在另一个表中没有的数据

left outer join 就是左表记录都显示出来对右表能找到数据的对应匹配数据,对右表找不到的匹配记录为null

right outer join 同做很相似 就不多说了,你懂得。。

用法:
select SName,SAge,english from Student  left outer join Score on Score.studentid=Student.sid where sid  not in studentid

这个查询就是查询没有考试的学生。。

交叉连接 Cross join
这个吧,,应该用的不多 我也不会用呃 他得到数据就连接的两个表数据的积

自连接
这个用的也不多,所以直接写下用法就不介绍了
用法:

select * from Student inner join (select SName,SAge,SID from Student where SAge>10) as TS1 onStudent.Sid=TS1.sid