PGSQL常用操作

article/2025/11/6 20:06:10

0. 启动pgsl数据库

pg_ctl -D /xx/pgdata  start

回到顶部

1. 查看pgsl版本

pg_ctl --version

回到顶部

1. 命令行登录数据库

1

psql -U username -d dbname -h hostip -p port

回到顶部

2. 列出所有数据库

\l 

回到顶部

3. 切换数据库

1

\c dbname

回到顶部

4. 列出当前数据库的所有表

\d 

5. 查看指定表的所有字段

1

\d  tablename

回到顶部

6. 查看指定表的基本情况

1

\d+  tablename

回到顶部

7. 退出操作

1

q

回到顶部

8. 新建表

例1(主键)

复制代码

create table TESTCASE(
id INTEGER, 
task_class INTEGER,
age TEXT,
PRIMARY KEY(id, task_class)
);

复制代码

例2(自增SERIAL)

create table CREATETASK_CHKID_N( 
id SERIAL PRIMARY KEY, 
chk_id TEXT, 
n INTEGER
);

其中SERIAL代表自增,默认从1开始增加,每次自增1。

回到顶部

9. 删除表

1

drop table REL_CROSS_NODE;

回到顶部

10. 清空表

delete from [表名]

or

TRUNCATE TABLE  [表名]

区别:Truncate table 表名 (注:不带where语句) 速度快,而且效率高。

因为DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放

回到顶部

11. 添加字段

1

alter table [表名] add column [字段名] [类型];

回到顶部

12. 更改字段

alter table [表名] rename column [旧字段名] to [新字段名];例:把表table_ex字段col_1限制非空去掉:ALTER TABLE table_eg ALTER col_1 drop not NULL

12.1 更改字段属性,含空格

如果把字段colname把属性Text转化为int,原来text里面存在空啥的,可以

ALTER TABLE tablename ALTER COLUMN colname TYPE int USING (trim(colname)::integer);

12.2 更改字段由int4-->int8

alter table test_data alter column task_id type bigint using task_id::bigint

回到顶部

13. 删除字段

1

alter table [表名] drop column [字段名];

回到顶部

14. 表中插入一行数据

1

insert into [表名] (字段1,字段2) values (值1,值2);

例如:    

1

insert into assist_info (id, maat_id, block_type) values ('F006''F7775', 1)  

  • 如果表中字段有大写的字段,则需要对应的加上双引号。例:insert into test (no, "Name") values ('123', 'jihite');
  • 值用单引号引起来(''),不能用双引号("")

回到顶部

15. 表中删除一行数据

1

delete from [表名] where [该行特征];

回到顶部

16. 修改表中数据

1

update [表名] set [目标字段名]=[目标值] where [该行特征]

回到顶部

17. 删除表

1

drop table [表名];

回到顶部

18. 退出postgreSql

\q

回到顶部

19. 两个查询结果做差 except

1

2

3

4

5

(select node_id from node where node_id=1 or node_id=2) except (select node_id from node where node_id=1);

 node_id

---------

       2

(1 row)

回到顶部

20. 复制表

CREATE TABLE test_a_copy AS SELECT * FROM test_a;

回到顶部

21.命令导入sql数据文件

psql -h localhost  -d databaseName  -U username -f  filename

回到顶部

22. 查询结果存储到输出文件

格式:

\o file_path

这样就会把查询结果存储到输出文件中。例

postgres=> \o /home/jihite/data/iu_data;
postgres=> select test_id from cdb_all_iu_data limit 10;
postgres=> select test_id from cdb_all_iu_data limit 5;

结果

复制代码

test_id
--------------2143215321442156214521542146215721472155
(10 rows)test_id
--------------21432153214421562145
(5 rows)

复制代码

回到顶部

23. 数据库的备份&恢复

导出到线下文件

pg_dump --host hostname --port port --username username -t tablename -d dbname >/home/jihite/table.sql 

把线下文件导入到数据库

psql -h 10.125.7.68 -p 5432 -d postgres -U postgres -W postgres -f 2.sql

