新聞中心
PostgreSQL(簡(jiǎn)稱PG)是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它支持多種數(shù)據(jù)類型和復(fù)雜查詢,并提供了固定和可擴(kuò)展的事務(wù)性存儲(chǔ)。在SQL查詢中,外連接是一種重要的查詢操作,用于連接兩個(gè)不同的表,并顯示出其中一個(gè)表中的所有行和另一個(gè)表中匹配行的結(jié)果。本文將介紹PG數(shù)據(jù)庫的外連接實(shí)現(xiàn)方法,包括左外連接、右外連接和全外連接。

1. 左外連接
左外連接(LEFT OUTER JOIN)是連接兩個(gè)表中的行,其中左表中的每個(gè)行都被包括在結(jié)果中,而右表中沒有匹配項(xiàng)的行以NULL值填充。 左外連接的語法格式如下:
SELECT column1, column2, …
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;
左外連接需要兩個(gè)表,table1和table2,語句主要由SELECT、FROM和LEFT OUTER JOIN三個(gè)SQL關(guān)鍵字組成。SELECT關(guān)鍵字指定查詢的數(shù)據(jù)列,F(xiàn)ROM關(guān)鍵字指定查詢的數(shù)據(jù)表,而LEFT OUTER JOIN關(guān)鍵字則指定連接表的類型。下面是一段示例代碼:
SELECT customers.customer_id, orders.order_date
FROM customers
LEFT OUTER JOIN orders
ON customers.customer_id = orders.customer_id
ORDER BY customers.customer_id;
上述代碼將從customers表和orders表中提取出數(shù)據(jù)列customer_id和order_date,并將兩個(gè)表連接在一起,以顯示所有客戶的訂單日期。外連接將返回左表中所有條目(即所有客戶),并用NULL值替換沒有訂單的項(xiàng)。結(jié)果如下所示:
customer_id | order_date
————+————
AAA | 10-05-2023
BBB | NULL
CCC | 08-12-2023
DDD | NULL
2. 右外連接
右外連接(RIGHT OUTER JOIN)與左外連接類似,只不過是右表中的每個(gè)行都被包括在結(jié)果中,而左表中沒有匹配項(xiàng)的行以NULL值填充。右外連接的語法格式如下:
SELECT column1, column2, …
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;
右外連接也需要兩個(gè)表,table1和table2,語句主要由SELECT、FROM和RIGHT OUTER JOIN三個(gè)SQL關(guān)鍵字組成。下面是一個(gè)例子:
SELECT customers.customer_name, orders.order_date
FROM customers
RIGHT OUTER JOIN orders
ON customers.customer_id = orders.customer_id
ORDER BY customers.customer_name;
該代碼從customers表和orders表中提取出數(shù)據(jù)列customer_name和order_date,并將兩個(gè)表連接在一起,以顯示有訂單的客戶名字。右外連接將返回右表中所有條目(即所有訂單),并用NULL值替換沒有顧客的項(xiàng)。結(jié)果如下所示:
customer_name | order_date
————–+————
Allen | 10-05-2023
NULL | 06-08-2023
Bob | 08-12-2023
David | 09-03-2023
3. 全外連接
全外連接(FULL OUTER JOIN)是將左表和右表中的所有行包括在結(jié)果中,如果沒有匹配的行,則用NULL值填充。全外連接的語法格式如下:
SELECT column1, column2, …
FROM table1
FULL [OUTER] JOIN table2
ON table1.column = table2.column;
同樣的,全外連接也需要兩個(gè)表,table1和table2,語句主要由SELECT、FROM和FULL OUTER JOIN三個(gè)SQL關(guān)鍵字組成。下面是一個(gè)例子:
SELECT customers.customer_id, orders.order_date
FROM customers
FULL OUTER JOIN orders
ON customers.customer_id = orders.customer_id
ORDER BY customers.customer_id;
上述代碼將從customers表和orders表中提取出數(shù)據(jù)列customer_id和order_date,并將兩個(gè)表連接在一起,以顯示客戶和訂單。全外連接將返回左表和右表中所有條目,并用NULL值替換沒有匹配項(xiàng)的項(xiàng)。結(jié)果如下所示:
customer_id | order_date
————+————
AAA | 10-05-2023
BBB | NULL
CCC | 08-12-2023
DDD | NULL
NULL | 06-08-2023
在查詢復(fù)雜數(shù)據(jù)時(shí),PG數(shù)據(jù)庫的外連接非常重要,可以幫助您將兩個(gè)或多個(gè)表中的數(shù)據(jù)進(jìn)行關(guān)聯(lián)。本文介紹了PG數(shù)據(jù)庫的左外連接、右外連接和全外連接的語法格式和一些示例代碼,希望可以幫助讀者更好地。
相關(guān)問題拓展閱讀:
- 怎么去查找在window上默認(rèn)安裝的pg數(shù)據(jù)庫路徑
怎么去查找在window上默認(rèn)安裝的pg數(shù)據(jù)庫路徑
1、windows下postgresql的安裝
我下載的為xxx9.2.exe一路默認(rèn)安裝即可。安裝位置為C:\Program Files\PostgreSQL。
安裝完畢后,在dos下執(zhí)行命令
>net user
列出當(dāng)前系統(tǒng)
用戶名
稱。我的用戶名為Administrator。
>psql –U Administrator –d postgres
該命令表示通過數(shù)據(jù)庫用戶Administrator連接數(shù)據(jù)庫postgres。
l 若顯示psql不是內(nèi)部或外部命令,則說明postgresql的bin文件路徑?jīng)]添加到windows系統(tǒng)中,右擊“我的電腦”->”屬性”->”高級(jí)”->”
環(huán)境變量
”->”Administrator”的用戶變量,選中“PATH”,點(diǎn)擊編輯明銷,將”C:\Program Files\PostgreSQL\9.2\bin”添加進(jìn)去,注意與前面的路徑用”;”隔開。電腦重啟生效。
l 若顯示角色Administrator不存在,則必須在postgresql數(shù)據(jù)庫中添加該用戶才能使其可以登錄。
在postgresql中
查詢系統(tǒng)用戶
postgres=#select* from pg_user;
查詢系統(tǒng)中的數(shù)據(jù)庫
postgres=#select* from pg_database;
說明一下:“template1”是Postgresql在初始化時(shí)自動(dòng)創(chuàng)建的測(cè)試數(shù)據(jù)庫。
創(chuàng)建postgresql數(shù)據(jù)庫Administrator用戶
方式1
在PostgreSQL中創(chuàng)建用戶postgreSQL用戶Administrator
用SQL Shell(psql)通過用戶postgres登錄PostgreSQL,創(chuàng)建用戶Administrator,
postgres=#create user “Administrator”;
方式2
通過windows下dos創(chuàng)建postgresql用戶Administrator
將PostgreSQL
文件夾
bin路徑添加到系統(tǒng)環(huán)境中后重啟生效.
通過windows下dos創(chuàng)建postgresql用戶是區(qū)分大小寫的。
配置客戶機(jī)訪問
為了配置遠(yuǎn)程主機(jī)和用戶可以連接到PostgreSQL服務(wù),你需要pg_hba.conf文件。文件包含大量注釋記錄用于遠(yuǎn)程訪問的選項(xiàng)。在我們的安裝示例中,我們?cè)试S局域網(wǎng)中任何主機(jī)的任何用戶訪問服務(wù)器上的數(shù)據(jù)庫。為了達(dá)到這個(gè)目的,我們添加以下的一行記錄到文件尾:
host all all 192.168.0.0/16 trust
這意味著所有
IP地址
由192.168開始的計(jì)算機(jī)可以訪問所有的數(shù)據(jù)庫。最簡(jiǎn)單的使配置生效的方法就是重啟服務(wù)器。
在dos下操作,通過createuser –Uolduser –P newuser來創(chuàng)建。
比如我們想創(chuàng)建postgresql數(shù)據(jù)庫用戶Administrator。
>createuser –U postgre –P Administrator
這樣創(chuàng)激滲游建的數(shù)據(jù)庫用戶Administrator沒有創(chuàng)建數(shù)據(jù)庫的權(quán)利,可以通過pgAdmin III登錄進(jìn)行查看。
若使其可以創(chuàng)建數(shù)據(jù)庫可以參照下面內(nèi)容進(jìn)行設(shè)置:
>createuser –U postgre –s Administrator
這樣具有創(chuàng)建數(shù)據(jù)庫能力。
createuser的用法可以通過在dos中輸入createuser –help查看。
MicrosoftWindows XP
(C)版喊臘權(quán)所有Microsoft Corp.
C:\Documentsand Settings\Administrator>createuser –help
createuser創(chuàng)建一個(gè)新的 PostgreSQL 用戶.
使用方法:
createuser …
選項(xiàng):
-c, –connection-limit=N 角色的連接限制(缺省: 沒有限制)
-d, –createdb此角色可以創(chuàng)建新數(shù)據(jù)庫
-D, –no-createdb此角色不可以創(chuàng)建新數(shù)據(jù)庫(默認(rèn))
-e, –echo 顯示發(fā)送到服務(wù)端的命令
-E, –encrypted口令加密存儲(chǔ)
-i, –inherit角色能夠繼承它所屬角色的權(quán)限
(這是缺省情況)
-I, –no-inherit角色不繼承權(quán)限
-l, –login角色能夠登錄(這是缺省情況)
-L, –no-login角色不能登錄
-N, –unencrypted口令不加密存儲(chǔ)
-P, –pwprompt給新角色指定口令
-r, –createrole這個(gè)角色可以創(chuàng)建新的角色
-R, –no-createrole這個(gè)角色沒有創(chuàng)建其它角色的權(quán)限(默認(rèn))
-s, –superuser角色將是超級(jí)用戶
-S, –no-superuser角色不能是超級(jí)用戶(默認(rèn))
-V, –version輸出版本信息, 然后退出
–interactive提示缺少角色名及其屬性
而不是使用默認(rèn)值
–replication角色能啟動(dòng)復(fù)制
–no-replication角色不能啟動(dòng)復(fù)制
-?, –help 顯示此幫助, 然后退出
聯(lián)接選項(xiàng):
-h, –host=HOSTNAM數(shù)據(jù)庫服務(wù)器所在機(jī)器的主機(jī)名或
套接字
目錄
-p, –port=PORT數(shù)據(jù)庫服務(wù)器
端口號(hào)
-U, –username=USERNAME 聯(lián)接用戶 (不是要?jiǎng)?chuàng)建的用戶名)
-w, -no-password永遠(yuǎn)不提示輸入口令
-W, –password強(qiáng)制提示輸入口令
臭蟲報(bào)告至.
C:\Documentsand Settings\Administrator>
方式3
在C:\Program Files\PostgreSQL\9.2\bin文件夾下有
可執(zhí)行文件
createuser.exe,我雙擊后,該文件執(zhí)行一閃就關(guān)閉,只好在dos中輸入cmd打開窗口,將該文件拖入窗口中,在輸入“ –U postgres –P Adiminisrator”然后回車,如下圖所示,即可創(chuàng)建數(shù)據(jù)庫用戶Administrator。但此時(shí)該用戶不具有創(chuàng)建database的能力,可以通過pgAdmin III查看。
psql的用法可以通過在dos下輸入psql –help查看,如下圖所示。
MicrosoftWindows XP
(C) 版權(quán)所有Microsoft Corp.
C:\Documentsand Settings\Administrator>psql –help
psql是PostgreSQL 的交互式客戶端工具。
使用方法:
psql … >
通用選項(xiàng):
-c,–command=命令執(zhí)行單一命令(SQL或內(nèi)部指令)然后結(jié)束
-d, –dbname=數(shù)據(jù)庫名稱 指定要連接的數(shù)據(jù)庫 (缺?。骸盇dministrator”)
-f, –file=文件名 從文件中執(zhí)行命令然后退出
-l, –list列出所有可用的數(shù)據(jù)庫,然后退出
-v, –set=, –variable=名稱=值
為psql變量(名稱)設(shè)定值
-V, –version輸出版本信息, 然后退出
-X, –no-psqlrc不讀取啟動(dòng)文檔(~/.psqlrc)
-1 (“one”), –single-transaction
作為一個(gè)單一事務(wù)來執(zhí)行命令文件
-?, –help 顯示此幫助, 然后退出
輸入和輸出選項(xiàng):
-a, –echo-all顯示所有來自于腳本的輸入
-e, –echo-queries 顯示發(fā)送給服務(wù)器的命令
-E, –echo-hidden顯示內(nèi)部命令產(chǎn)生的查詢
-L, –log-file=文件名 將會(huì)話日志寫入文件
-n, –no-readline禁用增強(qiáng)
命令行
編輯功能(readline)
-o, –output=FILENAME 將查詢結(jié)果寫入文件(或 |管道)
-q, –quiet以沉默模式運(yùn)行(不顯示消息,只有查詢結(jié)果)
-s, –single-step單步模式 (確認(rèn)每個(gè)查詢)
-S, –single-line單行模式 (一行就是一條 SQL 命令)
輸出格式選項(xiàng) :
-A, –no-align使用非對(duì)齊表格輸出模式
-F, –field-separator=
字符串
設(shè)字段
分隔符
(缺省:”|”)
-H, –htmlHTML 表格輸出模式
-P, –pset=變量 設(shè)置將變量打印到參數(shù)的選項(xiàng)(查閱 \pset 命令)
-R, –record-separator=字符串
設(shè)定記錄分隔符(缺?。簱Q行符號(hào))
-t, –tuples-only 只打印記錄i
-T, –table-attr=文本 設(shè)定 HTML 表格標(biāo)記屬性(例如,寬度,邊界)
-x, –expanded打開擴(kuò)展表格輸出
-z, –field-separator-zero
設(shè)置字段分隔符為字節(jié)0
-0, –record-separator-zero
設(shè)置記錄分隔符為字節(jié)0
聯(lián)接選項(xiàng):
-h, –host=主機(jī)名數(shù)據(jù)庫服務(wù)器主機(jī)或socket目錄(缺省:”本地接口”)
-p, –port=端口數(shù)據(jù)庫服務(wù)器的端口(缺?。骸?432″)
-U, –username=用戶名 指定數(shù)據(jù)庫用戶名(缺?。骸盇dministrator”)
-w, –no-password永遠(yuǎn)不提示輸入口令
-W, –password強(qiáng)制口令提示 (自動(dòng))
更多信息,請(qǐng)?jiān)趐sql中輸入”\?”(用于內(nèi)部指令)或者”\help”(用于SQL命令),
或者參考PostgreSQL文檔中的psql章節(jié).
臭蟲報(bào)告至.
關(guān)于PG數(shù)據(jù)庫外連接的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開通再付費(fèi)。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開發(fā)老牌服務(wù)商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營銷推廣服務(wù)眾多企業(yè)。電話:028-86922220
文章題目:了解PG數(shù)據(jù)庫的外連接實(shí)現(xiàn)方法 (PG數(shù)據(jù)庫外連接)
分享地址:http://m.5511xx.com/article/dpjscjj.html


咨詢
建站咨詢
