5、使用 pgAdmin4 图形化创建和管理 PostgreSQL 数据库

通过上几篇文章我们讲解了如何安装 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
重新加载 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 = postgresENCODING = '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 命令来删除数据库,具体取决于您的需求和偏好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/70938.shtml

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

相关文章

Protobuf原理与序列化

本文目录 1. Protobuf介绍2. Protobuf的优势3. 编写Protobuf头部全局定义消息结构具体定义字段类型定义标签号Base128编码 4. TLVProtobuf的TLV编码如何通过Varint表示300? 5. 编译Protobuf6. 构造消息对象 前言:之前写项目的时候只是简单用了下Protobuf…

DeepSeek:面向效率与垂直领域的下一代大语言模型技术解析

本文将深入剖析DeepSeek模型的核心算法架构,揭示其在神经网络技术上的突破性创新,并与主流大模型进行全方位技术对比。文章涵盖模型设计理念、训练范式优化、应用场景差异等关键维度,为读者呈现大语言模型领域的最新发展图景。 一、DeepSeek…

数据安全_笔记系列09_人工智能(AI)与机器学习(ML)在数据安全中的深度应用

数据安全_笔记系列09_人工智能(AI)与机器学习(ML)在数据安全中的深度应用 人工智能与机器学习技术通过自动化、智能化的数据分析,显著提升了数据分类、威胁检测的精度与效率,尤其在处理非结构化数据、复杂…

【Python 语法】Python 数据结构

线性结构(Linear Structures)1. 顺序存储列表(List)元组(Tuple)字符串(String) 2. 线性存储栈(Stack)队列(Queue)双端队列&#xff08…

docker本地镜像源搭建

最近Deepseek大火后,接到任务就是帮客户装Dify,每次都头大,因为docker源不能用,实在没办法,只好自己搭要给本地源。话不多说具体如下: 1、更改docker的配置文件,添加自己的私库地址&#xff0c…

Ae 效果详解:粒子运动场

Ae菜单:效果/模拟/粒子运动场 Simulation/Particle Playground 粒子运动场 Particle Playground效果可以用于创建和控制粒子系统,模拟各种自然现象,如烟雾、火焰、雨水或雪等。通过调整粒子的发射点、速度、方向和其他属性,可以精…

CSS 对齐:深入理解与技巧实践

CSS 对齐:深入理解与技巧实践 引言 在网页设计中,元素的对齐是至关重要的。一个页面中元素的对齐方式直接影响到页面的美观度和用户体验。CSS 提供了丰富的对齐属性,使得开发者可以轻松实现各种对齐效果。本文将深入探讨 CSS 对齐的原理、方法和技巧,帮助开发者更好地掌握…

汽车无钥匙进入一键启动操作正确步骤

汽车智能无钥匙进入和一键启动的技术在近年来比较成熟,不同车型的操作步骤可能略有不同,但基本的流程应该是通用的,不会因为时间变化而有大的改变。 移动管家汽车一键启动无钥匙进入系统通常是通过携带钥匙靠近车辆,然后触摸门把…

Android之APP更新(通过接口更新)

文章目录 前言一、效果图二、实现步骤1.AndroidManifest权限申请2.activity实现3.有版本更新弹框UpdateappUtilDialog4.下载弹框DownloadAppUtils5.弹框背景图 总结 前言 对于做Android的朋友来说,APP更新功能再常见不过了,因为平台更新审核时间较长&am…

AI触手可及 | 基于函数计算玩转AI大模型

AI触手可及 | 基于函数计算玩转AI大模型 基于函数计算部署AI大模型的优势方案架构图像生成 - Stable Diffusion WebUI部署操作 释放资源部署总结体验反馈 在生成式AI技术加速迭代的浪潮下,百亿级参数的行业大模型正推动产业智能化范式转移。面对数字化转型竞赛&…

DDD该怎么去落地实现(4)多对多关系

多对多关系的设计实现 如题,DDD该如何落地呢?前面我通过三期的内容,讲解了DDD落地的关键在于“关系”,也就是通过前面我们对业务的理解先形成领域模型,然后将领域模型的原貌,形成程序代码中的服务、实体、…

【补阙拾遗】排序之冒泡、插入、选择排序

炉烟爇尽寒灰重,剔出真金一寸明 冒泡排序1. 轻量化情境导入 🌌2. 边界明确的目标声明 🎯3. 模块化知识呈现 🧩📊 双循环结构对比表★★★⚠️ 代码关键点注释 4. 嵌入式应用示范 🛠️5. 敏捷化巩固反馈 ✅ …

前端面试题---小程序跟vue的声明周期的区别

1. 小程序生命周期 小程序的生命周期主要分为 页面生命周期 和 应用生命周期。每个页面和应用都有自己独立的生命周期函数。 应用生命周期 小程序的应用生命周期函数与全局应用相关,通常包括以下几个钩子: onLaunch(options):应用初始化时触…

【芯片设计】NPU芯片前端设计工程师面试记录·20250227

应聘公司 某NPU/CPU方向芯片设计公司。 小声吐槽两句,前面我问了hr需不需要带简历,hr不用公司给打好了,然后我就没带空手去的。结果hr小姐姐去开会了,手机静音( Ĭ ^ Ĭ )面试官、我、另外的hr小姐姐都联系不上,结果就变成了两个面试官和我一共三个人在会议室里一人拿出…

让Word插上AI的翅膀:如何把DeepSeek装进Word

在日常办公中,微软的Word无疑是我们最常用的文字处理工具。无论是撰写报告、编辑文档,还是整理笔记,Word都能胜任。然而,随着AI技术的飞速发展,尤其是DeepSeek的出现,我们的文字编辑方式正在发生革命性的变…

点击修改按钮图片显示有问题

问题可能出在表单数据的初始化上。在 ave-form.vue 中,我们需要处理一下从后端返回的图片数据,因为它们可能是 JSON 字符串格式。 vue:src/views/tools/fake-strategy/components/ave-form.vue// ... existing code ...Watch(value)watchValue(v: any) …

vue深拷贝:1、使用JSON.parse()和JSON.stringify();2、使用Lodash库;3、使用深拷贝函数(采用递归的方式)

文章目录 引言三种方法的优缺点在Vue中,实现数组的深拷贝I JSON.stringify和 JSON.parse的小技巧深拷贝步骤缺点:案例1:向后端请求路由数据案例2: 表单数据处理时复制用户输入的数据II 使用Lodash库步骤适用于复杂数据结构和需要处理循环引用的场景III 自定义的深拷贝函数(…

线性模型 - 支持向量机

支持向量机(SVM)是一种用于分类(和回归)的监督学习算法,其主要目标是找到一个最佳决策超平面,将数据点分为不同的类别,并且使得分类边界与最近的数据点之间的间隔(margin&#xff09…

记录一次解决springboot需要重新启动项目才能在前端界面展示静态资源的问题--------使用热部署解决

问题 使用sprinbootthymeleaf&#xff0c;前后端不分离&#xff0c;一个功能是用户可以上传图片&#xff0c;之后可以在网页展示。用户上传的图片能在对应的静态资源目录中找到&#xff0c;但是在target目录没有&#xff0c;导致无法显示在前端界面 解决 配置热部署 <depe…

【Python pro】函数

1、函数的定义及调用 1.1 为什么需要函数 提高代码复用性——封装将复杂问题分而治之——模块化利于代码的维护和管理 1.1.1 顺序式 n 5 res 1 for i in range(1, n1):res * i print(res) # 输出&#xff1a;1201.1.2 抽象成函数 def factorial(n):res 1for i in range(1…