PostgreSQL(简称PG)是一种开源的关系型数据库管理系统,它支持多种数据类型和复杂查询,并提供了固定和可扩展的事务性存储。在SQL查询中,外连接是一种重要的查询操作,用于连接两个不同的表,并显示出其中一个表中的所有行和另一个表中匹配行的结果。本文将介绍PG数据库的外连接实现方法,包括左外连接、右外连接和全外连接。
1. 左外连接
左外连接(LEFT OUTER JOIN)是连接两个表中的行,其中左表中的每个行都被包括在结果中,而右表中没有匹配项的行以NULL值填充。 左外连接的语法格式如下:
SELECT column1, column2, …
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;
左外连接需要两个表,table1和table2,语句主要由SELECT、FROM和LEFT OUTER JOIN三个SQL关键字组成。SELECT关键字指定查询的数据列,FROM关键字指定查询的数据表,而LEFT OUTER JOIN关键字则指定连接表的类型。下面是一段示例代码:
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表中提取出数据列customer_id和order_date,并将两个表连接在一起,以显示所有客户的订单日期。外连接将返回左表中所有条目(即所有客户),并用NULL值替换没有订单的项。结果如下所示:
customer_id | order_date
————+————
AAA | 10-05-2023
BBB | NULL
CCC | 08-12-2023
DDD | NULL
2. 右外连接
右外连接(RIGHT OUTER JOIN)与左外连接类似,只不过是右表中的每个行都被包括在结果中,而左表中没有匹配项的行以NULL值填充。右外连接的语法格式如下:
SELECT column1, column2, …
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;
右外连接也需要两个表,table1和table2,语句主要由SELECT、FROM和RIGHT OUTER JOIN三个SQL关键字组成。下面是一个例子:
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表中提取出数据列customer_name和order_date,并将两个表连接在一起,以显示有订单的客户名字。右外连接将返回右表中所有条目(即所有订单),并用NULL值替换没有顾客的项。结果如下所示:
customer_name | order_date
————–+————
Allen | 10-05-2023
NULL | 06-08-2023
Bob | 08-12-2023
David | 09-03-2023
3. 全外连接
全外连接(FULL OUTER JOIN)是将左表和右表中的所有行包括在结果中,如果没有匹配的行,则用NULL值填充。全外连接的语法格式如下:
SELECT column1, column2, …
FROM table1
FULL [OUTER] JOIN table2
ON table1.column = table2.column;
同样的,全外连接也需要两个表,table1和table2,语句主要由SELECT、FROM和FULL OUTER JOIN三个SQL关键字组成。下面是一个例子:
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表中提取出数据列customer_id和order_date,并将两个表连接在一起,以显示客户和订单。全外连接将返回左表和右表中所有条目,并用NULL值替换没有匹配项的项。结果如下所示:
customer_id | order_date
————+————
AAA | 10-05-2023
BBB | NULL
CCC | 08-12-2023
DDD | NULL
NULL | 06-08-2023
在查询复杂数据时,PG数据库的外连接非常重要,可以帮助您将两个或多个表中的数据进行关联。本文介绍了PG数据库的左外连接、右外连接和全外连接的语法格式和一些示例代码,希望可以帮助读者更好地。
相关问题拓展阅读:
1、windows下postgresql的安装
我下载的为xxx9.2.exe一路默认安装即可。安装位置为C:\Program Files\PostgreSQL。
安装完毕后,在dos下执行命令
>net user
列出当前系统
用户名
称。我的用户名为Administrator。
>psql –U Administrator –d postgres
该命令表示通过数据库用户Administrator连接数据库postgres。
l 若显示psql不是内部或外部命令,则说明postgresql的bin文件路径没添加到windows系统中,右击“我的电脑”->”属性”->”高级”->”
环境变量
”->”Administrator”的用户变量,选中“PATH”,点击编辑明销,将”C:\Program Files\PostgreSQL\9.2\bin”添加进去,注意与前面的路径用”;”隔开。电脑重启生效。
l 若显示角色Administrator不存在,则必须在postgresql数据库中添加该用户才能使其可以登录。
在postgresql中
查询系统用户
postgres=#select* from pg_user;
查询系统中的数据库
postgres=#select* from pg_database;
说明一下:“template1”是Postgresql在初始化时自动创建的测试数据库。
创建postgresql数据库Administrator用户
方式1
在PostgreSQL中创建用户postgreSQL用户Administrator
用SQL Shell(psql)通过用户postgres登录PostgreSQL,创建用户Administrator,
postgres=#create user “Administrator”;
方式2
通过windows下dos创建postgresql用户Administrator
将PostgreSQL
文件夹
bin路径添加到系统环境中后重启生效.
通过windows下dos创建postgresql用户是区分大小写的。
配置客户机访问
为了配置远程主机和用户可以连接到PostgreSQL服务,你需要pg_hba.conf文件。文件包含大量注释记录用于远程访问的选项。在我们的安装示例中,我们允许局域网中任何主机的任何用户访问服务器上的数据库。为了达到这个目的,我们添加以下的一行记录到文件尾:
host all all 192.168.0.0/16 trust
这意味着所有
IP地址
由192.168开始的计算机可以访问所有的数据库。最简单的使配置生效的方法就是重启服务器。
在dos下操作,通过createuser –Uolduser –P newuser来创建。
比如我们想创建postgresql数据库用户Administrator。
>createuser –U postgre –P Administrator
这样创激渗游建的数据库用户Administrator没有创建数据库的权利,可以通过pgAdmin III登录进行查看。
若使其可以创建数据库可以参照下面内容进行设置:
>createuser –U postgre –s Administrator
这样具有创建数据库能力。
createuser的用法可以通过在dos中输入createuser –help查看。
MicrosoftWindows XP
(C)版喊腊权所有Microsoft Corp.
C:\Documentsand Settings\Administrator>createuser –help
createuser创建一个新的 PostgreSQL 用户.
使用方法:
createuser …
选项:
-c, –connection-limit=N 角色的连接限制(缺省: 没有限制)
-d, –createdb此角色可以创建新数据库
-D, –no-createdb此角色不可以创建新数据库(默认)
-e, –echo 显示发送到服务端的命令
-E, –encrypted口令加密存储
-i, –inherit角色能够继承它所属角色的权限
(这是缺省情况)
-I, –no-inherit角色不继承权限
-l, –login角色能够登录(这是缺省情况)
-L, –no-login角色不能登录
-N, –unencrypted口令不加密存储
-P, –pwprompt给新角色指定口令
-r, –createrole这个角色可以创建新的角色
-R, –no-createrole这个角色没有创建其它角色的权限(默认)
-s, –superuser角色将是超级用户
-S, –no-superuser角色不能是超级用户(默认)
-V, –version输出版本信息, 然后退出
–interactive提示缺少角色名及其属性
而不是使用默认值
–replication角色能启动复制
–no-replication角色不能启动复制
-?, –help 显示此帮助, 然后退出
联接选项:
-h, –host=HOSTNAM数据库服务器所在机器的主机名或
套接字
目录
-p, –port=PORT数据库服务器
端口号
-U, –username=USERNAME 联接用户 (不是要创建的用户名)
-w, -no-password永远不提示输入口令
-W, –password强制提示输入口令
臭虫报告至.
C:\Documentsand Settings\Administrator>
方式3
在C:\Program Files\PostgreSQL\9.2\bin文件夹下有
可执行文件
createuser.exe,我双击后,该文件执行一闪就关闭,只好在dos中输入cmd打开窗口,将该文件拖入窗口中,在输入“ –U postgres –P Adiminisrator”然后回车,如下图所示,即可创建数据库用户Administrator。但此时该用户不具有创建database的能力,可以通过pgAdmin III查看。
psql的用法可以通过在dos下输入psql –help查看,如下图所示。
MicrosoftWindows XP
(C) 版权所有Microsoft Corp.
C:\Documentsand Settings\Administrator>psql –help
psql是PostgreSQL 的交互式客户端工具。
使用方法:
psql … >
通用选项:
-c,–command=命令执行单一命令(SQL或内部指令)然后结束
-d, –dbname=数据库名称 指定要连接的数据库 (缺省:”Administrator”)
-f, –file=文件名 从文件中执行命令然后退出
-l, –list列出所有可用的数据库,然后退出
-v, –set=, –variable=名称=值
为psql变量(名称)设定值
-V, –version输出版本信息, 然后退出
-X, –no-psqlrc不读取启动文档(~/.psqlrc)
-1 (“one”), –single-transaction
作为一个单一事务来执行命令文件
-?, –help 显示此帮助, 然后退出
输入和输出选项:
-a, –echo-all显示所有来自于脚本的输入
-e, –echo-queries 显示发送给服务器的命令
-E, –echo-hidden显示内部命令产生的查询
-L, –log-file=文件名 将会话日志写入文件
-n, –no-readline禁用增强
命令行
编辑功能(readline)
-o, –output=FILENAME 将查询结果写入文件(或 |管道)
-q, –quiet以沉默模式运行(不显示消息,只有查询结果)
-s, –single-step单步模式 (确认每个查询)
-S, –single-line单行模式 (一行就是一条 SQL 命令)
输出格式选项 :
-A, –no-align使用非对齐表格输出模式
-F, –field-separator=
字符串
设字段
分隔符
(缺省:”|”)
-H, –htmlHTML 表格输出模式
-P, –pset=变量 设置将变量打印到参数的选项(查阅 \pset 命令)
-R, –record-separator=字符串
设定记录分隔符(缺省:换行符号)
-t, –tuples-only 只打印记录i
-T, –table-attr=文本 设定 HTML 表格标记属性(例如,宽度,边界)
-x, –expanded打开扩展表格输出
-z, –field-separator-zero
设置字段分隔符为字节0
-0, –record-separator-zero
设置记录分隔符为字节0
联接选项:
-h, –host=主机名数据库服务器主机或socket目录(缺省:”本地接口”)
-p, –port=端口数据库服务器的端口(缺省:”5432″)
-U, –username=用户名 指定数据库用户名(缺省:”Administrator”)
-w, –no-password永远不提示输入口令
-W, –password强制口令提示 (自动)
更多信息,请在psql中输入”\?”(用于内部指令)或者”\help”(用于SQL命令),
或者参考PostgreSQL文档中的psql章节.
臭虫报告至.
关于PG数据库外连接的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
成都服务器托管选创新互联,先上架开通再付费。
创新互联(www.cdcxhl.com)专业-网站建设,软件开发老牌服务商!微信小程序开发,APP开发,网站制作,网站营销推广服务众多企业。电话:028-86922220
新闻名称:了解PG数据库的外连接实现方法 (PG数据库外连接)
文章转载:http://www.shufengxianlan.com/qtweb/news41/376941.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联