通过上几篇文章我们讲解了如何安装 PostgreSQL 数据库软件和 pgAdmin4 图形化管理工具。

今天我们继续学习如何通过 pgAdmin4 管理工具图形化创建和管理 PostgreSQL 数据库。

一、PostgreSQL的基本工作方式
在学习如何使用PostgreSQL创建数据库之前,我们需要了解一下它是如何工作的。理解PostgreSQL的基本运行方式可以帮助我们更好地理解后面要介绍的知识。

简单来说,PostgreSQL采用了一种客户端/服务器(C/S)模型。这意味着在PostgreSQL中,有两种主要角色:

  1. 服务器(也称为“后端”):这是一个程序,负责管理数据库文件,接受客户端程序的连接请求,并执行客户端指定的操作。 这个服务器程序的名字叫做“postgres”。

  2. 客户端(也称为“前端”)程序:这些是用户用来告诉数据库执行什么操作的工具。客户端程序可以是各种各样的,例如文本工具、图形程序、用于显示网页的Web服务器,或者专门的数据库维护工具。有些客户端程序是与PostgreSQL一起提供的,而大多数是由用户自己开发的。

就像我们使用电脑浏览京东,其实是我们的电脑在与互联网上的服务器进行通信一样,PostgreSQL的客户端和服务器可以在不同的计算机上运行。它们通过TCP/IP网络进行通信。需要记住的一点是,在客户端计算机上可以访问的文件,不一定可以在服务器计算机上访问,或者它们的位置和名称可能不同。

PostgreSQL服务器可以同时处理来自多个客户端的连接。为了实现这一点,服务器会为每个连接创建一个新的进程。这样,客户端和新进程之间可以直接通信,而不必担心被原来的postgres进程打扰。因此,主服务器进程将一直运行,等待客户端的连接请求;与此相反,客户端和与之相关联的服务器进程会不断地出现和消失。

二、创建数据库

要检查客户端是否可以连接到数据库服务器,我们可以首先尝试在安装好 PostgreSQL 的服务器上创建一个新数据库。PostgreSQL 服务器可以同时管理一个或多个数据库,通常来说每个用户会为不同的项目创建使用各自独立的数据库。

如果系统管理员已经为您创建了数据库并告诉您数据库的名称和连接信息,那就更好了。

为了创建数据库,必须先在服务器上运行安装好的 PostgreSQL 服务,每个运行 PostgreSQL 服务器的实例都管理着一个或多个数据库。

一)、图形化创建数据库

接下来,我们打开电脑端安装好的 pgAdmin4。

1、修改界面语言

如果有需要,可以先将界面语言修改为简体中文,以方便后续使用。

点击菜单【File】—【Preferences】,打开偏好设置。

在左侧找到【User Language】,右侧点击下拉框,选择 【简体中文】,然后点击【Save】保存。

此时会弹出一个提示框,提示需要重新加载 pgAdmin4,点击【Refresh】刷新。
重新加载 pgAdmin4之后,界面已经更换为简体中文。

2、连接到 PostgreSQL 数据库服务器。

点击菜单【对象】–【注册】–【服务器】。

在界面中输入 PostgreSQL 数据库服务器的各项连接信息。
【General】–【名称】:为连接起一个方便记忆和区分的名称,比如:PG-Database

在【连接】页面输入 PostgreSQL 数据库服务器的IP地址和密码,如果使用的不是默认端口【5432】,则也需要修改为配置的连接端口。


点击保存,此时 pgAdmin4 会使用配置的信息尝试连接 PostgreSQL 数据库服务器。
连接成功后,就会出现以下界面:

如果连接不成功,则需要检查输入的服务器IP地址和密码是否正确,客户端电脑和服务器的防火墙设置是否正确。

3、创建新的数据库

右键单击【数据库】–【创建】–【数据库】。

在弹出的【创建数据库】窗口配置新建数据库的各项信息。
【数据库】:创建数据库的名称,必须填写。
【OID】: 在新版本的PostgreSQL中可以忽略。
【所有者】:默认为postgres系统用户,学习阶段保持默认即可。
【注释】:可以备注所创建的数据库的用途。

补充了解冷知识:
【OID】:在 PostgreSQL 数据库中,OID(Object
Identifier,对象标识符)是一种唯一标识数据库中的对象(通常是表中的行)的整数标识符。OID在过去用于唯一标识表中的行,但从 PostgreSQL 12 版本开始,默认情况下已不再使用OID列作为表的隐藏列。OID列不再被自动创建,因此我们在创建表时不会看到它。