回到顶部

24. \x

复制代码

postgres=> \x
Expanded display is on.
postgres=> select *  from cdb_chk_items where chk_id = 'R000000335';
-[ RECORD 1 ]+------------------------------------------------------------------------------------------------
chk_id       | R000000335
chk_desc     | 道路属性与道路属性相关检查
chk_info     | {"FIELDS": {"TRAFFIC_SIGN": ["TYPE", "GEOM"], "ROAD_LINK": ["ROAD_CLASS", "FORM_WAY", "GEOM"]}}
err_desc     | {"ERR2": "roadclass取值错误", "ERR1": "formway取值错误"}
chk_level    | 1
is_opened    | 1
module_name  | TRAFFIC_SIGN
invalid_flag | 1
rel_mode     | MAIN_LAYER:TRAFFIC_SIGN:         TRAFFIC_SIGN|A,M|DIRECT:         ROAD_LINK|A,M,D|ATTR_REL

复制代码

回到顶部

25. 从表A中把符合条件的记录拷贝到表B

insert into A select * from B where id  in ('a', 'b', 'c');

回到顶部

26 建立索引

单字段索引

CREATE INDEX index_name ON table_name (field1);

多字段索引

CREATE INDEX index_name ON table_name (field1,field2);

查看所有表的索引使用情况

复制代码

select relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch 
from pg_stat_user_indexes 
order by idx_scan asc, idx_tup_read asc, idx_tup_fetch asc;

复制代码

查看某个表索引的使用情况

复制代码

select relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch 
from pg_stat_user_indexes 
whererelname = table_name 
order by idx_scan asc, idx_tup_read asc, idx_tup_fetch asc;

复制代码

回到顶部

27. 超找数据库的连接信息

select * from pg_stat_activity

包含:客户端user、ip、执行语句,状态、时间


http://chatgpt.dhexx.cn/article/NJ8fBnUy.shtml

相关文章

PL/pgSQL

1.简介 L/pgSQL是一种用于PostgreSQL数据库系统的可载入的过程语言。 可以被用来创建函数和触发器过程对SQL语言增加控制结构可以执行复杂计算继承所有用户定义类型、函数和操作符可以被定义为受服务器信任便于使用 [1]使用PL/pgSQL的优点 SQL 是一种查询语言,可…

Windows 10 安装配置连接PostgreSQL教程

Windows 10 安装配置连接PostgreSQL教程 1.1 PostgreSQL 下载1.2 配置环境变量1.3 PostgreSQL 初始化1.4 创建postgres用户1.5 启动postgresql1.6 客户端连接测试1.6.1 SQL Shell (psql)命令行连接测试1.6.2 客户端 pdAdmin 4 连接测试1.6.3 客户端Navicat Permium 连接测试 1.…

Spring原理-IOC控制反转

spring相关文章 Spring原理-IOC控制反转 Spring框架七大核心模块 Spring Beans原理–bean生命周期 一、Spring概述 1、 定义 Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发复杂性。它是一个分层的JavaSE/Java…

依赖倒置和控制反转

依赖倒置 定义 依赖反转原则(Dependency inversion principle,DIP)是指一种特定的解耦形式,使得高层次的类不依赖于低层次的类的实现细节,依赖关系被颠倒(反转),从而使得低层次类依…

Inversion of Control (IOC)控制反转 有什么好处

要了解控制反转( Inversion of Control ), 我觉得有必要先了解软件设计的一个重要思想:依赖倒置原则(Dependency Inversion Principle )。 什么是依赖倒置原则?假设我们设计一辆汽车:先设计轮子,然后根据…

Spring学习:IOC控制反转

一、Spring概述: Spring是一个开源框架,其存在的根本使命就是简化JAVA开发。为了降低JAVA开发的复杂性,Spring采取了以下四种关键策略: 基于POJO的最轻量级和最小侵入性编程;通过依赖注入和面向接口实现松耦合&#x…

控制反转(IOC)简介

IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”,还有些书籍翻译成为“控制反向”或者“控制倒置”。 1996年,Michael Mattson在一篇有关探讨面向对象框架的文章中,首先提出了IOC 这个概念。对于面向对象设计及编程…

IoC 控制反转理解

控制反转——Inversion of Control,缩写为IoC ,是一个重要的面向对象编程的法则,说到底它是一种设计思想,其可以降低程序中的耦合度,在以前,我们通过new进行创建对象,这是程序主动去创建依赖对象…

IOC控制反转理解

1. IOC基础 IOC:全称Inversion Of Control,中文翻译是控制反转的意思。初学Spring绕不过去的一个弯,需要好好理解IOC的思想。网上看了很多博客,也看了很多网课,但是还是云里云雾。终于看到一个容易理解的例子&#xf…

C# IoC控制反转学习笔记

一、什么是IOC IoC-Invertion of Control,即控制反转,是一种程序设计思想。 先初步了解几个概念: 依赖(Dependency):就是有联系,表示一个类依赖于另一个类。 依赖倒置原则(DIP&a…

spring -- 控制反转IOC

1.IOC的理论背景 在面向对象设计的软件系统中,它的底层都是由N个对象构成的,各个对象之间通过相互合作,最终实现系统地业务逻辑。 图1 软件系统中耦合的对象 齿轮组中齿轮之间的啮合关系,与软件系统中对象之间的耦合关系非常相似。对象之间…

Java:控制反转

Java中自带的函数或对象都是编写软件的时候写的,当它需要调用你自己编写的数据的时候,它如何又不知道你定义的类(对象)是什么,里面有什么成员,它无法调用你的代码,这个时候就需要用到控制反转了…

IoC控制反转

IoC控制反转 一、IoC概念和原理1. 什么是IoC2. IoC底层原理 二、IoC过程1. xml配置文件,配置创建的对象2. 有UserService和UserDao类,创建工厂类 三、IoC接口1. IoC思想基于IoC容器完成,IoC容器底层就是Bean工厂2. Spring提供实现IoC容器的两…

IOC 控制反转

文章目录 一.IOC概念二. IOC的体现三.ioc的技术实现三.基于XML的DI1.引用类型属性自动注入 四.包含关系的配置文件五.基于注解的DI五.简单类型的属性赋值1.vaule(简单类型的属性赋值)2.自动注入 一.IOC概念 IOC:控制反转,是一个理论&#xf…

浅谈控制反转(IoC)

Inversion of Control 什么是控制反转? 程序的流程控制权相对于传统的面向过程编程而言发生了反转。下面是维基百科的描述 In software engineering, inversion of control (IoC) is a programming principle. IoC inverts the flow of control as compared to tr…

Spring---浅谈IOC

概念 IOC(Inversion of Control 控制反转)是spring的核心,贯穿始终。所谓IOC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。 传统开发模式与IOC开发模式的对比 传统开发模式:对…

控制反转-Inversion Of Control

一、控制反转 控制反转(Inversion of Control,英文缩写为IoC)把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专业术语。它包括依赖注入(Dependency Injection,简称DI&#xff…

微信小程序hamburgers汉堡包css动画

微信小程序hamburgers汉堡包css动画 源码在我的csdn里下载 https://download.csdn.net/download/ozhy111/12201373

汉堡式折叠html,美味的CSS动画汉堡包:hamburgers_html/css_WEB-ITnose

s if you insist, but they’re not accessible as a menu button. Append the class name of the type of hamburger you’re craving: Here’s the list of hamburger-type classes you can choose from: hamburger--arrowhamburger--arrow-rhamburger--arrowalthamburger--a…

LSB 题解

今天来刷一道Misc的题目,LSB原理进行图片隐写 LSB原理 LSB是一种利用人类视觉的局限性设计的幻术 PNG和BMP图片中的图像像素一般是由RGB(RED红 GREEN绿 BLUE蓝)三原色组成 记住,JPG图片是不适合使用LSB隐写的,JPG图片对像数进行了有损压缩…