【postgresql 基础入门】psql客户端的使用方法

【postgresql 基础入门】psql客户端的使用方法

psql 客户端使用

专栏内容

开源贡献

  • toadb开源库

个人主页:我的主页
管理社区:开源数据库
座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.

系列文章

  • 初始化集群
  • 数据库服务管理
  • psql客户端使用

前言

postgresql 数据库是一款通用的关系型数据,在开源数据库中能与商业数据媲美,在业界也越来越流行。

因为是开源数据库,不仅公开源码,还有很多使用案例,好用的插件,所以它的慢慢变成了数据库的先驱和标准,通过postgresql可以很好从使用到原理,彻底搞懂;

如果是学习编程,也可以学到丰富的编程知识,数据结构,编程技巧,它里面还有很多精妙的架构设计,分层思想,可以灵活定制的思想。

本专栏主要介绍postgresql 入门使用,数据库维护管理,通过这些使用来了解数据库原理,慢慢了解postgresql是什么样的数据库,能做那些事情,以及如何做好服务,最关键的是这些知识都是面试的必备项。

概述

数据库服务在后台运行,除了开发应用程序,通过jdbc,odbc等与它交互外,如何能操作数据库呢?

像oracle,mysql一样,postgresql也有自己的客户端,可以很方便数据库开发人员看到数据库中的结构,查询数据库中的数据,尤其像图形化客户端,帮助我们减少SQL编程,通过图形化选择就可以轻松搞定数据库的设计;

当然也有命令行的客户端,相对图形化界面来讲,很轻量,也可以被其它应用嵌入使用,但是需要对数据库有一定了解,对数据库结构了然于胸;其实用习惯了命令行,反而觉得界面比较麻烦。

本文主要分享命令行客户端的常用命令和方法;

命令行客户端

客户端当然离不开命令行方式,因为在大多数linux下都是使用命令行;

postgresql 在安装时,就自带了一个功能强大的命令行客户端工具 psql ,它就在安装目录的bin目录下面;

命令说明

先来看一下psql自身的帮助

[senllang@hatch bin]$ ./psql --help
psql is the PostgreSQL interactive terminal.

Usage:
  psql [OPTION]... [DBNAME [USERNAME]]

General options:
  -c, --***mand=***MAND    run only single ***mand (SQL or internal) and exit
  -d, --dbname=DBNAME      database name to connect to (default: "senllang")
  -f, --file=FILENAME      execute ***mands from file, then exit
  -l, --list               list available databases, then exit
  -v, --set=, --variable=NAME=VALUE
                           set psql variable NAME to VALUE
                           (e.g., -v ON_ERROR_STOP=1)
  -V, --version            output version information, then exit
  -X, --no-psqlrc          do not read startup file (~/.psqlrc)
  -1 ("one"), --single-transaction
                           execute as a single transaction (if non-interactive)
  -?, --help[=options]     show this help, then exit
      --help=***mands      list backslash ***mands, then exit
      --help=variables     list special variables, then exit

Input and output options:
  -a, --echo-all           echo all input from script
  -b, --echo-errors        echo failed ***mands
  -e, --echo-queries       echo ***mands sent to server
  -E, --echo-hidden        display queries that internal ***mands generate
  -L, --log-file=FILENAME  send session log to file
  -n, --no-readline        disable enhanced ***mand line editing (readline)
  -o, --output=FILENAME    send query results to file (or |pipe)
  -q, --quiet              run quietly (no messages, only query output)
  -s, --single-step        single-step mode (confirm each query)
  -S, --single-line        single-line mode (end of line terminates SQL ***mand)

Output format options:
  -A, --no-align           unaligned table output mode
      --csv                CSV (***ma-Separated Values) table output mode
  -F, --field-separator=STRING
                           field separator for unaligned output (default: "|")
  -H, --html               HTML table output mode
  -P, --pset=VAR[=ARG]     set printing option VAR to ARG (see \pset ***mand)
  -R, --record-separator=STRING
                           record separator for unaligned output (default: newline)
  -t, --tuples-only        print rows only
  -T, --table-attr=TEXT    set HTML table tag attributes (e.g., width, border)
  -x, --expanded           turn on expanded table output
  -z, --field-separator-zero
                           set field separator for unaligned output to zero byte
  -0, --record-separator-zero
                           set record separator for unaligned output to zero byte

