SQL连接查询我们经常会用到,其中SQL多表连接查询分为:内连接,外连接,交叉连接,下面就为您详细介绍SQL连接查询方面的知识,供您参考。
内连接的使用 根据表中共同的列进行匹配,特别是存在主外键关系。
一般用的比较多
外连接 分为 左外连接,右外连接,完整连接
交叉连接返回的记录是两张表相乘的记录数
内连接主要一主表的信息为主,如果没有数据就不显示
我们来看实例:
先建两张表:
- create table student
- (
- id int primary key identity(1,1),
- name varchar(50)
- )
- create table grade(
- id int primary key identity(1,1),
- score money
- )
- alter table grade add sid int
- select * from grade
- alter table grade add constraint fk_sid foreign key(sid) references student(id)
- insert into student values('哈哈')
- insert into student values('喜喜')
- insert into student values('呵呵')
- insert into student values('郁闷')
- insert into student values('小强')
- insert into student values('小马')
- insert into grade values(90,1)
- insert into grade values(80,2)
- insert into grade values(70,null)
- select * from student
- select * from grade
内连接查询方式有两种:
- 1.select s.*,g.* from student s ,grade g where s.id=g.sid;
- 2.select s.*, g.* from student s inner join grade g on s.id=g.sid;
我们看到 我们主表没有主表没有匹配信息的时候 其他的记录没有显示
下面我们来看外连接:主要以从表信息为主 从表没有主表记录则显示为null
- select s.*,g.* from student s left join grade g on s.id=g.sid
- select s.*,g.* from student s right join grade g on s.id=g.sid
还可以是
- select s.*,g.* from student s left outer join grade g on s.id=g.sid
- select s.*,g.* from student s right outer join grade g on s.id=g.sid
看他是左还是右
下面来看看完整连接:将两表的左和右基础数据全部查询出来 当一个表没有另一个表的记录的时候则为null。反之右表也是一样
- select s.* ,g.* from student s full join grade g on s.id=g.sid
- select s.* ,g.* from student s full outer join grade g on s.id=g.sid
交叉连接查询:先返回左表所有行,左表行在与右表行一一组合,等于两个表相乘
- select s.*,g.* from student s cross join grade g
【编辑推荐】