帶您深入了解SQL連接查詢
SQL連接查詢我們經(jīng)常會(huì)用到,其中SQL多表連接查詢分為:內(nèi)連接,外連接,交叉連接,下面就為您詳細(xì)介紹SQL連接查詢方面的知識(shí),供您參考。
內(nèi)連接的使用 根據(jù)表中共同的列進(jìn)行匹配,特別是存在主外鍵關(guān)系。
一般用的比較多
外連接 分為 左外連接,右外連接,完整連接
交叉連接返回的記錄是兩張表相乘的記錄數(shù)
內(nèi)連接主要一主表的信息為主,如果沒有數(shù)據(jù)就不顯示
我們來看實(shí)例:
先建兩張表:
- 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('小強(qiáng)')
- 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
內(nèi)連接查詢方式有兩種:
- 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;
我們看到 我們主表沒有主表沒有匹配信息的時(shí)候 其他的記錄沒有顯示
下面我們來看外連接:主要以從表信息為主 從表沒有主表記錄則顯示為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
看他是左還是右
下面來看看完整連接:將兩表的左和右基礎(chǔ)數(shù)據(jù)全部查詢出來 當(dāng)一個(gè)表沒有另一個(gè)表的記錄的時(shí)候則為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
交叉連接查詢:先返回左表所有行,左表行在與右表行一一組合,等于兩個(gè)表相乘
- select s.*,g.* from student s cross join grade g
【編輯推薦】