5、使用 pgAdmin4 图形化创建和管理 PostgreSQL 数据库
通过上几篇文章我们讲解了如何安装 PostgreSQL 数据库软件和 pgAdmin4 图形化管理工具。
今天我们继续学习如何通过 pgAdmin4 管理工具图形化创建和管理 PostgreSQL 数据库。
一、PostgreSQL的基本工作方式
在学习如何使用PostgreSQL创建数据库之前,我们需要了解一下它是如何工作的。理解PostgreSQL的基本运行方式可以帮助我们更好地理解后面要介绍的知识。
简单来说,PostgreSQL采用了一种客户端/服务器(C/S)模型。这意味着在PostgreSQL中,有两种主要角色:
-
服务器(也称为“后端”):这是一个程序,负责管理数据库文件,接受客户端程序的连接请求,并执行客户端指定的操作。 这个服务器程序的名字叫做“postgres”。
-
客户端(也称为“前端”)程序:这些是用户用来告诉数据库执行什么操作的工具。客户端程序可以是各种各样的,例如文本工具、图形程序、用于显示网页的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 语句:
打开 pgAdmin 4 并连接到我们的 PostgreSQL 服务器。
在左侧的“对象”资源树中,展开 “Databases”(数据库),然后右键单击 “Create”(创建)并选择 “Database”(数据库)以打开数据库创建对话框。
在对话框中,填写数据库的各种参数和设置,如名称、所有者、字符集、连接限制等。
在对话框的底部,您会看到一个选项卡或标签栏,通常称为 “SQL” 或 “SQL Pane”,在这里您可以查看即将执行的 SQL 语句。
预览 SQL 语句并确保它们与您的预期相符。我们可以在这里检查和自定义 SQL 语句。
如果一切都符合要求,点击 “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 中可视化删除数据库:
- 打开 pgAdmin 4 并连接到您的 PostgreSQL 服务器。
- 在左侧的“对象”资源树中,展开 “Databases”(数据库)。
- 找到要删除的数据库,右键单击它,然后选择 “Delete/Drop”(删除/丢弃)。
- 在确认对话框中,确认您要删除数据库并点击 “OK”。
这将使用可视化界面删除数据库。
Tips:
在 pgAdmin 4 中删除数据库时,有两个选项可供选择:删除(Drop)和删除(强制)(Drop (Cascade))。这两者之间存在重要区别:
-
删除(Drop):这是一种常规的数据库删除操作。当我们选择删除数据库时,pgAdmin 4会尝试删除数据库,但只有在没有其他数据库对象(如表、视图、函数等)依赖于要删除的数据库时才能成功删除。如果存在与该数据库相关的依赖项,删除操作将失败,并且数据库将保持不变。
-
删除(强制)(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是个多人多任务的系统,…...

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新星计划导师、全栈领域优质创作…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...

2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...
el-amap-bezier-curve运用及线弧度设置
文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...

作为点的对象CenterNet论文阅读
摘要 检测器将图像中的物体表示为轴对齐的边界框。大多数成功的目标检测方法都会枚举几乎完整的潜在目标位置列表,并对每一个位置进行分类。这种做法既浪费又低效,并且需要额外的后处理。在本文中,我们采取了不同的方法。我们将物体建模为单…...