PostgreSQL在Linux环境下的常用命令总结
标题
- 登录PgSQL
- 库表基本操作命令
- 新建库表
- 修改库表
- 修改数据库名称:
- 修改表名称
- 修改表字段信息
- 删除库表
- pgsql删除正在使用的数据库
须知:
以下所有命令我都在Linux环境中执行验证过,大家放心食用,其中的实际名称换成自己的实际名称即可。而且这块如果你不是运维人员的话,你只需要简单的会在Linux下查一下数据就行了。其他的操作都在客户端工具操作比较简单。了解一下即可
关于客户端的操作命令可以点我查看
登录PgSQL
基本连接方式
psql -U <用户名> -d <数据库名>
:这是连接到指定数据库的常用命令。
例如,psql -U postgres -d mydb
表示以 postgres 用户身份连接到 mydb 数据库。
如果省略 -d 选项和数据库名,将连接到用户的默认数据库(postgres) 。
库表基本操作命令
- 查看数据库版本:
select version();
- #查看有哪些用户:
\dg
- 列出所有数据库:
\l
- 切换数据库:
\c mydb
- 列出当前数据库的所有表:
\dt
- 列出表的结构:
\d 表名
- 列出所有角色:
\du
- 修改用户名密码:postgres=#
alter user postgres with password 'postgres';
-- 创建新数据库
CREATE DATABASE 数据库名;-- 删除数据库
DROP DATABASE 数据库名;-- 创建新表
CREATE TABLE 表名 (列1 数据类型,列2 数据类型,...
);-- 删除表
DROP TABLE 表名;-- 插入数据
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);-- 更新数据
UPDATE 表名 SET 列1 = 值1, 列2 = 值2 WHERE 条件;-- 删除数据
DELETE FROM 表名 WHERE 条件;-- 查询数据
SELECT * FROM 表名;-- 创建新用户
CREATE USER 用户名 WITH PASSWORD '密码';-- 修改用户密码
ALTER USER 用户名 WITH PASSWORD '新密码';-- 为用户授权
GRANT 权限 TO 用户名;-- 撤销权限
REVOKE 权限 FROM 用户名;
新建库表
以下是在 PostgreSQL 中创建数据库 mydb 以及在其中创建 student 表和 teacher 表,并为每个表添加一些测试用字段的示例代码:
-- 创建数据库mydb
CREATE DATABASE mydb;-- 连接到新创建的数据库mydb
\c mydb-- 创建student表
CREATE TABLE student (student_id SERIAL PRIMARY KEY,student_name VARCHAR(50),student_age INTEGER,student_gender CHAR(1),major VARCHAR(100)
);-- 创建teacher表
CREATE TABLE teacher (teacher_id SERIAL PRIMARY KEY,teacher_name VARCHAR(50),teacher_age INTEGER,subject VARCHAR(100),department VARCHAR(100)
);-- 向student表插入第一条数据
INSERT INTO student (student_name, student_age, student_gender, major)
VALUES ('张三', 20, 'M', '计算机科学与技术');-- 向student表插入第二条数据
INSERT INTO student (student_name, student_age, student_gender, major)
VALUES ('李四', 22, 'F', '软件工程');-- 向teacher表插入第一条数据
INSERT INTO teacher (teacher_name, teacher_age, subject, department)
VALUES ('王老师', 35, '数据库原理', '计算机系');-- 向teacher表插入第二条数据
INSERT INTO teacher (teacher_name, teacher_age, subject, department)
VALUES ('李老师', 40, '操作系统', '计算机系');
修改库表
修改数据库名称:
一般来说没这种需求,不过测试玩玩的话还是整理一下吧
方法一
备份sql(见下面说明)
切换到别的数据库下删除:DROP DATABASE mydb;
CREATE DATABASE mybdtest;
执行备份SQL进行回复(见下面说明)
备份数据库(使用pg_dump)
在 Linux 下,备份mydb数据库可以使用pg_dump命令。假设你的 PostgreSQL 数据库用户名是postgres,密码是your_password(请替换为实际密码),主机地址是localhost,数据库名是mydb,你可以使用以下命令将数据库备份为一个.sql文件:
pg_dump -U postgres -h localhost -Fc mydb > mydb_backup.dump
命令解释:
-U postgres
:指定以postgres用户身份进行备份操作。
-h localhost
:指定数据库主机地址为本地(localhost),如果数据库在远程服务器,需要替换为实际的远程主机地址。
-Fc
:指定输出格式为自定义(custom)二进制格式,这种格式在恢复数据时比较高效。如果想要纯文本格式的备份文件,可以使用-Fp(plain text),不过恢复时可能会稍微复杂一点。
mydb
:要备份的数据库名称。
> mydb_backup.dump
:将备份内容输出到名为mydb_backup.dump的文件中,你可以根据自己的喜好更改文件名。
恢复数据库(使用pg_restore)
在删除mydb并创建mybdtest后,使用pg_restore命令来恢复备份的数据到mybdtest数据库。假设你的用户名、主机地址等信息不变,执行以下命令:
pg_restore -U postgres -h localhost -d mybdtest mydb_backup.dump
命令解释:
-U postgres:指定以postgres用户身份进行恢复操作。
-h localhost:指定数据库主机地址为本地。
-d mybdtest:指定恢复数据的目标数据库为mybdtest。
mydb_backup.dump:要恢复的备份文件的名称,需要与备份时的文件名一致。
需要注意的是,在执行这些命令时,可能需要确保postgres用户有足够的权限进行备份和恢复操作。如果数据库设置了密码,可能还需要在命令中正确提供密码,或者设置PGPASSWORD环境变量来存储密码,这样就不用每次在命令中输入密码了。例如,可以在执行命令前设置环境变量:export PGPASSWORD=your_password
方法二
使用 ALTER DATABASE(在某些特定版本和场景下可能有限制)
在一些较新的 PostgreSQL 版本中,理论上可以尝试使用 ALTER DATABASE 语句来更改数据库名称,但这种方法可能会受到一些限制,比如数据库的使用状态、权限等因素可能会影响其成功与否。
假设你在 psql 命令行环境下并且有足够的权限,你可以尝试以下操作:
ALTER DATABASE mydb RENAME TO mybdtest;
如果此操作成功,那么数据库名称就直接被更改为 mybdtest 了。但如果遇到错误,可能就需要按照方法一的步骤来完成更名操作啦。
需要注意的是,无论使用哪种方法,在进行这些操作之前,都建议你先对重要数据进行备份,以防出现意外情况导致数据丢失。
修改表名称
要将表名 student 修改为 student_info,可以使用 ALTER TABLE 语句来实现。以下是具体的操作步骤:
-- 将表student修改为student_info
ALTER TABLE student RENAME TO student_info;
修改表字段信息
修改表字段名称、字段类型、字段注释
这块我有一篇博客根据各种情况都有对应的命令说明可以点我去看
一、修改列名
将 student_id 修改为 stu_id:
ALTER TABLE student_info RENAME COLUMN student_id TO stu_id;二、修改数据类型
将 student_name 的数据类型从 character varying(50) 修改为 character(20):
ALTER TABLE student_info ALTER COLUMN student_name TYPE character(20);三、修改数据类型及注释
先将 student_gender 的数据类型从 character(1) 修改为 integer:
# ALTER TABLE student_info ALTER COLUMN student_gender TYPE integer;
如果执行上面sql一定会报错的,因为上面这种情况只适合修改前后数据类型一致的情况,需要执行下面sql,
但是不保证一定成功,除非你存储的数据能成功转换为目标类型,像我实践中就报错,所以要保证数据的合理性ALTER TABLE student_info
ALTER COLUMN student_gender TYPE integer
USING CAST(student_gender AS integer);然后为 student_age 添加注释 “学生年龄”。在 PostgreSQL 中,添加列注释可以使用 COMMENT ON COLUMN 语句:
COMMENT ON COLUMN student_info.student_age IS '学生年龄';完成上述操作后,你可以再次使用 \d student_info 命令来查看表结构的变化情况,此时表结构应该符合你修改后的要求。
\d student_info
关于看不见添加的注释问题原因分析:
\d student_info 命令来查看表结构。这个命令在某些数据库客户端中可能不会显示列注释。
你可以尝试使用以下查询语句来查看带有注释的表结构:
SELECT column_name, data_type, column_default, is_nullable, col_description((table_schema || '.' || table_name)::regclass,ordinal_position) AS comment
FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = 'student_info';
这个查询会从 information_schema.columns 中获取列的详细信息,包括注释。
数据库配置或客户端问题
有些数据库客户端可能不支持显示注释,或者需要特定的设置才能显示注释。你可以检查一下你使用的数据库客户端的设置,看是否有相关选项可以启用注释显示。
注释未正确添加
虽然从截图中看到了添加注释的操作,但有可能由于某种原因(例如权限问题或数据库错误)导致注释没有成功添加。你可以尝试重新添加注释,然后使用上述查询语句来验证注释是否添加成功。
删除库表
一般来说直接 drop database mydb;
就可以删除掉数据库了,下面我们说下相关注意事项
执行这条命令之前要确保你当前没有连接到 mydb 数据库哦,不然也会报错无法删除的。
一般可以先通过 \c
命令切换到其他数据库(比如 postgres),然后再执行删除 mydb 的操作。
例如:
\c postgres
drop database mydb;
当前还有其他用户(或者其他会话)正在连接并使用 mydb 数据库时,是无法直接删除它的。
你可以通过以下几种方法来解决这个问题并成功删除 mydb 数据库:
方法一:终止其他正在使用的会话
首先,你需要查看当前正在使用 mydb 数据库的会话信息。可以使用以下查询语句(在 postgres 数据库下执行):
SELECT pid, usename, datname, application_name, client_addr, client_hostname, client_port FROM pg_stat_activity WHERE datname ='mydb';
这条查询语句会列出正在使用 mydb 数据库的会话的进程 ID(pid)、用户名(usename)、数据库名(datname)、应用程序名(application_name)、客户端地址(client_addr)、客户端主机名(client_hostname)以及客户端端口(client_port)等信息。
找到对应的会话进程 ID 后,你可以使用以下命令来终止该会话(需要有足够的权限,比如超级用户权限):
SELECT pg_terminate_backend(pid);
这里的 pid 就是你在上一步查询中找到的那个正在使用 mydb 数据库的会话的进程 ID。
终止所有正在使用 mydb 数据库的会话后,再尝试执行删除数据库的命令:
drop database mydb;
方法二:等待其他会话结束自行使用
如果你确定其他正在使用 mydb 数据库的会话会在不久后自行结束,你可以稍作等待,然后再重新尝试执行删除数据库的命令:drop database mydb;
不过这种方法可能不太确定需要等待多长时间,而且如果其他会话一直不结束,就无法顺利删除数据库啦。
pgsql删除正在使用的数据库
这个了解一下就行,也就测试阶段使用
-- 设置数据库禁止连接
UPDATE pg_database SET datallowconn = 'false' WHERE datname = 'db_name';
-- 中断当前所有连接会话
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'db_name';
-- 删除数据库
drop database db_name;
相关文章:
PostgreSQL在Linux环境下的常用命令总结
标题 登录PgSQL库表基本操作命令新建库表修改库表修改数据库名称:修改表名称修改表字段信息 删除库表pgsql删除正在使用的数据库 须知: 以下所有命令我都在Linux环境中执行验证过,大家放心食用,其中的实际名称换成自己的实际名称即…...
Unity shaderlab 实现LineSDF
实现效果: 实现代码: Shader "Custom/LineSDF" {Properties{}SubShader{Tags { "RenderType""Opaque" }Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{floa…...
Ubuntu中的apt update 和 apt upgrade
apt update 和 apt upgrade 是 Debian 及其衍生发行版(如 Ubuntu)中常用的两个 APT 包管理命令,它们各自执行不同的任务: apt update: 这个命令用于更新本地软件包列表。当你运行 apt update 时,APT 会从配置的源&…...
Android 中 Swipe、Scroll 和 Fling 的区别
Android 中 Swipe、Scroll 和 Fling 的区别 Swipe(滑动)Scroll(滚动)Fling(甩动)三者之间的区别代码示例 (Fling)总结 在 Android 应用中,Swipe、Scroll 和 Fling 都是用户在触摸屏幕上进行的滑…...
linux基础2
声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…...
如何通过智能生成PPT,让演示文稿更高效、更精彩?
在快节奏的工作和生活中,我们总是追求更高效、更精准的解决方案。而在准备演示文稿时,PPT的制作往往成为许多人头疼的问题。如何让这项工作变得轻松且富有创意?答案或许就在于“AI生成PPT”这一智能工具的广泛应用。我们就来聊聊如何通过这些…...
执法记录仪数据自动备份光盘刻录归档系统
派美雅按需研发的执法记录仪数据自动备份光盘刻录归档系统,为用户提供数据自动上传到刻录服务端、数据上传后自动归类,全自动对刻录端视频文件大小进行实时监测,满盘触发刻录,无需人工干预。告别传统刻录存在的痛点,实…...
启动SpringBoot
前言:大家好我是小帅,今天我们来学习SpringBoot 文章目录 1. 环境准备2. Maven2.1 什么是Maven2.2 创建⼀个Maven项⽬2.3 依赖管理2.3.1 依赖配置2.3.2 依赖传递2.3.4 依赖排除2.3.5 Maven Help插件(plugin) 2.4 Maven 仓库2.6 中…...
重定向操作和不同脚本的互相调用
文章目录 前言重定向操作和不同脚本的互相调用 前言 声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 重定向操作和不同脚本的互相调用 1.不同脚本的互相…...
51单片机教程(九)- 数码管的动态显示
1、项目分析 通过演示数码管动态显示的操作过程。 2、技术准备 1、 数码管动态显示 4个1位数码管和单片机如何连接 a、静态显示的连接方式 优点:不需要动态刷新;缺点:占用IO口线多。 b、动态显示的连接方式 连接:所有位数码…...
golang支持线程安全和自动过期map
在 Golang 中,原生的 map 类型并不支持并发安全,也没有内置的键过期机制。不过,有一些社区提供的库和方案可以满足这两个需求:线程安全和键过期。 1. 使用 sync.Map(线程安全,但不支持过期) Go…...
机器学习之RLHF(人类反馈强化学习)
RLHF(Reinforcement Learning with Human Feedback,基于人类反馈的强化学习) 是一种结合人类反馈和强化学习(RL)技术的算法,旨在通过人类的评价和偏好优化智能体的行为,使其更符合人类期望。这种方法近年来在大规模语言模型(如 OpenAI 的 GPT 系列)训练中取得了显著成…...
泷羽sec---shell作业
作业一 写计算器 使用bc命令 需要进行安装bc 代码如下: #!/bin/bash echo "-----------------------------------" echo "输入 f 退出" echo "可计算小数和整数" echo "用法如:1.12.2" echo "------…...
华为海思2025届校招笔试面试经验分享
目前如果秋招还没有offer的同学,可以赶紧投递下面这些公司,都在补招。争取大家年前就把后端offer拿下。如果大家在准备秋招补录取过程中有任何问题,都可以私信小编,免费提供帮助。如果还有部分准备备战春招的同学,也可…...
摆脱复杂配置!使用MusicGPT部署你的私人AI音乐生成环境
文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 今天给大家分享一个超酷的技能:如何在你的Windows电脑上快速部署一款文字生成音乐的AI创作服务——MusicGPT,并且通过cpolar内网穿透工具&…...
嵌入式Linux中的GPIO编程
GPIO(General Purpose Input Output)是嵌入式系统中非常常见的一种硬件资源,它允许开发者直接控制微处理器或微控制器的引脚。通过设置这些引脚的状态,可以实现对硬件设备的控制,如LED灯的开关、传感器数据的读取等。 …...
js:函数
函数 函数:实现抽取封装,执行特定任务的代码块,方便复用 声明 函数命名规范 尽量小驼峰 前缀应该为动词,如getName、hasName 函数的调用 函数体是函数的构成部分 函数传参 参数列表里的参数叫形参,实际上写的数据叫实…...
低代码平台审批流程设计
审批流程设计 在此界面设置审批单从发起、到审批、再到结束的流转步骤。 6.1 添加节点 点击两个节点间连线的 图标可添加 审批人、抄送人、办理人、条件分支。 6.2 节点类型 提交节点 点击提交节点,可在右侧弹窗中设置提交节点的抄送人,实现审批在发…...
OpenCV相机标定与3D重建(8)相机标定函数calibrateCamera()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 从校准图案的多个视图中找到相机的内参和外参参数. cv::calibrateCamera 是 OpenCV 中用于相机标定的一个非常重要的函数。它通过一系列已知的世…...
Linux信号量的编程
一,用信号量来实现是父进程先进行,还是子进程先进性 信号量的没有P,V操作之前,我们不知道如何控制: #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>…...
“Yaker,你可以全局配置插件环境变量!“
周四周四,Vme50(bushi 大家好,这里是疯狂超级牛(功能上新版) 经常有用户问 “牛牛如何为不同插件配置相同的变量值呢?” “能有一个一波搞定插件变量的方式就好了” 超级牛听到了广大用户的声音,默默地拿起…...
SAAS美容美发系统架构解析
随着技术的不断发展,SAAS(Software as a Service,软件即服务)模式在各个行业的应用逐渐深化,美容美发行业也不例外。传统的美容美发店面通常依赖纸质记录、手动操作和复杂的管理流程,而随着SAAS平台的出现&…...
如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间
如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间 一、引言二、检查当前磁盘和分区状态1. 使用 `df` 命令检查磁盘使用情况2. 使用 `lsblk` 命令查看分区结构3. 使用 `fdisk` 或 `parted` 命令查看详细的分区信息三、扩展逻辑卷(如果使用 LVM)1. 检查 LVM …...
vscode远程连接ssh
一. 使用vscode里的ssh查件连不上远程的解决方法 删除Windows上的known_host文件,该文件会在连接之后自动生成,用于验证远程服务器的身份。 konwn_host和id_rsa,id_rsa.pub的关系 (1)konwn_host用于客户端验证远程服务…...
智慧防汛平台在城市生命线安全建设中的应用
随着城市化进程的加快,城市基础设施的复杂性和互联性不断增强,城市生命线的安全管理面临前所未有的挑战。智慧防汛平台作为城市生命线安全建设的重要组成部分,通过现代信息技术提升城市防汛应急管理的智能化水平,保障城市安全。 …...
python实现TCP Socket控制测试仪器
python实现TCP Socket控制测试仪器 说明前提条件代码 说明 本例是用python实现TCP Socket,最终目的是为了控制LCR电容测试仪器。 前提条件 测试仪器 配备了以太网接口,支持TCP/IP协议栈 用户可以通过IP地址和端口号连接到仪器,建立TCP通信…...
51c自动驾驶~合集38
我自己的原文哦~ https://blog.51cto.com/whaosoft/12358456 #GaussianPretrain 万能3D高斯预训练表示!爆拉3D检测、Occ、高精地图等四大任务! 受Tesla的技术的推动,越来越多的厂商开始走"纯视觉"的路线,多数方案还…...
电脑显示器拔插DVI线后副屏不显示
问题:台式机副屏显示器插拔DVI线后副屏无法检测到,不显示 其他现象:电脑设备管理器“显示适配器”中只有独显,未显示集显。 尝试方法: 1、 重新插拔并拧紧DVI线、更换DVI线、将DVI线替换为VGA线、调换DVI线及VGA线两…...
Bash脚本常用命令
1.Bash常用快捷键 2.通配符 3.Bash其他特殊符号 4.位置参数 5.预定义变量 6.常用变量比较 7.基础正则表达式 8.文件类型判断 9.文件权限判断 10.整数比较命令 11.字符串判断 其他常用参考: https://zhuanlan.zhihu.com/p/748857250...
《Unity Shader 入门精要》高级纹理
立方体纹理 图形学中,立方体纹理(Cubemap)是环境映射(Environment Mapping)的一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。 对立…...
商丘网站建设哪家专业/商品热搜词排行榜
有时和一些所谓的朋友聊天,他们都在说他[她]认识什么什么有头有脸的人!多厉害等等...就是有点虚了,你认识的人的成就并非是你的努力获得,所以讲太多,反而会让人觉得你很讨厌!稍微有点思想的人就很容易看出&…...
上海建网站制/教育机构退费纠纷找谁
第一个JSP实际上,JSP只是简单地将Java放到HTML网页中去而已。你可以将现有的HTML网页将它们的扩展名由“.html”改为“.jsp”,这是一个创建第一个JSP最好的方法。我们可以将上一个练习中的文件将它的扩展名由“.html”改为“.jsp”。然后在浏览器中装载新…...
wordpress用什么主机/公司网站建设哪个好
前言 最近好像遇到了黑客,数据库总是被删,然后我在数据库上加了权限,禁止使用drop命令,结果把自己也限制住了,自己新建了一个表,却删除不了。下面这个方法可以跨过用户权限使用drop命令,同时也…...
wordpress默认页面设置/网页制作工具
2013年,天文学家发现了一个小型椭圆星系,然而这个椭圆星系一直是个谜。该星系没有任何特征、没有其他星系的螺旋结构,看起来像是一个被孤立的星系,仿佛与宇宙中所有的外层恒星没有任何关联。为解开离群星系之谜,天文学…...
网站建设赚钱么/网站备案是什么意思
此文转载自:https://blog.csdn.net/vivid117/article/details/110871426#commentBoxAMBA总线协议(六)—— 一文看懂 AXI3 协议 原子访问 2 AMBA总线协议(一)—— 一文看懂APB总线协议AMBA总线协议(二)—— 一文看懂AMBA2 AHB2与AMBA3 AHB-Lite总线协议的区别AMBA总线…...
网站设计开发招聘/北大青鸟培训机构靠谱吗
最近搭建基础框架经常遇见这个error 我这里由于使用了友盟插件导致友盟截取了bug日志,crash日志没有打印出来,屏蔽友盟控件就可打印出crash日志。 出现这个错误我遇见了几种情况 1、从后缀看,是一个动态库,那么会不会是因为发…...