PostgreSQL 基础知识:psql 入门

news/2024/7/9 21:35:03 标签: 数据库, postgresql, sqlite

PostgreSQL 有一个单独的命令行工具psql,该工具已经使用了几十年,并且包含在任何 PostgreSQL 安装中。许多 PostgreSQL 的长期用户、开发人员和管理员都依赖它来帮助他们快速连接到数据库、检查模式和执行 SQL 查询。

了解如何安装和使用基本psql命令是任何连接到 PostgreSQL 的人都必须具备的基本技能。
 

psql简史

要理解为什么 PostgreSQL 有自己的命令行实用程序以及为什么它集成到开发人员使用 PostgreSQL 的方式中,我们需要快速进入时间旅行机器并提醒自己 PostgreSQL 是如何演进的。

1970 -1985    INGRES 是 PostgreSQL 的祖父,它开发并使用了一种名为 QUEL 的专有查询语言。用于与 INGRESS 交互的终端程序之一,被称为监视器(monitor)

1985 -1994    启动并开发了 POSTGRES(在 INGRES 之后)。它维护了现在称为 POSTQUEL 的 QUEL 查询语言,因此监控 应用程序可以继续与 POSTGRES 一起使用

1995    Postgres95 以非常自由的 PostgreSQL 许可证发布,基于 POSTGRES 源代码,但 QUEL 被 SQL 取代!监控终端应用程序将不再工作,并作为与 Postgres95 交互的psql新终端工具提供

1996年至今    PostgreSQL 6.0 在新的 PostgreSQL 全球开发组的指导下发布,此后惊人的工作从未停止。随着 PostgreSQL 的每个版本,对该实用程序进行了附加功能和改进,psql以便为最终用户提供更多功能。

为什么要使用 psql

如果您是 PostgreSQL 领域的新手,使用命令行实用程序连接和查询数据库可能会感觉过时。作为一名长期的 SQL Server 开发人员,我知道缺乏一致的、标准化的 GUI 工具有时会让人感到非常沮丧。

然而,过了一会儿,我意识到当我只需要连接、查看模式和运行简单查询时,psql跳入数据库通常要容易得多。使用元命令成为获取数据库对象详细信息的第二天性。这就像拥有一个具有数百个高效快捷方式的工具来快速处理数据库

更强大的是,您可以配置psql将返回结果通过不同的格式呈现,这可以成为了解 PostgreSQL 底层目录表的途径。

最后,同样重要的是,很多向您展示如何使用 PostgreSQL 功能的文章、教程、书籍和视频通常会演示使用 psql。了解如何连接该工具并运行基本的元命令将帮助您快速跟进。

长话短说;psql是您的 PostgreSQL 工具包中的一个强大工具。知道如何连接到数据库和运行基本命令将很快为您的 PostgreSQL 工作带来好处。总的来说,我认为学习一些基础知识是值得投入时间的。

安装 psql

命令行 (CLI)工具 psql 在 Linux、MacOS 和 Windows 上可用。它预先捆绑在 PostgreSQL 服务器安装包中,也可以作为独立的 CLI 应用程序进行安装。

此外,psql与 PostgreSQL 一起进行版本控制,因为它在您使用元命令运行的查询需要使用较新的目录模式。为了使 psql 在受支持的 PostgreSQL 版本中向后兼容,我们付出了很多努力,因此较新的版本psql应该至少适用于最近的五个主要版本。

检查 psql

因为 psql 与 PostgreSQL 服务器捆绑在一起,所以如果您曾经安装过PostgreSQL,则您的计算机上可能已经可以使用它。在终端或 Windows 命令提示符下键入以下内容:
 

1 $> psql --version2  
2 psql (PostgreSQL) 15.0 (Ubuntu 15.0-1.pgdg20.04+1)

如果您看到列出psql版本信息,那么说明您已经安装了psql。如果版本较旧,请考虑更新它。

