SQL 多表連接查詢分為:內(nèi)連接,外連接,交叉連接
內(nèi)連接的使用? 根據(jù)表中共同的列進行匹配,特別是存在主外鍵關(guān)系。
一般用的比較多
外連接 分為 左外連接,右外連接,完整連接
交叉連接返回的記錄是兩張表相乘的記錄數(shù)
內(nèi)連接主要一主表的信息為主 如果沒有數(shù)據(jù)就不顯示
例如 我們來看實例:
先建兩張表:
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
內(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;
我們看到 我們主表沒有主表沒有匹配信息的時候 其他的記錄沒有顯示
下面我們來看外連接:主要以從表信息為主 從表沒有主表記錄則顯示為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)一個表沒有另一個表的記錄的時候 則為nul 反之右表也是一樣
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
內(nèi)連接的使用? 根據(jù)表中共同的列進行匹配,特別是存在主外鍵關(guān)系。
一般用的比較多
外連接 分為 左外連接,右外連接,完整連接
交叉連接返回的記錄是兩張表相乘的記錄數(shù)
內(nèi)連接主要一主表的信息為主 如果沒有數(shù)據(jù)就不顯示
例如 我們來看實例:
先建兩張表:
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
內(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;

我們看到 我們主表沒有主表沒有匹配信息的時候 其他的記錄沒有顯示
下面我們來看外連接:主要以從表信息為主 從表沒有主表記錄則顯示為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)一個表沒有另一個表的記錄的時候 則為nul 反之右表也是一樣

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
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
