当前位置: 首页 > 工具软件 > mysql2psql > 使用案例 >

PostgreSQL:psql 常用命令对比 MySQL

齐阎宝
2023-12-01

前言

PSQL 是 PostgreSQL 自带的命令行客户端,就好比 MySQL 的 mysql -h -p 客户端一样,不经常用,怕忘记,在此对比 MySQL 记录下。

1. show databases;

列出所有的数据库:\l

db1-# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 db1       | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

db1-# 

2. use xxxx;

选择数据库:\c xxx

db1-# \c db1;
You are now connected to database "db1" as user "postgres".

3. show tables & show create

查询结构信息,PG 这里使用 \d 可以查看 表、视图、索引、序列 的信息。使用 \d+ 可以拿到更详细信息。

db1-# \d
              List of relations
 Schema |       Name       | Type  |  Owner   
--------+------------------+-------+----------
 public | pgbench_accounts | table | postgres
 public | pgbench_branches | table | postgres
 public | pgbench_history  | table | postgres
 public | pgbench_tellers  | table | postgres
(4 rows)

db1-# \d pgbench_accounts
              Table "public.pgbench_accounts"
  Column  |     Type      | Collation | Nullable | Default 
----------+---------------+-----------+----------+---------
 aid      | integer       |           | not null | 
 bid      | integer       |           |          | 
 abalance | integer       |           |          | 
 filler   | character(84) |           |          | 
Indexes:
    "pgbench_accounts_pkey" PRIMARY KEY, btree (aid)

db1-# \d pgbench_accounts_pkey
 Index "public.pgbench_accounts_pkey"
 Column |  Type   | Key? | Definition 
--------+---------+------+------------
 aid    | integer | yes  | aid
primary key, btree, for table "public.pgbench_accounts"

如果只想显示匹配的表,可以使用 “\dt” 命令。
如果只想显示索引,可以使用 “\di” 命令。
如果只想显示序列,可以使用 “\ds” 命令。
如果只想显示视图,可以使用 “\dv” 命令。
如果想显示函数,可以使用 “\df” 命令。

4. 查询耗时

PSQL 默认执行 SQL 时不会显示耗时,可以使用命令开启:

db1=# select count(*) from pgbench_accounts;
  count  
---------
 5000000
(1 row)
db1=# \timing on
Timing is on.
db1=# 
db1=# 
db1=# select count(*) from pgbench_accounts;
  count  
---------
 5000000
(1 row)

Time: 212.943 ms

5. show grants

使用 \dg 或者 \du 可以查询用户信息

db1=# \dg
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}


db1=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

6. set names

db1=# \encoding utf8;

7. \G

有时查询字段很多,几乎看不清,我们使用 \G 可以行转列

db1=# select * from pgbench_accounts limit 4;
 aid | bid | abalance |                                        filler                                        
-----+-----+----------+--------------------------------------------------------------------------------------
   1 |   1 |        0 |                                                                                     
   2 |   1 |        0 |                                                                                     
   3 |   1 |        0 |                                                                                     
   4 |   1 |        0 |                                                                                     
(4 rows)

Time: 0.479 ms
db1=# \x
Expanded display is on.
db1=# select * from pgbench_accounts limit 4;
-[ RECORD 1 ]----------------------------------------------------------------------------------
aid      | 1
bid      | 1
abalance | 0
filler   |                                                                                     
-[ RECORD 2 ]----------------------------------------------------------------------------------
aid      | 2
bid      | 1
abalance | 0
filler   |                                                                                     
-[ RECORD 3 ]----------------------------------------------------------------------------------
aid      | 3
bid      | 1
abalance | 0
filler   |                                                                                     
-[ RECORD 4 ]----------------------------------------------------------------------------------
aid      | 4
bid      | 1
abalance | 0
filler   |                                                                                     

Time: 0.545 ms
db1=# 

8. source

MySQL 中 source 可以执行外部 SQL 文件 PG 可以使用 \i 文件名 执行外部 SQL 命令。
也可以使用 psql -f 文件名 执行外部 SQL 文件。

9. edit

MySQL 可以使用 eidt 进入编辑模式,PG 使用 \e 即可。

 类似资料: