postgresql 学习笔记 (一) psql 使用说明

一.psql 使用说明

1. 不指定用户名和密码连接数据库

数据库安装并启动后,通过psql即可登录到数据库,代码如下:

[pgdy@ postgres]$ psql
 psql(11)
Type "help" for help.

用户使用psql可以直接登录到PostgreSQL。这种方式不需要输入用户名和密码,因为在安装PostgresQL时,会创建一个与初始化数据库时的操作系统用户同名的数据库用户。
另外,这个用户是数据库的超级用户。如果上述登录方式不指定用户名和密码,则 psql 会读取环境变量"$PGUSER”的值作为登录用户名。如果没有配置该环境变量,则使用当前操作系统用户名进行登录。

2. 如果使用与操作系统用户名不相同的数据库用户名连接对应的数据库,则需要指定对应的用户名和数据库名称。

ip地址 虚构

用户名是“hr”,数据库名称是"hr_db”,代码如下:
[pgdy@postgres]$ psql -h 10.40.160.130 -p 5432-U postgres -d cs_db
psql (10.5)
Type "help" for help.
-h后面的IP地址( 10.40.160.130)是数据库所在的IP地址。
-p后面的端口(5432)是数据库的监听端口。
-U后面的参数(postgres)是创建的用户名。
-d后面的参数(cs_db)是创建的数据库名称。

3. 常用命令

3.1断开psql连接
\q

-bash-4.2$ psql
psql (11.5)
输入 "help" 来获取帮助信息.

postgres=# \q
-bash-4.2$

3.11 \c cs
进入 cs数据库

3.2 \d 命令
进入数据库后查看所有视图,表

3.3 \db 查看表空间

postgres=# \db
       List of tablespaces
    Name    |  Owner   | Location 
------------+----------+----------
 pg_default | postgres | 
 pg_global  | postgres | 
(2 rows)

3.4 \dn 查看所有模式

postgres=# \db
       List of tablespaces
    Name    |  Owner   | Location 
------------+----------+----------
 pg_default | postgres | 
 pg_global  | postgres | 
(2 rows)

3.5 \du 命令
查看所有用户和角色

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

3.6 \x 命令
使用"x"命令,可以设置查询结果的输出模式

3.7 ?
帮助命令

postgres=# \?
一般性
  \copyright              显示PostgreSQL的使用和发行许可条款
  \crosstabview [COLUMNS] 执行查询并且以交叉表显示结果
  \errverbose            以最冗长的形式显示最近的错误消息
  \g [文件] or;          执行查询 (并把结果写入文件或 |管道)
  \gdesc                 描述查询结果,而不执行它
  \gexec                 执行策略,然后执行其结果中的每个值
  \gset [PREFIX]         执行查询并把结果存到psql变量中
  \gx [FILE]             就像\g,但强制扩展输出模式
  \q             退出 psql
  \watch [SEC]          每隔SEC秒执行一次查询

帮助
  \? [commands]          显示反斜线命令的帮助
  \? options             显示 psql 命令行选项的帮助
  \? variables           显示特殊变量的帮助
  \h [名称]          SQL命令语法上的说明,用*显示全部命令的语法说明

查询缓存区
  \e [FILE] [LINE]        使用外部编辑器编辑查询缓存区(或文件)
  \ef [FUNCNAME [LINE]]   使用外部编辑器编辑函数定义
  \ev [VIEWNAME [LINE]]  用外部编辑器编辑视图定义
  \p                    显示查询缓存区的内容
  \r                     重置(清除)查询缓存区
  \s [文件]              显示历史记录或将历史记录保存在文件中
  \w 文件                将查询缓存区的内容写入文件

输入/输出
  \copy ...              执行 SQL COPY,将数据流发送到客户端主机
  \echo [字符串]         将字符串写到标准输出
  \i 文件                从文件中执行命令
  \ir FILE               与 \i类似, 但是相对于当前脚本的位置
  \o [文件]              将全部查询结果写入文件或 |管道
  \qecho [字符串]        将字符串写到查询输出串流(参考 \o)

条件

4.psql使用技巧

psql的使用技巧,对PostgreSQL用户来说非常重要。
4.1 获取元命令对应的SQL代码

psql执行元命令,实质上是转换成对应的SQL语句来执行的。如果要获取这些SQL语句,则需要在psql连接数据库时增加"-E"选项,

4.2 使用上下键翻动历史命令
psql支持使用上下键获取执行过的历史命令,

4.3 自动补全功能
psql的自动补全功能使用起来非常方便。在执行语句时,不需要完全输入数据库对象的名称,使用Tab键可以自动补全。例如,要查询表

department,在输入“d"之后按Tab键会自动出现department,再次按Tab键,则会列出所有以d开头的表对象,代码如下:

postgres=# select * from department --这里输入d之后按Tab 键
postgres=# select * from department--这里输入d之后按两次Tab 键departmentdepartment01department02

4.显示SQL语句执行时间
使用"\timing"命令,可以打开显示SQL语句执行时间的开关。再次使用一次"\timing"命令,则关掉该开关,