原址
測試數據:
city表:
create table city(id int,name text);
insert into city values(0,'北京'),(1,'西安'),(2,'天津'),(3,'上海'),(4,'哈爾濱'),(5,'西藏')
- 1
- 2
person表:
create table person(id int,lastname char(20));
insert into person values(0,'Tom'),(2,'Lily'),(3,'Mary'),(5,'Coco');
- 1
- 2
select * from city;
- 1
select * from person;
- 1
一:內連接:
1.inner join
inner join(等值連接) 只返回兩個表中聯結字段相等的行
sql語句:
select * from city inner join person on city.id = person.id;
- 1
也可以寫成:
select * from city join person on city.id = person.id;
- 1
結果如下:
從結果可以看出,表格中顯示出了city.id=person.id的記錄,它顯示出了符合這個條件的記錄。
二:外連接:
1.full outer join
full outer join(全外連接)返回參與連接的兩個數據集合中的全部數據
sql語句:
select * from city full outer join person on city.id = person.id;
- 1
也可以寫成:
select * from city full join person on city.id = person.id;
- 1
結果如下:
從結果可以看出,全外連接得到了city和person表中的全部數據
2.left outer join
left outer join(左連接) 返回包括左表中的所有記錄和右表中連接字段相等的記錄
sql語句:
select * from city left outer join person on city.id = person.id;
- 1
也可以寫成:
select * from city left join person on city.id = person.id;
- 1
結果如下:
從結果可以看出,左外連接和全外連接的結果一模一樣?
我們在給person中添加一行數據:
insert into person values(9,'Kiki');
- 1
在重新執行:
select * from city full join person on city.id = person.id;
- 1
結果如下:
select * from city left join person on city.id = person.id;
- 1
結果如下:
兩個結果對照着看,left join顯示出了city中的所有記錄和person連接字段相等的記錄
3.right outer join
right outer join(右連接) 返回包括右表中的所有記錄和左表中連接字段相等的記錄
sql語句:
select * from city right outer join person on city.id = person.id;
- 1
也可以寫成
select * from city right join person on city.id = person.id;
- 1
結果如下:
從結果可以看出,person中的記錄被全部顯示出來,而city中的顯示的數據是根據連接字段相等的記錄
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>