postgresql中怎么用psql命令

嘿嘿,上次有客户问我PostgreSQL命令,所以我就列在这里,主要是关于数据库操作的。
它想知道如何连接数据库、更改数据库以及其他常用命令。

首先,连接数据库的默认用户和数据库是Postgres。
要连接,请使用 psql -U user -d dbname,这类似于 MySQL use dbname 命令。

您可以使用 psql -U user -d newdbname 来更改数据库,就像在 MySQL 中使用 newdbname 一样。

接下来,如果你想列出数据库,可以使用\l,相当于MySQL show database。
要列出表,您可以使用 \dt,这类似于 MySQL 显示表。

要查看表结构,请使用 \d table_name 或 \d table_name,相当于 MySQL DESCRIBE table_name 或 SHOW COLUMNS FROM table_name。

使用createatabase [数据库名称]创建数据库,使用dropdatabase [数据库名称]删除数据库。
如果要重命名表,可以将[表名A]更改为[表名B]。
要删除表,只需删除 [tablename];。
添加备用 [表名称] 列 [字段名称] [类型] 将字段添加到现有表,并使用备用 [表名称] 删除列 [字段名称] 删除字段。
如果要重命名字段,可以使用替代的[表名]列[字段名A]至[字段名B]。
要设置字段的默认值,请使用 ALTER [表名称] SET COLUMN [字段名称] SET DEFAULT [新默认值];。
使用Alternate [Table Name] Alternate Column [Field Name] Drop Default 删除默认值。

使用values([列m值],[列n值],...)将表中的数据插入到[表名]([字段名m],[字段名n],...)中。

使用update更改表中的数据[表名] set [目标字段名]=[目标值] where [行属性];。
要删除数据行,请使用 DELETE FROM [表名] WHERE [行属性];。
如果要清除整个表,请使用 DELETE FROM [表名]。

使用create table创建表([字段名1 ][类型1 ]<引用相关表名(相关字段名)>,[字段名2 ][类型2 ],...<;,PRIMARY KEY(字段名m,字段名n,...)>;);
还有许多特殊的命令,例如\n可用于将数据插入到组中的copy命令、\d SQL命令。
语法检查器,\copyright 显示 PostgreSQL 的使用和分布,\显示或设置客户端字符编码。

如果您需要帮助,可以使用 \h [name] 或 \?查看所有订单。

使用 \quick [文本] 名称设置内部变量。
使用 \password [USERNAME] 更改用户密码。

最后,如果您想退出 psql,只需键入 q 即可。

您可以使用pg_dump和pg_dumpall来备份数据库。
例如,要转储名为 sales 的数据库,您可以执行以下操作:pg_dump sales > /opt/Postgresql/backup/1 .bak。

无论如何,这取决于你。
这些命令应该可以帮助您解决大多数问题。
这个我还在想,可能还有其他细节可以考虑。

PostGreSQL sql数据库中 删除数据的命令是什么

这个 SQL 语句有问题。
user_id前面多了一个&。
应从 t_user where user_id='1 2 3 4 5 ' 删除它; 时间:现在 地点:不确定 号码:1 2 3 4 5

如何使用ant连接postgreSQL,实现删除数据库(drop database)功能

说白了,SQL标签默认在事务块中运行SQL语句。
其实很简单。
如果您不想在事务块中运行它,只需向 SQL 标记添加一个属性即可。
先说最重要的,就是添加autocommit="true"。
还有一点是,一旦设置了这个属性,执行的每条SQL语句都会自动提交,无需等待事务块结束。
还有另一个关键细节。
此设置适用于大多数数据库系统,例如 MySQL。

我最初以为只有在复杂的操作中才需要手动控制交易,但后来发现事实并非如此。
有时,对于简单的查询或更新操作,如果您不希望它们成为事务的一部分,则此设置特别有用。
等等,还有一件事,这个设置可能会影响你对事务管理的理解,因为它改变了默认行为。

因此,如果您不想使用默认事务块,请记住在 SQL 标记中添加 autocommit="true"。
很多人没有注意到这一点,但我认为值得一试。

pg数据库删除后如何快速回收空间

说实话,使用PostgreSQL一段时间后,空间管理确实很让人头疼。
当你提到 VACUUM 和 REINDEX 时,我在尝试它们时感到很困惑。

以空间为例。
之前有一个项目,每次都会删除表中几十万行数据。
我从一开始就愚蠢地使用了 DELETE,但你猜怎么着?空间永远不会被回收,桌子变得越来越臃肿。
后来我了解到PostgreSQL被标记为删除,而不是实际删除。
我很快查看了文档,发现 VACUUM 确实可以清理标记为删除的行,并且空间立即被回收。
但 VACUUM 中最有趣的过程是更新统计数据。
有一次,我忘了更新统计数据。
结果查询优化器哑火,进行了全表扫描,直接烧毁了CPU。
现在,当我使用 VACUUM 时,我总是必须添加 ANALYZE,只是为了安全起见。

VACUUMFULL 说实话有点猛。
我有一个客户用它来填充表,这导致整个数据库停止。
他当时就傻眼了,说如果数据消失了怎么办。
实际上VACUUMFULL是排他锁,整个表都要重写。
后来我不得不关闭设备,这花了很长时间。
现在,当我使用这个命令时,我必须向 DBA 喊两声以确保没有人使用这个表。

至于REINDEX,我的经验是索引片段类似于青少年痤疮。
它无法治愈,但可以控制。
我以前有一个电商表,索引哈希在5 0%左右,查询很慢。
直接REINDEX,CPU上升到9 0%,足足用了2 个小时。
但使用后,查询速度立马提升。
但缺点是需要很长时间。
有一次,我在半夜从事 REINDEX 工作。
结果运维佬以为数据库爆炸了,直接联系我。
后来我把它改为运行维护窗口,所以没有引起恐慌。

我总结的流程,说白了就是数据库的“减肥计划”。
使用 VACUUM 和 VACUUMFULL 清理垃圾,使用 REINDEX 剪发。
但需要注意的是,这些操作都有副作用,应根据情况使用。
我有一个朋友将 REINDEX 变成了日常操作。
结果,数据库状况变得比以前更糟糕了。
他说这是“自我完善”。
因此,这些命令必须有分寸地使用,不能成为“找死维护”。