当前位置: 首页 > news >正文

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 命令来删除数据库,具体取决于您的需求和偏好。

相关文章:

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

通过上几篇文章我们讲解了如何安装 PostgreSQL 数据库软件和 pgAdmin4 图形化管理工具。 今天我们继续学习如何通过 pgAdmin4 管理工具图形化创建和管理 PostgreSQL 数据库。 一、PostgreSQL的基本工作方式 在学习如何使用PostgreSQL创建数据库之前,我们需要了解一…...

EtherCAT转Modbus-TCP协议网关与DCS连接的配置方法

远创智控YC-ECTM-TCP,自主研发的通讯网关,将为你解决以太网通讯难题。YC-ECTM-TCP是一款EtherCAT主站功能的通讯网关,能够将EtherCAT网络和Modbus-TCP网络连接起来。它可以作为EtherCAT网络中的主站使用,同时也可以作为Modbus-TCP…...

合伙企业的执行事务合伙人委派代表是什么样的存在

当合伙企业的执行事务合伙人为法人或非法人组织时,通常会委派自然人代表其执行合伙事务,特别是各类投资基金、信托、资产证券化等合伙企业类型的SPV中,由法人执行事务合伙人委派代表执行合伙企业事务比较常见,由此可能出现合伙企业…...

visual studio设置主题和背景颜色

visual studio2019默认的主题有4种,分别是浅白色、深黑色、蓝色、蓝(额外对比度),背景颜色默认是纯白色RGB(255,255,255)。字体纯白色看久了,眼睛会感到酸痛、疲劳,建议改成浅白RGB(250,250,250)、豆沙绿RGB(85,123,105)、透明蓝白…...

[JVM]问下,对象在堆上的内存分配是怎样的

Java 技术体系的自动内存管理,最根本的目标是自动化地解决两个问题:自动给对象分配内存以及自动回收分配给对象的内存 这里面最重要的就是,对象在堆上的内存分配 这篇文章来具体讲讲 堆整体上来说,主要分为 新生代 & 老年代 新生代又分为: Eden 区和 Survivor 区, Survivo…...

TCP/IP网络分层模型

TCP/IP当初的设计者真的是非常聪明,创造性地提出了“分层”的概念,把复杂的网络通信划分出多个层次,再给每一个层次分配不同的职责,层次内只专心做自己的事情就好,用“分而治之”的思想把一个“大麻烦”拆分成了数个“…...

数据结构-----红黑树的插入

目录 前言 红黑树的储存结构 一、节点旋转操作 左旋(Left Rotation) 右旋(Right Rotation) 二、插入节点 1.插入的是空树 2.插入节点的key重新重复 3.插入节点的父节点是黑色 4.插入节点的父节点是红色 4.1父节点是祖父…...

Excel大量表格选择,快速定位表格

excel有大量表格,快速定位表格方法。 在这个区域电机鼠标右键 出现表格选择。(此处方便查看15个表格),如果超过15个表格可以选择其他工资表。 选择其他工作表会弹出列表框如下图 特此记录 anlog 2023年10月12日...

力扣环形链表(1)进阶环形链表(2)及环形链表的约瑟夫问题

为了加深对环形链表的理解和掌握,这两道题是很不错的选择。 这里所说环形链表不是一个圈圈的结构,而是带环链表。 链接:环形链表(1) 注意这里链表的长度 所以要注意链表是否为空 第一种方法,应该是比较容易…...

linux文件权限与目录配置

用户与用户组 linux一般将文件可读写的身份分为三个类别:拥有者(owner)、所属群组(group)、其他人(other) 三种身份都有读、写、执行等权限 文件拥有者 linux是个多人多任务的系统&#xff0c…...

2023年10月wxid转微信号方法

在9月份tx做了一次调整,以前很多wxid转微信号的办法都失效了。 今天分析了一下微信。捣鼓了一下午。现在已经实现了wxid转微信号。不管对方是否在群里,是否是你的好友 都能转。一分钟出60条左右。 我们先创建一个文本文件,将要转换wxid 放进…...

【Spring Boot 源码学习】@Conditional 条件注解

Spring Boot 源码学习系列 Conditional 条件注解 引言往期内容主要内容1. 初识 Conditional2. Conditional 的衍生注解 总结 引言 前面的博文,Huazie 带大家从 Spring Boot 源码深入了解了自动配置类的读取和筛选的过程,然后又详解了OnClassCondition、…...

jupyter_快速开始

文章目录 使用 Anaconda 启动 jupyter-lab纯 python 环境使用 jupyter-notebook纯 python 环境使用 jupyter-labjupyter-lab 配置文件相关jupyter-notebook 配置文件相关jupyter-lab 与 jupyter-notebook 的关系与区别 使用 Anaconda 启动 jupyter-lab 启动一个cmd 命令行&…...

英特尔 SGX 技术概述