一个好的经验是尝试拥有一个与PostgreSQL 相匹配的psql版本。对于我们在下面介绍的基本命令,您拥有的任何版本很可能都可以使用,但保持psql更新是一个值得遵循的好习惯。

在 Linux 上安装

所有主要的 Linux 发行版都应该有postgresql-client., 这可用于仅安装服务器以外的 PostgreSQL 工具,包括psql、pg_dump、 pg_restore等工具。

我们将使用 Ubuntu 作为示例,但是您的发行版的包管理器应该具有相同(或非常相似)的包名称来执行相同的操作。下面的命令将安装最新版本的工具。
在终端提示符下,运行以下命令:

1 $> sudo apt-get update
2 $> sudo apt-get install postgresql-client

完成后,psql如前所示通过检查版本来验证安装。

在 Windows 上安装

在 Windows 上,您有两个选择。

1、如果您想通过 Windows 命令提示符使用psql,则需要使用postgresql.org 上的 Windows 安装包安装 PostgreSQL 和所有工具。通过安装过程,您可以决定安装服务器和工具的哪些部分。

2、在 Windows 10 或更高版本上,可以在 Windows 子系统 Linux 2 (WSL2) 环境中安装这些工具,并使用正常的 Linux 包管理来安装组件,如上所示。同样,根据您为 WSL 主机使用的发行版,包命令可能会略有不同。

在 MacOS 上安装

有多种方法可以在 MacOS 上安装 PostgreSQL,其中许多包括完整的服务器和相关工具。

