postgreSQL中的內連接和外連接

原址

測試數據:

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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章