psql工具使用(二)

所有psql命令都以   \   开头

 

一、使用psql -l查看有哪些数据库:

-bash-4.2$ psql -l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 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
 test      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)

  创建数据库的时候默认是hi从template克隆出来的。

\l  同psql -l

\d  查看表

\c  连接数据库

postgres=# create database testdb;
CREATE DATABASE
postgres=# \c testdb;
You are now connected to database "testdb" as user "postgres".
testdb=# \d
No relations found.
testdb=# create table t(id int primary key, name varchar(40));
CREATE TABLE
testdb=# \d
        List of relations
 Schema | Name | Type  |  Owner
--------+------+-------+----------
 public | t    | table | postgres
(1 row)

psql -h <hostname or ip> -p <port> [数据库名称] [用户名称] 

二、\d

2.1  \d 列出当前数据库所有表;

2.2  \d table_name,显示表结构定义;

testdb=# \d t
              Table "public.t"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 id     | integer               | not null
 name   | character varying(40) |
Indexes:
    "t_pkey" PRIMARY KEY, btree (id)

  \d 显示索引信息。

testdb=# \d t_pkey
     Index "public.t_pkey"
 Column |  Type   | Definition
--------+---------+------------
 id     | integer | id
primary key, btree, for table "public.t"

  \d+ table_name  显示比\d更详细的信息。

如果只想显示匹配的表  \dt

如果只想显示索引    \di

如果只想显示序列   \ds

如果只想显示视图    \dv

如果只想显示函数    \df

显示SQL执行的时间 \timing on

列出所有schema   \n

显示所有表空间  \db

显示数据库中所有角色或者用户   \du   或者   \dg

显示表的权限分配情况    \dp   或者    \z

 

三、使用\encoding 命令指定字符集   \encoding utf8;

四、\pset命令---用于设置输出的格式

\pset border0:  表示输出内容无表框;

\pset border1:   表示内部显示边框

\pset border2:   表示内部都有边框

testdb=# select * from t;
 id | name
----+------
(0 rows)

Time: 0.522 ms
testdb=# \pset border 2;
Border style is 2.
testdb=# select * from t;
+----+------+
| id | name |
+----+------+
+----+------+
(0 rows)

Time: 0.585 ms
testdb=#

 

五、\x命令,把表中每一行的每列数据都拆分为单行显示;同mysql  /G

六、执行存储在外部文件的SQL命令;

1、 \i <文件名> 执行存储在外部文件中的sql语句或者命令;

2、\echo 显示数据一行信息;

testdb=# \echo hello word
hello word

3、更多命令使用   \?  查看;

 

七、自动提交方面的技巧。

  在psql中事物是自动提交的。如果不想自动提交,方法有两种

  方法一:运行begin;命令,然后执行dml语句,最后再执行commit或rollback语句。

testdb=# begin;
BEGIN
Time: 0.428 ms
testdb=# update t set name='xxx' where id=1;
UPDATE 1
Time: 0.743 ms
testdb=# select * from t;
+----+------+
| id | name |
+----+------+
|  2 | haha |
|  1 | xxx  |
+----+------+
(2 rows)

Time: 0.507 ms
testdb=# rollback;
ROLLBACK
Time: 0.317 ms
testdb=# select * from t;
+----+--------+
| id |  name  |
+----+--------+
|  1 | steven |
|  2 | haha   |
+----+--------+
(2 rows)

Time: 0.584 ms
testdb=#

 方法二:直接使用psql中的命令关闭自动提交的功能。

\set AUTOCOMMIT off       \\AUTOCOMMIT必须大写

  八、如何得到psql中命令实际执行的SQL

如果在启动psql的命令行中加  -E  ,就可以把pslq中执行的命令实际SQL打印出来:

临时起作用打印SQL的命令:\set ECHO_HIDDEN on | off

 

 

posted @ 2018-05-17 13:45  Mr-Lee-long  阅读(801)  评论(0编辑  收藏  举报