在 MacOS 上设置 PostgreSQL 的最快方法是使用Postgres.app(https://postgresapp.com/)。这提供了可以随意启动和停止PostgreSQL 服务器的完整安装,其主页上的简单说明向您展示了如何确保 PostgreSQL CLI 工具位于从终端使用的路径中。

或者,您可以使用 Homebrew 安装PostgreSQL。安装libpq包只会安装工具(而不是服务器)。

1 ryan@mba-laptop % brew doctor
2 ryan@mba-laptop % brew update
3 ryan@mba-laptop % brew install libpq

因为这不是完整的 PostgreSQL 服务器,您还需要正确设置路径,以便您可以从终端使用psql。最简单的方法是让 Homebrew 按如下方式更新链接。

1 ryan@mba-laptop % brew link --force libpq

Docker

最后,如果我没有提到 Docker 作为替代方案,那我就是失职了。通过交互式 Docker shell,可以使用任何官方 PostgreSQL 容器来连接和使用psql. 无论您是尝试连接到 Docker 实例本身上的 PostgreSQL 还是远程连接,psql都可以使用已安装的应用程序(假设网络设置正确)。

例如,以下命令可用于下载和启动 PostgreSQL Docker 容器,连接到正在运行的 shell,并在容器内部使用psql。

1 ryan@redgate-laptop:~$ docker run --name pg15 -p 5432:5432 -e POSTGRES_PASSWORD=password -d postgres
2 ryan@redgate-laptop:~$ docker exec -it pg15 bash
3 root@80049acea1c0:/# psql -h localhost -U postgres

连接到 PostgreSQL                                  

安装后,psql有两种方法可以指定目标数据库的基本连接参数。您将需要以下信息来连接到 PostgreSQL。
1、主机名
2、端口(默认为 5432)
3、用户名
4、密码
5、数据库名称

指定个别参数

有了以上信息,使用这些参数连接到数据库。如果 PostgreSQL 服务器在默认端口 5432 上运行,您可以省略-p开关,psql将自动尝试连接到该端口。
psql -h [hostname] -p [port] -U [username] -d [database name]
如果所有信息都正确,系统将提示您输入密码。使用单独的参数连接到PostgreSQL时,无法在命令行上提供密码。您将始终收到提示,或者您可以在文件中.pgpass指定它。
使用 PostgreSQL 连接 URI
或者,您可以使用连接参数创建 PostgreSQL 连接 URI 以连接到数据库

1 psql postgresql://[username]:[password]@[hostname]:[port]/[database name]

使用这种形式,您可以在连接字符串中指定密码,只要它不包含分号  ;  或 @ 符

号,因为它们会干扰连接 URI 解析。如果省略密码,PostgreSQL 会提示您。

结论

命令行psql是任何使用 PostgreSQL 的人的首选工具。凭借数十年的发展和数百个内置的元命令来帮助开发人员和管理员快速高效地使用 PostgreSQL,知道如何安装和使用它来连接数据库是 PostgreSQL 用户的一项基本技能。作为一个额外的好处,由于社区为保持向后兼容性所做的不懈努力,最新psql版本至少可以与 PostgreSQL 的最近五个主要版本一起使用。

当然,了解如何安装和连接只是难题的一部分。在我们的下一篇文章中,我们将向您介绍如何使用psql以及您应该了解的主要元命令来加速 PostgreSQL 数据库的开发和管理。
 


http://www.niftyadmin.cn/n/286536.html

相关文章

AWS Lambda - 同步/异步调用,事件源,目标

Hello大家好,我们今天继续讨论AWS Lambda的内容。 同步调用 Lambda函数有三种调用方式。 第一种方式是同步调用。 当我们使用API、CLI以及API网关等调用函数时,就是同步调用。 当您同步调用函数时,Lambda会运行该函数并等待响应&#xff…

网络安全工程师 - 面试手册

网络安全工程师 - 面试手册 岗位概述 网络安全和渗透测试工程师负责确保企业网络系统和应用程序的安全性。他们通过模拟黑客攻击来发现和修复潜在的安全漏洞,同时也负责制定和实施网络安全策略。这一岗位需要具备丰富的网络安全知识,以及熟练的渗透测试…

【分享】ChatGPT的key,用key免费使用ChatGPT(每天更新)

1、ChatGPT用法总结: 自动化文本生成:可以用GPT生成文章、新闻、文本摘要,甚至小说、诗歌等文学作品。语音生成:结合语音合成技术,GPT可以生成自然流畅的语音,可以用于语音助手、交互式语音应用等。问答系统…

JavaEE-HTML常用标签了解(二)

目录 表格标签合并单元格 列表标签表单标签无语义标签HTML特殊字符 表格标签 table 标签: 表示整个表格tr: 表示表格的一行td: 表示一个单元格th: 表示表头单元格. 会居中加粗thead: 表格的头部区域(注意和 th 区分, 范围是比 th 要大的)tbody: 表格得到主体区域. <table …

第38讲:Python for-in循环语句核心概念以及案例演示

文章目录 1.什么是for-in循环语句2.for-in循环语句基本应用案例2.1.for-in循环语句的语法格式2.2.for-in循环语句遍历range、列表、元素、字符串等序列2.3.循环体中不需要使用自定义的变量2.4.for-in循环语句遍历可变序列时修改序列中的元素2.5.for-in循环语句遍历集合序列2.6.…

数据开发工程师 - 面试手册

数据开发工程师 - 面试手册 岗位概述 数据开发工程师负责在组织内部创建和维护数据处理流程&#xff0c;以支持数据科学家和业务分析师的工作。他们通常需要与数据科学家、数据分析师和其他技术团队紧密合作&#xff0c;以确保数据平台的高效运行。此外&#xff0c;数据开发工…

《国际联网安全保护管理办法》

1.基本信息 &#xff08;1997年12月11日国务院批准 1997年12月16日公安部令第33号发布 根据2011年1月8日《国务院关于废止和修改部分行政法规的决定》修订&#xff09; 2.办法内容 第一章 总 则 第一条为了加强对计算机信息网络国际联网的安全保护&#xff0c;维护公共…

第2章-分治法

第2章-分治法 总分&#xff1a;100分 得分&#xff1a;20.0分 1 . 多选题 中等 10分 有关以下代码&#xff0c;说法正确的是&#xff08; ABCE&#xff09; def BinarySearch(s, x, low, high):if (low > high):return -1middle (low high) / 2if (x s[mid…