PostgreSQL --数据库操作

一、基本操作

1、登录

#切换pg用户
su - postgres#重启服务
pg_ctl -D /usr/local/pgsql/data -l logfile restart#进入pg
psql

2、数据库操作

2.1、列出库

\l\l+select datname from database;

\l+:输出比\l多了Size,Tablespace 和 Description 列
+:扩展输出,显示更多字段或详细信息

元命令功能描述
\l列出所有数据库
\c[数据库名] 或 \connect [数据库名],用于连接数据库
\dn列出所有模式(Schema)
\db列出所有表空间
?显示 pgsql 命令的说明(元命令查询帮助)
\q退出 psql
\dt列出当前数据库的所有表
\d [TABLE]查看表结构
\du列出所有用户

        pg_database 是系统表:它存储了 PostgreSQL 实例中所有数据库的元信息(如数据库名称、所有者、编码等)。属于系统目录(System Catalog):类似 MySQL的 information schema,PostgreSQl 的系统目录更底层且直接存储在pg_catalog 模式中。
        pg_database 是系统目录表,所以无论当前连接到哪个数据库,该表始终可见系统表默认属于pg_catalog 模式,而pg_catalog 始终位于搜索路径(search path)的首位。因此,查询时无需显式指定模式(如 pg catalog.pg_database)

2.2、创建库

create database db1;

2.3、删除库

drop database db1;

2.4、切换库

\c db1;

2.5、查看库的大小

#以字节为单位返回数据库的大小
select pg_database_size('db1');

3、数据表操作

3.1、创建表

create table t2(id int);

3.2、复制表

create table t3 as table t2;

3.3、查看内容

select * from t2;
select * from t3;

3.4、删除表

drop table t2;

3.5、列出表

#列出表(显示 search_path 中模式里的表,默认 public)
\dt#列出表,视图和序列
\d#更详细的列出表,视图和序列
\d+#列出指定模式下的表(例如 public)
\dt public.*#查看当前数据库所有表(包括系统表)
\dt *.*#使用SQL方式列出当前数据库中public模式下的所有表及其详细信息
select * from pg_tables where schemaname='public';

        pg_tables 是视图:属于 pg_catalog 模式,但它是基于 pg_class 和pg_namespace的逻辑视图,并非物理表。无需切换数据库,直接查询pg catalog.pg tables 即可获取当前数据库的表信息

3.6、查看表结构

\d t1;

4、模式操作命令

        在 PostgreSQL 中,模式(Schema)是一个逻辑容器,用于组织和管理数据库对象(如表、视图、函数、索引等)。它类似于文件系统中的文件夹,帮助你在同一个数据库中分类存储不同的对象,避免命名冲突,并实现权限隔离

4.1、创建模式

#在当前所在的库创建一个模式aaa
create schema aaa;

 4.2、查看所有的模式

\dn 

4.3、SQL 查询,列出当前库中所有模式

select schema_name from information_schema.schemata;

4.4、默认模式

show search_path;

        PostgreSQl 每个数据库都有一个默认模式 public。
        如果创建对象(表、视图等)时不指定模式,默认会放在 public 模式中。
        通过 search path 参数可以设置模式的搜索优先级(类似 PATH 环境变量)

search path用于控制对象解析顺序,避免每次查询都要写模式名

$user,public 表示优先查找当前用户同名模式,再找public 模式。

4.5、删除模式

#删除空模式
drop schema aaa;

4.6、在指定模式中创建表

未指定模式时,创建的对象(表,视图等)会按 search path 顺序创建到第一个可用的模式中

#在aaa模式下创建表t2
create table aaa.t2(id int);#创建模式bbb
create schema bbb;#在bbb模式下创建表t2
create table bbb.t2(id int);两个域名空间相互隔离

4.7、切换当前模式

切换模式也就是调整 search_path 的搜索范围

#切换到单个schema
set search_path to aaa;#切换到多个schema(优先级按顺序)
set search_path to aaa,bbb;\dn

4.8、查看当前所在的模式

select current_schema;

4.9、查看搜索路径

show search_path;

4.10、PostgreSQL 的模式隔离性

        PostgreSql 的模式是数据库内的逻辑分组,不同模式可以存在同名表。这也是和 mysql 的不同之处
        跨模式査询需显式指定模式名(如 aaa.t2),或通过 search path 设置默认模式。
        无需切换数据库连接,所有操作在同一数据库内完成。

#1、创建库
create database db2;#2、创建两个模式AAA、BBB
create schema AAA;
create schema BBB;#3、创建同名表
create table AAA.t1(id int);
create table BBB.t1(id int);#4、查询内容
select * from AAA.t1;
select * from BBB.t1;#5、设置默认查询路径
set search_path to AAA;

