从零开始学PostgreSQL (六) & PostgreSQL psql工具

本文详述了PostgreSQL的命令行交互工具psql,包括其简介、简单使用方法及常用命令。psql提供了一组快捷命令,如`h`用于查询SQL语法,`d`用于查看表结构等。文章还介绍了psql的使用技巧,如历史命令的调用、命令补全和关闭自动提交等,帮助用户更高效地操作PostgreSQL数据库。
摘要由CSDN通过智能技术生成

一、psql简介

psql是PostgreSQL中的一个命令行交互式客户端工具,类似Oracle中的命令行工具sqlplus,它允许用户交互地键入SQL语句或命令,然后将其发送给PostgreSQL服务器,再显示SQL语句或命令的结果。另外,所输入内容还可以来自一个文件。此外,它还提供了一些快捷命令和多种类似Shell的特性来实现书写脚本,以及对大量任务的自动化操作。虽然psql的功能与sqlplus差不多,但使用起来远比sqlplus简便,如psq|工具可以用上下方向键把上一条和下一条SQL命令翻出来,还有单击Tab键自动补全的强大功能

当然,对于初学者来说,也可以使用PostgreSQL中图形化客户端工具(如 pgAdmin)来操作PostgreSQL数据库。但掌握了psql的使用方法,你就会体会到它的便捷。有些公司不允许直接连接生产环境中的数据库主机,需要通过跳板机(或堡垒机) 登录到一台无图形界面的Linux服务器上后才能连接到数据库服务器,此时无法使用图形界面工具,只能使用psql命令。psql与pgAdmin之间的关系类似于Vi与一些图形化工具的关系,这个小工具应用起来更快捷。

本章只介绍psql中常用的一些命令和小技巧,如果读者想了解psql命令的更多用法请阅读官方手册“Reference”—“PostgreSQL Client Applications”—“psq|”中的详细内容。

二、psql的简单使用

如果已建好数据库,可以在postgres用户下直接输入“psql进入命令交互输入模式:

[postgres@master ~]$ psql psql (16.1) Type "help" for help. ​ postgres=#

进入命令交互输入模式后会显示psql版本,然后出现提示符,可以在此提示符下输入标准的SQL命令,也可以输入psql工具特有的快捷命令,这些快捷命令都是以斜杠“\” 开头的。

为什么不需要输入用户名和密码?安装PostgreSQL数据库时,会创建一个与初始化数据库时的操作系统用户同名的数据库用户,这个用户是数据库的超级用户,在此OS用户下登录数据库时,因为执行的是操作系统认证,所以是不需要用户名和密码的用户也可以通过修改pg_hba.conf文件来要求用户输入密码。

当然,psql也支持直接使用命令行参数查询信息和执行SQL,这种非交互模式与使用一般的Linux命令没有区别,如使用“psql -I”命令可以查看数据库:

[postgres@master ~]$ psql -l                                                     List of databases   Name   | Owner   | Encoding | Locale Provider | Collate   |   Ctype   | ICU Locale | ICU Rules |   Access privileges   -----------+----------+----------+-----------------+------------+------------+------------+-----------+----------------------- postgres | postgres | UTF8     | libc           | en_US.UTF8 | en_US.UTF8 |           |           | template0 | postgres | UTF8     | libc           | en_US.UTF8 | en_US.UTF8 |           |           | =c/postgres          +           |         |         |                 |           |           |           |           | postgres=CTc/postgres template1 | postgres | UTF8     | libc           | en_US.UTF8 | en_US.UTF8 |           |           | =c/postgres          +           |         |         |                 |           |           |           |           | postgres=CTc/postgres (3 rows)

也可以进入psql的命令交互输入模式使用“\”命令查看有哪些数据库,与使用上面的“psql -”命令得到的结果是相同的,示例如下:

[postgres@master ~]$ psql psql (16.1) Type "help" for help. ​ postgres=# \l                                                     List of databases   Name   | Owner   | Encoding | Locale Provider | Collate   |   Ctype   | ICU Locale | ICU Rules |   Access privileges   -----------+----------+----------+-----------------+------------+------------+------------+-----------+----------------------- postgres | postgres | UTF8     | libc           | en_US.UTF8 | en_US.UTF8 |           |           | template0 | postgres | UTF8     | libc           | en_US.UTF8 | en_US.UTF8 |           |           | =c/postgres          +           |         |         |                 |           |           |           |           | postgres=CTc/postgres template1 | postgres | UTF8     | libc           | en_US.UTF8 | en_US.UTF8 |           |           | =c/postgres          +           |         |         |                 |           |           |           |           | postgres=CTc/postgres (3 rows) ​ postgres=#

上面的查询结果中有一个叫“postgres”的数据库,这是默认postgreSQL安装完成后就有的一个数据库,还有两个模板数据库:template0和template1。当用户创建数据库时,默认是从模板数据库“template1”克隆来的,所以通常我们可以定制template1数据库中的内容,如向template1中添加一些表后函数,这样后续创建的数据库就会继承 template1中的内容&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值