PostgreSQL 基础知识:psql 入门

news2024/9/26 18:43:36

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.coloradmin.cn/o/487478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【每日一题】

文章目录 C 技术点多边三角形剖分的最低得分(dp思路,选不选问题)移动石子到连续(思路) C 技术点 1. string类型使用find函数。 int index s.find(""); if (inde ! string:npos){ xx }2. transform函数&…

[代码随想录]二叉树

二叉树 文章目录 二叉树1. 二叉树的递归遍历144.前序遍历94.中序遍历145.后续遍历 *2.二叉树的迭代遍历145.前序遍历94.中序遍历145.后续遍历 3.统一二叉树迭代遍历144.前序遍历94.中序排序145.后序遍历 4.层序遍历102.二叉树的层序遍历107. 二叉树的层序遍历 II199. 二叉树的右…

[Dev‘Life] Dubai工签指南

Dubai工作签证一般为两年有效期,主要流程为 PCR-TEST-REPORT(体检)劳动者通识培训(听课)申请ID (录制指纹/掌静脉) 前置查询:Dubai-ICA官网查看签证有效期 免费查询签证的状态,相关查询连接在此: https://…

与伙伴同行,Serverless 让创新触手可及

今天 Serverless 的方式真正意义上做到了云产品、云技术的开箱即用,企业和开发者不需要再关注底层的资源配置,更多地把精力放在业务系统的开发中。 4 月 26 日,在 2023 阿里云合作伙伴大会现场,阿里云智能 CTO 周靖人发表主题演讲…

XML解析(DOM4j)检索(Xpath)

XML在以后更多的是用来作为配置文件的。 一. 配置文件 什么是配置文件 用来保存程序在运行时需要的一些参数。 当配置信息比较复杂的时候&#xff0c;我们就可以用XML。 二. XML概述 三. XML的创建、语法规则 根标签就是写在最外面的标签。 <?xml version"1.0&quo…

【Unity3D小功能】Unity3D中实现Text显示版本功能

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 在项目开发中&#xff0c;会遇到要控制版本的情况&#xff0c;…

Python基础篇

大家好&#xff0c;我是易安&#xff01; Python语言比起C、Java等主流语言&#xff0c;语法更简洁&#xff0c;也更接近英语&#xff0c;对编程世界的新人还是很友好的&#xff0c;这也是其显著优点。最近总有人问我Python相关的问题&#xff0c;这些问题也偏基础&#xff0c;…

Qt绘图类

Qt绘图类 QPainter绘图1&#xff0e;QPainter与QPaintDevice2&#xff0e;paintEvent事件和绘图区3&#xff0e;QPainter绘图的主要属性4&#xff0e;创建实例 QPen的主要功能1&#xff0e;线条样式2&#xff0e;线条端点样式3. QBrush的主要功能4. 渐变填充 5 QPainter绘制…

Python小姿势 - Python连接MySQL数据库

Python连接MySQL数据库 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 Python的创始人为吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;&#xff0c;于1989年底圣诞节期间&#xff0c;为了打发无聊的圣诞节&#xff0c;决心开发一个新的脚本解释程序…

云表无代码开发平台,助力制造业练就数字化转型"硬功"

制造业作为国民经济的基础&#xff0c;也是我国的支柱产业&#xff0c;对我国经济发展具有重要意义。但随着近年来我国制造业转型升级步伐的加快&#xff0c;我国制造业在发展过程中也面临着许多困难和挑战。比如&#xff1a;企业生产设备老化、生产过程自动化程度低、产品质量…

Spark大数据处理讲课笔记3.3 掌握RDD分区

文章目录 零、本讲学习目标一、RRD分区&#xff08;一&#xff09;RDD分区概念&#xff08;二&#xff09;RDD分区作用 二、RDD分区数量&#xff08;一&#xff09;RDD分区原则&#xff08;二&#xff09;影响分区的因素&#xff08;三&#xff09;使用parallelize()方法创建RD…

【计算机视觉】Visual Transformer (ViT)模型结构以及原理解析

文章目录 一、简介二、Vision Transformer如何工作三、ViT模型架构四、ViT工作原理解析4.1 步骤1&#xff1a;将图片转换成patches序列4.2 步骤2&#xff1a;将patches铺平4.3 步骤3&#xff1a;添加Position embedding4.4 步骤4&#xff1a;添加class token4.5 步骤5&#xff…

数字图像处理--matlab图像反转、对数变换、伽马变换、对比度拉伸详解和代码实现

灰度变换在图像的单个像素上操作&#xff0c;主要以对比度和阈值处理为目的 空间滤波涉及改善性能的操作&#xff08;邻域操作&#xff09;&#xff0c;如通过图像中每一个像素的邻域处理来锐化图像 这两种方法均属于图像增强。 灰度变换 邻域基本增强变换定义数学表达三种基本…

QTableWidget表格控件的用法(非常详细)

QTableWidget表格控件的用法&#xff08;非常详细&#xff09; QTableWidget表格控件的用法&#xff08;非常详细&#xff09;QTableWidget详解1.常用API设置自动调整行高和列宽设置表格内容是否可编辑设置行表头、列表头是否显示 2.添加子项3.右键弹出菜单4.设置风格5.清空6.运…

LED灯内常见驱动电路

如今LED灯已成为照明的主流&#xff0c;使用白炽灯的家庭少之又少。其主要优势是LED灯更节能&#xff0c;相同光效的情况下&#xff0c;LED灯消耗的电能要比白炽灯减少70%以上。 LED灯的寿命比白炽灯要长&#xff0c;使用过白炽灯的人都知道&#xff0c;使用不了多长时间&…

简析Linux内核中的各种锁:信号量/互斥锁/读写锁/原子锁/自旋锁/内存屏障等

首先得搞清楚&#xff0c;不同锁的作用对象不同。 下面分别是作用于临界区、CPU、内存、cache 的各种锁的归纳&#xff1a; 一、atomic原子变量/spinlock自旋锁 — —CPU 既然是锁CPU&#xff0c;那就都是针对多核处理器或多CPU处理器。单核的话&#xff0c;只有发生中断会使…

生成C++工程的UML类图和类继承关系图

简介 在进行软件开发时&#xff0c;了解代码结构和关系、类之间的继承关系以及类内部的成员函数和变量定义是非常重要的。为此&#xff0c;我们可以使用Doxygen和Graphviz工具来生成UML类图和类集成关系图。 Doxygen是一个用于从注释的C源代码中生成文档的工具&#xff0c;支…

day01刷题记录

刷题 题目一分析题解 题目二分析题解 题目一 牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。 例如: 一个队伍三个队员的水平值分别是…

access数据库连接sqlserver实现远程连接

由于项目需要对接生产系统&#xff0c;但是生产系统使用的是access数据库&#xff08;这么老还在用&#xff0c;不知道咋想的&#xff09;&#xff0c;客户又想把项目部署到阿里云上&#xff0c;需要阿里云远程连接本地的access数据库&#xff08;心里一句MMP送上&#xff09;&…

Java——线程池详细讲解

文章目录 一、线程池一、线程池基础1.1 什么是线程池1.2 为什么使用线程池1.3 线程池有哪些优势1.4 应用场景 二、线程池使用2.1 Java内置线程池 ThreadPoolExecutor2.1.1 线程池的七个参数2.1.1.1 **int corePoolSize 核心线程数量**2.1.1.2 int maximumPoolSize 最大线程数2.…