5、备份与恢复

        PostgreSQL 数据库应当被定期地备份。虽然过程相当简单,但清晰地理解其底层技术和假设是非常重要的。

备份 PostgreSQL 数据的方法

SQL 转储
文件系统级备份
连续归档

5.1、 SQL 转储

        SQL 转储方法的思想是创建一个由 SQL, 命令组成的文件,当把这个文件回馈给服务器时,服务器将利用其中的SQL 命令重建与转储时状态一样的数据库。 PostgreSql 为此提供了工具 pg dump。

pg_dump db2>db2.bak


        正如你所见,pgdump 把结果输出到标准输出。我们后面将看到这样做有什么用处。 尽管上述命令会创建一个文本文件,pg dump 可以用其他格式创建文件以支持并行 和细粒度的对象恢复控制。
        pg dump 是一个普通的 PostgreSqL, 客户端应用(尽管是个 相当聪明的东西)这就意味着你可以在任何可以访问该数据库的远端主机上进行备份工作。但是请记住pgdump不会以任何特殊权限运行。具体说来,就是它必须要有你想备份的表的读 权限,因此为了备份整个数据库你几乎总是必须以一个数据库超级用户来运行它(如果你没有足够的特权 来备份整个数据库,你仍然可以使用诸如n schema 或-t table选项来备份该数据库中你能够 访问的部分)
        要声明pgdump连接哪个数据库服务器,使用命令行选项-h host和 -p port。默认主机是本地主机或你的 PGHOST 环境变量指定的主机。 类似地,默认端口是环境变量 PGPORT 或(如PGPORT 不存在)内建的默认值。(服务器通常有相同的默认值,所以还算方便。)
        和任何其他 PostgreSQL 客户端应用一样, pg dump 默认使用与当前操作系统用户名同名的数据库用户名进行连接。要使用其他名字,要么声明-U选项,要么设置环境变量 PGUSER。请注意 pg_dump 的连接也要通过客户认证机制。
        pg_dump 对于其他备份方法的一个重要优势是,pg dump 的输出可以很容易地在新版本的 PostgreSqL 中载入,而文件级备份和连续归档都是极度的服务器版本限定的。pg_dump 也是唯一可以将一个数据库传送到一个不同机器架构上的方法,例如从一个 32 位服务器到一个 64 位服务器.
        由 pg_dump 创建的备份在内部是一致的,也就是说,转储表现了 pg_dump开始运行时刻的数据库快照,且在 pg_dump 运行过程中发生的更新将不会被转储pg_dump 工作的时候并不阻塞其他的对数据库的操作。(但是会阻塞那些需要排它锁的操作,比如大部分形式的 ALTER TABLE)

5.2、从转储中恢复

pg_dump 生成的文本文件可以由 psql 程序读取。 从转储中恢复的常用命令是

psql db2<db2.bak



其中 dumpfile 就是 pg dump 命令的输出文件。这条命令不会创建数据库dbname,你必须在执行 psql 前自己从 template0 创建(例如,用命令 createdb-T template0 dbname)。psql 支持类似pg dump 的选项用以指定要连接的数据库服务器和要使用的用户名。参阅 psql 的手册获取更多信息。非文本文件转储可以使用 pg restore 工具来恢复。
在开始恢复之前,转储库中对象的拥有者以及在其上被授予了权限的用户必须已经存在。如果它们不存在,那么恢复过程将无法将对象创建成具有原来的所属关系以及权限(有时候这就是你所需要的,但通常不是)
默认情况下,psq1 脚本在遇到一个 SQL 错误后会继续执行。你也许希望在遇到一个 SQL, 错误后让 psql 退出,那么可以设置 ON ERROR STOP 变量来运行 psql,这将使 psq1 在遇到 SQL 错误后退出并返回状态 :

psql --set ON_ERROR_STOP=on db2<db2.bak




不管怎样,你将只能得到一个部分恢复的数据库。作为另一种选择,你可以指定让整个恢复作为一个单独的事务运行,这样恢复要么完全完成要么完全回滚这种模式可以通过向 psql传递-L 或--single-transaction 命令行选项来指定。在使用这种模式时,注意即使是很小的一个错误也会导致运行了数小时的恢复被回滚。但是,这仍然比在一个部分恢复后手工清理复杂的数据库要更好。
pg dump 和 psql 读写管道的能力使得直接从一个服务器转储一个数据库到另一个服务器成为可能,例如:
 

pg_dump -h host1 dbname | psql -h host2 dbname