Connection options:
  -h, --host=HOSTNAME      database server host or socket directory (default: "local socket")
  -p, --port=PORT          database server port (default: "5432")
  -U, --username=USERNAME  database user name (default: "senllang")
  -w, --no-password        never prompt for password
  -W, --password           force password prompt (should happen automatically)

For more information, type "\?" (for internal ***mands) or "\help" (for SQL
***mands) from within psql, or consult the psql section in the PostgreSQL
documentation.

Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>

使用说明

有几个常用的参数,在这里列一下

一般登陆使用的参数

  • -d database name , 指定要连接的数据库的名字,每个连接都需要指定到数据库
  • -U username, 登陆数据库要使用的数据库用户名
  • -h hostname , 指定数据库服务的IP或,如果为localhost,可以不指定;
  • -p port 数据库服务的port端口号,默认5432时,也不需要指定;
    默认数据库名和用户名是一样的, 同当前的系统用户名;如果当前系统用户名不是postgres,那就需要指定数据库名;

这里需要注意下,因为数据库集群中默认会创建一个postgres的数据库,当前初始化时没有指定用户名,默认是当有系统用户名;

举例说明,新初始化的集群,启动后,用psql进行连接,超级用户名为senllang, 数据库为postgres, 主机名为localhost, 端口号为5432;

[senllang@hatch bin]$ ./psql -d postgres
psql (16beta1)
Type "help" for help.

从文件执行SQL的参数

假如我们要从文件导入,除了指定上面的参数以外,还有

  • -f file ,指定带路径的文件名;

假如我们有一个createtable.sql的文件,通过执行文件来创建表,文件内容如下:

--
create table tbl_user(id int, name varchar, ssex varchar);

使用psql执行文件

[senllang@hatch bin]$ ./psql -d postgres -f createtable.sql
CREATE TABLE

可以看到它执行成功了;

直接执行SQL

使用psql 也可以直接执行SQL语句,这个功能也非常好用,比如在shell中就可以调用psql操作数据库;

  • -c ***mand , 指定要执行的命令,用双引号括起来
    现在向刚才创建的表中插入一条数据
[senllang@hatch bin]$ ./psql -d postgres -c "insert into tbl_user values(1,'xiucai','male');"
INSERT 0 1

常用命令

通过psql, 我们连接上数据库后,如何使用呢?

下面我们介绍几个常用的命令和用法;

  • SQL命令帮助,可以执行 \h
  • 查看当前数据库下的用户表 \d ,会显示出来所属的schema,own 用户名等;
postgres=# \d
          List of relations
 Schema |   Name   | Type  |  Owner
--------+----------+-------+----------
 public | tbl_user | table | senllang
(1 row)
  • 查看当前集群中的database列表 \l
postgres=# \l
                                                       List of databases
   Name    |  Owner   | Encoding | Locale Provider |   Collate   |    Ctype    | ICU Locale | ICU Rules |   A***ess privileges
-----------+----------+----------+-----------------+-------------+-------------+------------+-----------+-----------------------
 postgres  | senllang | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US      |           |
 template0 | senllang | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US      |           | =c/senllang          +
           |          |          |                 |             |             |            |           | senllang=CTc/senllang
 template1 | senllang | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US      |           | =c/senllang          +
           |          |          |                 |             |             |            |           | senllang=CTc/senllang
(3 rows)

可以到已经有3个数据库,其中两个template0,template1是模版数据库,也就是生成其它数据库的模版,而postgres就是默认创建的可以使用的数据库;

  • 切换用户或数据库 \c
postgres=# create database db_factory;
CREATE DATABASE
postgres=# \c db_factory
You are now connected to database "db_factory" as user "senllang".
db_factory=#

再新创建一个数据库db_factory,然后切换到该数据库,默认使用当前登陆的用户名;

总结

自带的 psql命令行客户端,非常实用,以上分享了一些它的用法和常用命令,其它我们在以后的分享中逐淅再接触。

了解psql之后我们就可以真正的开始数据库使用了,以上在演示过程中已经输入了一些SQL命令,如果你已经掌握一些SQL,那么就可以在psql连接数据库之后开始输入SQL,开始你的数据库设计了。

结尾

非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!

作者邮箱:study@senllang.onaliyun.***
如有错误或者疏漏欢迎指出,互相学习。

注:未经同意,不得转载!

转载请说明出处内容投诉
CSS教程_站长资源网 » 【postgresql 基础入门】psql客户端的使用方法

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买