如果我们在使用 pgAdmin 4 创建 PostgreSQL 数据库时看到一个选项或设置涉及OID,那是因为我们可以选择是否要在特定表中启用或禁用OID列。
在新版本的 PostgreSQL中,不再需要使用OID,而且它已不再是默认行为。大多数用户不再使用OID列,因为它会增加存储和维护的开销,而且通常没有必要。

如果我们不确定是否需要启用OID列,通常情况下可以不必担心它。在pgAdmin4中,我们可以在创建表时选择是否包括OID列,但如果不明确需要它,建议将其保持禁用。
如果您有特定的用途需要使用OID列,那么可以启用它。但要注意,需要小心处理OID列,以避免潜在的性能和管理问题。

在【定义】页面中,我们可以设置数据库的字符集编码、模板、表空间和连接数限制等设定数据库参数,初学阶段我们可以不选择,采用系统默认就好。

【连接限制】:最大连接数限制,默认为 -1 ,表示可以无限制连接,如果需要限制连接数,可以输入一个正整数,比如【300】。


在【安全】页面中,是可视化完成grant授权命令的地方,一般用不到。

在我们真实的工作场景中,数据库权限是由公司数据库管理员【DBA】来统一设置和管理的,开发人员一般不能设置。

我们这里作为学习和演示,就使用 postgres 账户给public账户授权【ALL】了。

在【参数】页面中,可以设置具体的数据库参数。


在这里,我们设置了一个参数 “application_name” 的值为 “Default” ,当然也可以不设置。

补充了解冷知识: 在 pgAdmin 4 中,设置 “application_name” 参数为 “Default” 是为了指定
PostgreSQL 客户端连接的应用程序名称。这是一种在数据库中标识连接的方式,可以帮助我们更容易地识别不同的数据库连接来源。

当我们设置 “application_name” 为 “Default” 时,这意味着我们希望将当前的数据库连接标识为默认应用程序,通常这是指使用 pgAdmin 4 连接到 PostgreSQL 数据库的客户端。这对于数据库日志和性能分析非常有用,因为它可以让我们清晰地知道哪个应用程序或工具创建了特定的数据库连接。

通过设置 “application_name” 参数,我们可以为不同的客户端应用程序或连接创建不同的名称,使数据库管理员能够更容易地识别和跟踪各个连接的来源。这对于调试和监视数据库非常有用,尤其是在具有多个客户端应用程序的环境中。

设置 “application_name” 主要是为了更好地管理和跟踪连接,以区分不同应用程序或客户端的连接。这对于具有多个应用程序同时连接到数据库的环境中特别有用。如果我们只使用一个应用程序或工具与数据库连接,而不需要特定的标识,那么也可以不设置 “application_name”,因为默认值通常足够了。

除非有特殊需求,【高级】页面一般不用设置。

在【SQL】页面中,可以查看创建数据库时所执行的SQL语句,其中包含了之前的所有设置。

其实创建数据库的过程就是在PostgreSQL 服务器中逐条执行【SQL】页面中的所有建库SQL语句的过程。

如果检查相关创建选项后没有问题,点击 “保存” 开始执行 SQL 语句并创建数据库。

在 pgAdmin 4 中,在【SQL】页面中查看即将执行的 SQL 语句是一种非常有用的功能。

这可以让我们查看并审查创建数据库时将执行的 SQL 语句,以确保所有参数和设置符合我们的需求。

Tips:

一般来说,我们可以按照以下步骤在 pgAdmin 4 中查看创建数据库时的 SQL 语句:

  1. 打开 pgAdmin 4 并连接到我们的 PostgreSQL 服务器。

  2. 在左侧的“对象”资源树中,展开 “Databases”(数据库),然后右键单击 “Create”(创建)并选择 “Database”(数据库)以打开数据库创建对话框。

  3. 在对话框中,填写数据库的各种参数和设置,如名称、所有者、字符集、连接限制等。

  4. 在对话框的底部,您会看到一个选项卡或标签栏,通常称为 “SQL” 或 “SQL Pane”,在这里您可以查看即将执行的 SQL 语句。

  5. 预览 SQL 语句并确保它们与您的预期相符。我们可以在这里检查和自定义 SQL 语句。

  6. 如果一切都符合要求,点击 “OK” 或 “Save” 以执行 SQL 语句并创建数据库。

这个功能使我们能够了解和控制数据库创建过程中的每个细节,以确保数据库是按照我们的要求创建的,这对于数据库管理和维护非常有用。

点击“保存”后,就可以看到数据库已经创建好了。

二)、使用SQL命令创建数据库

除了使用可视化工具(如 pgAdmin 4)来创建数据库,我们还可以使用 SQL 命令来创建数据库。