注意:
pg_dump 产生的转储是相对于 template0。这意味着在 templatel 中加入的任何语言、过程等都会被 pg_dump 转储。结果是,如果在恢复时使用的是一个自定义的 template1,你必须从 template0 创建一个空的数据库,正如上面的例子所示。
一旦完成恢复,在每个数据库上运行 ANALYZE 是明智的举动,这样优化器就有有用的统计数据了。

6、远程连接

6.1、编辑配置文件

vim /usr/local/pgsql/data/postgresql.conf 
###编辑内容###
listen_addresses = '*'#重启服务
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile restart#查看监听状态
netstat -anpt | grep post

6.2、配置访问权限

配置项说明
host指定连接类型,host 表示适用于 TCP/IP 远程连接,本地连接常用 local
all(数据库)定义适用的数据库,all 表示所有数据库,也可指定特定数据库名,如 mydatabase
all(用户)定义适用的用户,all 表示所有用户,也可指定特定用户名,如 myuser
0.0.0.0/0定义适用的客户端 IP 地址或范围,0.0.0.0/0 表示无 IP 地址限制,也可指定具体 IP(如 192.168.1.100 )或范围(如 192.168.1.0/24 )
trust定义认证方法,trust 表示无需密码等认证可直接连接,仅适合本地或受信网络环境(开发 / 测试),生产环境建议用更安全的如 md5、password(新版本 PostgreSQL 建议 scram - sha - 256 )

6.2、配置用户密码

#修改用户的认证方式
alter user postgres with password '123465';#重启服务
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile restart

6.3、远程登录

psql -h 192.168.10.101 -U postgres

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

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

相关文章

树莓派超全系列教程文档--(63)rpicam-apps可用选项介绍之常用选项

rpicam-apps可用选项介绍之常用选项 rpicam-apps 选项参考常用选项helpversionlist-camerascameraconfigtimeoutpreviewfullscreenqt-previewnopreviewinfo-textwidth 和 heightviewfinder-width 和 viewfinder-heightmode打包格式详细信息解压格式详细信息 viewfinder-modelor…

AI的发展过程:深度学习中的自然语言处理(NLP);大语言模型(LLM)详解;Transformer 模型结构详解;大模型三要素:T-P-G 原则

AI的发展过程&#xff1a;深度学习中的自然语言处理&#xff08;NLP&#xff09;&#xff1b;大语言模型&#xff08;LLM&#xff09;详解&#xff1b;Transformer 模型结构详解&#xff1b;大模型三要素&#xff1a;T-P-G 原则 AI的发展过程与大模型原理详解一、AI的发展过程符…

SDXL 和 SDXL-Turbo 的区别

(1) SDXL&#xff08;Stable Diffusion XL&#xff09; 标准扩散模型&#xff0c;基于传统的多步去噪&#xff08;通常 20~50 步&#xff09;。 训练充分&#xff0c;特征更稳定&#xff0c;适合用于特征提取、方向学习&#xff08;如 LoRA、SAE&#xff09;。 计算成本高&am…

PyTorch:让深度学习像搭积木一样简单!!!

文章目录 &#x1f680; 一、 PyTorch的王炸&#xff1a;动态图 vs 静态图静态图的“痛苦回忆”&#xff08;前方高能吐槽&#xff01;&#xff09;PyTorch动态图的降维打击&#x1f525; &#x1f525; 二、 不只是灵活&#xff01;PyTorch的三大杀器1. 张量&#xff08;Tenso…

LeetCode--27.移除元素

解题思路&#xff1a; 1.获取信息&#xff1a; 给定一个数组和一个值&#xff0c;删除数组中等于这个值的值 要求是&#xff0c;返回数组中不等于这个值的数的数目 并且要求在数组上删除&#xff0c;不能使用额外辅助空间 还是给了评测标准&#xff08;你可以根据它的原理来实现…

WebRTC(二):工作机制

核心组成 GetUserMedia&#xff1a;获取本地音视频设备&#xff08;摄像头、麦克风&#xff09;数据流。RTCPeerConnection&#xff1a;实现点对点的媒体流传输和网络连接管理。RTCDataChannel&#xff1a;点对点的任意数据通道&#xff08;除音视频外传输数据&#xff09;。 …

机器学习+城市规划第十五期:时空地理加权回归(STGWR)

机器学习城市规划第十五期&#xff1a;时空地理加权回归&#xff08;STGWR&#xff09; 引言 随着城市化进程的加速&#xff0c;城市规划面临越来越多复杂的挑战。在传统的城市规划中&#xff0c;通常会考虑到地理位置的影响&#xff0c;但往往忽略了时间维度。而在现代城市的…

用虚拟机安装macos系统之后进入Boot Manager页面

