必知必会的 psql 命令 | PostgreSQL
PostgreSQL,简称 Postgres,是一种使用 SQL 语言的面向对象的关系数据库管理系统。它免费、开源、可靠,并且具备强大且高效的性能。PostgreSQL 也是最受欢迎和广泛使用的关系数据库之一。
psql 是一个命令行工具,允许您通过终端与 Postgres 数据库交互。使用它,您可以连接数据库、添加、读取和修改数据,查看数据库和字段,或从文件运行命令等等。
如果您想学习 Postgres 命令或需要温习,那么您来对地方了!本文将为您介绍在使用 PostgreSQL 时最重要的 psql 命令和选项。
1. 连接数据库 psql -d
The first step is to learn how to connect to the database. There are two ways to connect, depending on where the database is located.
同一主机数据库
如果数据库与您的机器在同一台主机上,您可以使用以下命令进行连接:
psql -d <db-name> -U <username> -W
// example
psql -d ali_test_demo -U admin -W
上述命令包含三个参数:
-d
用于指定要连接的数据库名称-U
用于指定要使用的用户名-W
用于在连接数据库前强制 psql 提示输入密码
在这个示例中,命令将连接到 admin
用户下的 ali_test_demo
数据库。
不同主机数据库
如果您的数据库托管在其他地方,您可以按如下方式连接:
psql -h <db-address> -d <db-name> -U <username> -W
//example
psql -h localhost -d ali_test_demo -U admin -W
-h
标志指定数据库的主机地址。
SSL 模式
在某些情况下,您可能希望使用 SSL 进行连接。
psql "sslmode=require host=<db-address> dbname=<db-name> user=<username>"
//example
psql "sslmode=require host=my-psql-db.cloud.tech dbname=ali_test_demo user=admin"
上面的命令打开到指定数据库的 SSL 连接。
2. 列出所有数据库- \l
在很多情况下,您可能会处理多个数据库。您可以使用以下命令来查看所有可用的数据库:
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace
------------+---------+----------+-------------+-------------+-----------------------+---------+-------------
customer_data | dbadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 512 MB | pg_default
employees | dbadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 300 MB | pg_default
inventory | dbadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 1 GB | pg_default
template0 | postgres| UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +| 3276 kB | pg_default
template1 | postgres| UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +| 3276 kB | pg_default
(5 rows)
以上说明了运行该命令时会发生什么。您将获得一个包含所有数据库及其名称、所有者、访问权限和其他信息的表。
3. 切换到另一个数据库- \c
您还可以使用以下命令切换到另一个数据库:
\c <db-name>
// example
\c sy_test_db
比如:
postgres=# \c sy_test_db
You are now connected to database "sy_test_db" as user "postgres"
sy_test_db=#
该命令切换到您之前登录的用户下的指定数据库。
4. 列出数据库表 - \dt
让我们考虑一下您想要查看数据库中的所有表。您可以列出所有数据库表,如下所示:
sy_test_db=# \dt
List of relations
Schema | Name | Type | Owner
-------+-------------------+-------+-------
public | users | table | postgres
public | orders | table | postgres
public | products | table | postgres
(3 rows)
\dt
psql 命令会返回表的以下信息:
- 表所属的模式
- 表的类型
- 表的所有者
5. 描述一个表 - \d
psql 还有一个命令可以让您查看表的结构。
\d <table-name>
// example
\d ali_test_db
\d
命令会返回表的所有列、列的数据类型、索引、是否允许为空,以及配置的默认值。
如果您想获取更多关于某个表的信息,可以使用以下命令:
\d+ <table-name>
ali_test_db=# \d+ employees
Table "public.employees"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
---------+-----------------------+-----------+----------+---------+----------+--------------+--------------
id | integer | | not null | nextval('employees_id_seq'::regclass) | plain |
name | character varying(50) | | | extended |
age | smallint | | | plain |
email | character varying(100)| | not null | extended |
position | character varying(50) | | | extended |
salary | numeric(10,2) | | | main |
Indexes:
"employees_pkey" PRIMARY KEY, btree (id)
Access method: heap
现在,您可以获得额外的信息,例如存储、压缩、统计目标和描述。
6. 列出所有模式 - \dn
\dn
psql 命令列出所有数据库模式。它返回模式的名称及其所有者。
\dn
7. 列出用户及其角色 - \du
有时,您可能需要更改用户。 Postgres 有一个命令可以列出所有用户及其角色。
postgres=# \du
Role name | Attributes | Member of
-----------------+------------+----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
ali_demo1 | {} | {}
8. 检索特定用户 - \du
您还可以使用以下命令检索有关特定用户的信息:
\du <username>
//example
/du postgres
现在,您可以查看指定用户的角色,以及该用户是否是组的成员。
ali_test_db=# /du postgres
Role name | Attributes | Member of
----------+------------+----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
9. 列出所有函数 - \df
您可以使用 \df
命令列出数据库中的所有函数,该命令将返回以下信息:
- 函数所属的模式
- 函数的名称
- 函数返回的结果数据类型
- 函数的参数数据类型
- 函数的类型
这样做可以帮助您查看数据库中定义的所有函数及其详细信息。
10. 列出所有视图 - \dv
psql 界面使您能够使用 \dv
命令列出所有数据库视图。
11. 将查询结果保存到文件 - \o
在某些情况下,您可能希望稍后对查询结果进行分析,或者比较两个查询的结果。psql 接口允许实现这一点。您可以通过以下方式将查询结果保存到文件中:
\o <file-name>
// example
\o query_results
...run the psql commands...
\o - stop the process and output the results to the terminal again
让我们将以下查询结果保存到文件中:
- 可用的数据库表
- 描述数据库表的结果
- 所有用户的列表
- 用户 “postgres” 的详细信息
注意:要停止将结果保存到文件中,您需要再次运行\o命令(不带文件名)。
12. 从文件运行命令 - \i
您也可以从文件中执行命令。虽然对于简单的命令,这种方法可能并不是最佳选择,但当您需要运行多个命令或复杂的 SQL 语句时,它会非常有用。 请创建一个 txt 文件,内容如下:
\l
\dt
\du
运行该文件时,它应该返回以下内容的列表:
- 数据库
- 数据库表
- 用户
您可以使用以下 psql 命令从文件中执行这些命令:
\i <file-name>
// example
\i psql_commands.txt
该命令按预期返回所有数据库、表和用户。
13. 退出 psql - \q
您可以使用\q
命令退出psql
界面。
总结
psql
接口功能强大,提供了丰富的功能,使您能够执行多种操作,包括运行 SQL 语句、管理数据库、查询数据等。通过 psql,您可以方便地连接到 PostgreSQL 数据库,创建和修改表,插入和更新数据,以及执行复杂的查询。
如果您希望开始使用 PostgreSQL 或者希望加深对其功能的理解,建议您访问 PostgreSQL 的官方网站 (opens in a new tab)。在网站上,您可以找到详细的文档、教程和示例,帮助您更好地掌握 PostgreSQL 的使用。
开始体验 Chat2DB Pro
如果你正在寻找一款强大、基于 AI 的数据库管理工具,快来试试 Chat2DB 吧!无论你是数据库管理员、开发者还是数据分析师,Chat2DB 都能通过 AI 的强大功能简化你的工作。
👉现在享受 Chat2DB Pro 30 天免费试用 (opens in a new tab),即刻体验所有高级功能。