目录 介绍概述指示结构Memory安全区页面缓存Enclave Page Cache (EPC)安全区页面缓存映射Enclave Page Cache Map (EPCM) Memory ManagementStructures页面信息Page Information (PAGEINFO)安全信息Security Information (SECINFO)分页加密元数据Paging …...

SpringBoot核心功能与基础配置

SpringBoot简介 原先的Spring程序缺点,包括依赖设置繁琐,每项jar的引用都需要自己撰写。并且配置繁琐,配置文件中也需要自己写加载bean等。由此针对原始的Spring程序,Pivotal团队提供的全新框架——SpringBoot,其设计…...

vue3后台管理框架之Mock开发

前言 在前后端对接中,有时后端的接口数据没有 那么快能给出,因此我们可以通过mock模拟自己的请求数据,在后端接口没有给出的同时,先使用mock请求的数据完成前端相关的逻辑 官方文档:vite-plugin-mock vite 的数据模…...

03_51单片机点亮LED灯

51单片机是一种非常常见的单片机型号,广泛应用于各种嵌入式系统和电子设备中。LED灯是一种常见的输出设备,用于显示信息或指示状态。下面是关于51单片机控制LED灯的介绍: 1. 连接LED灯:将LED的正极连接到51单片机的一个I/O引脚&a…...

【前端设计模式】之备忘录模式

备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下捕获和恢复对象的内部状态。在前端开发中,备忘录模式可以用于保存和恢复用户界面的状态,以及实现撤销和重做功能。 备忘录模式特性: 封装了对象的状态:备…...

复习Day15:栈与队列part02:20. 有效的括号、1047.删除字符串中所有相邻重复项

我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用CLion了,使用leetcode自带的IDE模拟面试环境。 历史博客链接: http…...

基于Java的宠物商城管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

Python的GIL存在的情况下,是否还有必要添加线程锁。

GIL锁的产生: 为了保证在单线程情况下,Python的正常执行和效率,GIL锁产生了,由于只有一把锁就不会产生死锁也不用切换。 对于Python语言而言,只有CPython解释器(用C语言编写的Python解释库)存在…...

基于下垂控制的孤岛双机并联逆变器环流抑制MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 在实际应用中逆变器都是并联运行的,但是逆变器的并联运行也存在不少问题,由于线路阻抗差异、各个逆变器输出端瞬时电压幅值不同等,都容易导致环流的出现。环流会导致逆变器损耗增加,从而影响微电网的输出效率…...

spring事务面试题

1.Spring 事务实现方式有哪些? 事务就是一系列的操作原子操作,Spring事务机制主要 包括声明式事务和编程式事务。 编程式事务:通过编程的方式管理事务,自己设置未提交模式,自己获取连接,自己预编译,自己回…...

C++标准库算法整理

目录 1、数值操作 1.1、std::accumulate 1.2、std::inner_product 1.3、std::partial_sum 1.4、std::exclusive_scan 1.5、std::inclusive_scan 1.6、std::reduce 2、相邻元素 2.1、std::adjacent_difference 2.2、std::adjacent_find 2.3、std::unique 2.4、std::u…...

【Codeforces】Codeforces Round 903 (Div. 3)【待补】

Dashboard - Codeforces Round 903 (Div. 3) - Codeforces Problem - C - Codeforces Problem - D - Codeforces...

workerman 运行时报错 Call to undefined function posix_getpid()

使用 验证php扩展是否齐全 curl -Ss https://www.workerman.net/check | php缺少posix 下载 在 Linux 系统上,可以使用包管理器来安装 php-posix 扩展,例如 Ubuntu 系统可以通过以下命令进行安装: sudo apt-get install php-posix如果你使用…...

【探讨C++中的临时对象:一时之物还是永恒之道?】

在C编程中,临时对象是一个经常引起讨论的话题。它们是什么,为什么它们存在,以及如何正确使用它们?本文将深入探讨C中的临时对象,帮助您理解它们的含义和用途。 什么是临时对象? 临时对象(Temp…...

二叉树相关算法

1、二叉树基本操作 二叉树的定义就不在这里多说了,下面这个图就是一个简单的二叉树: 二叉树的三种遍历方式: 前序遍历:头左右,也就是先头后左再右:1245367 public static void prePrint(BinaryTreeNode …...

Vue_Bug npm install报错 code:128

Bug描述: npm install报错 code:128 npm ERR! Warning: Permanently added ‘github.com’ (ED25519) to the list of known hosts. npm ERR! gitgithub.com: Permission denied (publickey). npm ERR! fatal: Could not read from remote repository. n…...

【Unity ShaderGraph】| 如何快速制作一个 马赛克效果 实战

前言 【Unity ShaderGraph】| 如何快速制作一个 马赛克效果 实战一、效果展示二、马赛克效果四、应用实例 前言 本文将使用Unity 的ShaderGraph制作一个马赛克的效果,可以直接拿到项目中使用。对ShaderGraph还不了解的小伙伴可以参考这篇文章:【Unity S…...