在 PostgreSQL 中,我们可以使用 CREATE DATABASE 语句来执行此操作。以下是一个基本的示例:

CREATE DATABASE mydatabase;

这将创建一个名为 “mydatabase” 的新数据库。

我们可以将 “mydatabase” 替换为我们希望创建的数据库的名称。还可以使用其他选项来指定数据库的字符集、所有者和其他属性。

例如,如果我们想创建一个指定字符集和所有者的数据库,可以这样做:

CREATE DATABASE pgtestWITH OWNER = postgres ENCODING = 'UTF8';

这将创建一个名为 “pgtest” 的数据库,将其所有者设置为 “postgres”,字符集设置为 UTF-8。

点击【工具】–【查询工具】


可以看到在右侧出现一个查询窗口,这就是输入 SQL 指令的地方。

将上面的 CREATE DATABASE 语句复制粘贴到 SQL窗口。


点击“执行”按钮,或按F5,执行刚才输入的SQL语句。

查看底部 “消息” 窗口,显示数据库已经创建成功。

“CREATE DATABASE 耗时49 毫秒 成功返回查询。”


点击右键刷新数据库列表

就可以看到刚创建的 “pgtest” 的数据库了。


可以在右侧窗口查看和编辑数据库的相关属性。

使用 SQL 命令创建数据库可以提供更多的控制和定制选项,适用于自动化和批量操作。

不过,我们需要确保具有适当的数据库创建权限才能执行这些命令。

在使用 SQL 命令创建数据库时,我们也可以使用相同的方法来查看创建数据库的 SQL 语句,以便进行记录或调试。

三、删除数据库

如果在实际工作中一个数据库不再需要使用或者需要删除处理,我们可以使用 pgAdmin 4 进行可视化删除数据库,或者使用 SQL 命令来删除数据库。

3.1、在 pgAdmin 4 中可视化删除数据库:

  1. 打开 pgAdmin 4 并连接到您的 PostgreSQL 服务器。
  2. 在左侧的“对象”资源树中,展开 “Databases”(数据库)。
  3. 找到要删除的数据库,右键单击它,然后选择 “Delete/Drop”(删除/丢弃)。
  4. 在确认对话框中,确认您要删除数据库并点击 “OK”。

    这将使用可视化界面删除数据库。

Tips:
在 pgAdmin 4 中删除数据库时,有两个选项可供选择:删除(Drop)和删除(强制)(Drop (Cascade))。这两者之间存在重要区别:

  1. 删除(Drop):这是一种常规的数据库删除操作。当我们选择删除数据库时,pgAdmin 4会尝试删除数据库,但只有在没有其他数据库对象(如表、视图、函数等)依赖于要删除的数据库时才能成功删除。如果存在与该数据库相关的依赖项,删除操作将失败,并且数据库将保持不变。

  2. 删除(强制)(Drop (Cascade)):这是一种强制删除操作。当我们选择强制删除数据库时,pgAdmin 4会尝试删除数据库,并在删除之前,会递归删除所有与该数据库相关的依赖项,例如表、视图、函数等。这意味着如果有其他数据库对象依赖于要删除的数据库,它们也将被删除,以便删除整个数据库。

区别在于,“删除(Drop)” 尝试删除数据库但会保留关联的依赖项,而 “删除(强制)(Drop (Cascade))” 尝试删除数据库并删除所有相关依赖项。选择哪种方法取决于您的需求和意图:

  • 如果我们希望仅删除数据库,但保留与其相关的其他对象,可以选择 “删除(Drop)”。
  • 如果我们希望删除数据库以及与其相关的所有对象,可以选择 “删除(强制)(Drop (Cascade))”。

请注意,在进行强制删除操作时,需要格外小心,因为它会永久删除所有相关对象,而不仅仅是数据库本身。确保在执行强制删除之前,您已经备份了重要的数据和对象,以免不必要的数据丢失。

3.2、使用 SQL 命令删除数据库:

在 SQL 中,使用 DROP DATABASE 语句来删除数据库。以下是一个示例:

DROP DATABASE pgtest;

这将删除名为 “pgtest” 的数据库。为确保谨慎操作,建议在删除之前先对将要删除的数据库进行备份操作,因为删除数据库将永久丢失数据库中的所有数据。

无论您使用哪种方法,都需要适当的权限来执行删除操作。为保护数据安全或防止意外丢失数据,实际工作中,只有超级用户或具有数据库删除权限的用户,比如数据库管理员(DBA)才能执行此操作。

总之,您可以使用 pgAdmin 4 进行可视化删除数据库,也可以使用 SQL 命令来删除数据库,具体取决于您的需求和偏好。