安装教程&#xff1a;在VMware中安装macos系统教程 在VMware中安装macos系统时启动后进入Boot Manager界面&#xff0c;通常是由于虚拟机的固件类型设置于镜像不兼容所致。 解决办法&#xff1a;虚拟机默认使用UEFI启动模式&#xff0c;但是部分macos镜像需要切换到BIOS模式才…

基于API的Redis缓存实现

1.使用Redis API 进行业务数据缓存管理 编写一个进行业务处理的类ApiCommentService,使用Autowired注解注入Redis API中常用的RedisTemplate&#xff08;类似于Java基础API中的JdbcTemplate&#xff09;&#xff1b; 然后在数据查询、修改和删除三个方法中&#xff0c;根据业…

前沿论文汇总(机器学习/深度学习/大模型/搜广推/自然语言处理)

文章目录 1 前言2 大模型/自然语言处理2.1 FreeAL&#xff1a;在大模型时代实现无需人工的主动学习2.2 COLD&#xff1a;中文攻击性语言检测基准2.3 将词汇的对比信息融入词嵌入以实现反义词-同义词区分2.4 LogRAG&#xff1a;基于检索增强生成的半监督日志异常检测2.5 RankRAG…

PP-OCRv5 ubuntu20.04 OCR识别服务

目录 说明 使用 效果 下载 说明 PP-OCRv5 ubuntu20.04 OCR识别服务 使用 1、下载后解压 2、进入目录、运行程序 效果 1、浏览器访问 2、接口调用 下载 方式1 源码下载 方式2 通过网盘分享的文件&#xff1a;lw.PP_OCRService.tar.gz 链接: https://pan.baidu.com…

VScode打开后一直显示正在重新激活终端 问题的解决方法

一、问题 本人打开“.py”文件后&#xff0c;同时会出现以下两个问题。 1、VScode一直循环在”正在重新激活终端“ 2、日志显示intellicode报错&#xff1a; Sorry, something went wrong activating IntelliCode support for Python. Please check the “Python” and “VS I…

uniapp 实现腾讯云音视频通话功能

uniapp 深度集成腾讯云音视频通话功能实战指南 一、技术架构解析 腾讯云音视频解决方案采用IM信令控制层TRTC媒体传输层的双架构设计&#xff0c;实现核心能力解耦&#xff1a; #mermaid-svg-DKBpT4CVDkqU1IBw {font-family:"trebuchet ms",verdana,arial,sans-ser…

linux常见问题之截取文件指定行数

linux常见问题之截取文件指定行数 一、命令概述 在处理大文本文件时&#xff0c;我们打开该文件会非常不方便&#xff0c;比如服务器上的日志文件&#xff0c;于是我们常常需要提取特定的行进行分析。Linux 系统中提供了多个强大的命令行工具&#xff0c;可以帮助我们高效地完…

微前端 - Native Federation使用完整示例

这是一个极简化的 Angular 使用angular-architects/native-federation 插件的微前端示例&#xff0c;只包含一个主应用和一个远程应用。 完整示例展示 项目结构 federation-simple/ ├── host-app/ # 主应用 └── remote-app/ # 远程应用 创建远程应用 (remote…

无服务器架构的企业级应用深度解析:Serverless技术选型与成本模型

📋 目录 引言:无服务器架构的兴起无服务器架构核心概念主流Serverless平台技术对比企业级应用场景分析成本模型深度分析私有化部署与云端服务对比决策框架构建最佳实践与建议未来发展趋势结论引言:无服务器架构的兴起 在云计算快速发展的今天,无服务器架构(Serverless)…

内网有猫和无线路由器,如何做端口映射从而实现外网访问

内网猫和无线路由器端口映射配置指南 端口映射&#xff08;Port Forwarding&#xff09;是将外网请求引导到内网特定设备和端口的技术&#xff0c;常用于远程访问、搭建服务器等场景。以下是配置方法&#xff1a; 基本原理 猫&#xff08;调制解调器&#xff09;&#xff1a…

Spring boot应用监控集成

Spring Boot应用监控集成记录 背景 XScholar文献下载应用基于Spring Boot构建&#xff0c;需要接入Prometheus监控系统。应用已部署并运行在服务器上&#xff0c;需要暴露metrics端点供Prometheus采集。 初始状态 应用信息 框架: Spring Boot 2.x部署端口: 10089服务器: L…

安宝特案例丨又一落地,Vuzix AR眼镜助力亚马逊英国仓库智能化升级!

Vuzix M400智能眼镜近日落地亚马逊&#xff08;英国&#xff09;仓库&#xff0c;通过解放双手、免提操作优化物流效率。 安宝特&VuzixAR智能眼镜解决方案为亚马逊仓库提供实时决策支持、无缝对接员工-主管-企业管理系统&#xff0c;并加速了新员工培训流程&#xff0c;优…

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…