PostgreSQL快速入门:psql工具的使用

前端之家收集整理的这篇文章主要介绍了PostgreSQL快速入门:psql工具的使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、psql介绍

psql是Postgresql中的一个命令行交互式客户端工具,类似Oracle中的命令行工具sqlplus:1.允许你交互地键入sql或命令,然后把它们发出给Postgresql服务器,再显示sql或命令的结果;2.输入的内容还可以来自一个文件3.还提供了一些元命令和多种类似shell的特性来实现书写脚本,以及对对量任务的自动化工作;二、psql的简单实用按照前面的步骤,切换su - postgres用户,实用psql工具连接数据库1.查看有哪些数据库

  1. postgres=# \l
  2. List of databases
  3. Name | Owner | Encoding | Collation | Ctype | Access privileges
  4. -----------+----------+----------+-------------+-------------+-----------------------
  5. postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
  6. template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres : postgres=CTc/postgres
  7. template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres : postgres=CTc/postgres
  8. (3 rows)
a.安装好后,默认会有一个叫postgres的数据库,还有两个模板数据库template0和template1;b.用户再建数据库的时候,默认是从模板数据库template1克隆出来;c.template0是一个最简化的模板库,创建数据库时,如果明确指定从此数据库集成,将创建一个最简化的数据库2.创建数据库osdba

  1. postgres=# CREATE DATABASE osdba;
  2. CREATE DATABASE
  3. postgres-# \l
  4. List of databases
  5. Name | Owner | Encoding | Collation | Ctype | Access privileges
  6. -----------+----------+----------+-------------+-------------+-----------------------
  7. osdba | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
  8. postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
  9. template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres : postgres=CTc/postgres
  10. template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres : postgres=CTc/postgres
  11. (4 rows)

3.访问osdba数据库

  1. -bash-4.1$ psql osdba
  2. psql (8.4.20)
  3. Type "help" for help.

4.在数据库osdba中创建表t

  1. osdba=# create table t(id int primary key,name varchar(40));
  2. NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t_pkey" for table "t"
  3. CREATE TABLE

5.查看osdb数据库中的表

  1. osdba=# \d
  2. List of relations
  3. Schema | Name | Type | Owner
  4. --------+------+-------+----------
  5. public | t | table | postgres
  6. (1 row)

6.创建数据库testdb后,并连接到testdb数据库

  1. osdba=# CREATE DATABASE testdb;
  2. CREATE DATABASE
  3. osdba=# \c testdb
  4. psql (8.4.20)
  5. You are now connected to database "testdb".
  6. testdb=#

三、psql的常用命令1.\d命令-查看当前数据库中的所有表

  1. osdba-# \d
  2. List of relations
  3. Schema | Name | Type | Owner
  4. --------+------+-------+----------
  5. public | t | table | postgres
  6. (1 row)

2.\d命令-跟一个表命,查看这个表的结构定义

  1. osdba-# \d t
  2. Table "public.t"
  3. Column | Type | Modifiers
  4. --------+-----------------------+-----------
  5. id | integer | not null
  6. name | character varying(40) |
  7. Indexes:
  8. "t_pkey" PRIMARY KEY,btree (id)

3.\d命令-可以查看表格t的索引信息

  1. osdba-# \d t_pkey
  2. Index "public.t_pkey"
  3. Column | Type
  4. --------+---------
  5. id | integer
  6. primary key,btree,for table "public.t"

4.\d命令-跟通配符如*或?

  1. osdba-# \d t*
  2. Table "public.t"
  3. Column | Type | Modifiers
  4. --------+-----------------------+-----------
  5. id | integer | not null
  6. name | character varying(40) |
  7. Indexes:
  8. "t_pkey" PRIMARY KEY,btree (id)
  9. Index "public.t_pkey"
  10. Column | Type
  11. --------+---------
  12. id | integer
  13. primary key,sans-serif; line-height: 15px;">5.\d+命令,显示比\d命令更加详细的信息,显示与表列关联的注释
  14. osdba-# \d+ 
  15.                     List of relations 
  16.  Schema | Name | Type  |  Owner   |  Size   | Description  
  17. --------+------+-------+----------+---------+------------- 
  18.  public | t    | table | postgres | 0 bytes |  
  19. (1 row) 

6.匹配不同对象类型的\d命令,如\dt-只想显示匹配的表;\di-只想显示索引;\ds-只显示序列;\dv-只显示视图;\df-只显示函数等...

  1. osdba-# \dt t*
  2. List of relations
  3. Schema | Name | Type | Owner
  4. --------+------+-------+----------
  5. public | t | table | postgres
7.\dn命令-列出所有的schema

  1. osdba-# \dn
  2. List of schemas
  3. Name | Owner
  4. --------------------+----------
  5. information_schema | postgres
  6. pg_catalog | postgres
  7. pg_toast_temp_1 | postgres
  8. public | postgres
  9. (5 rows)


8.\db命令-显示所有表空间

  1. osdba-# \db
  2. List of tablespaces
  3. Name | Owner | Location
  4. ------------+----------+----------
  5. pg_default | postgres |
  6. pg_global | postgres |
  7. (2 rows)

9.\dg-列出数据库中所有角色和用户

  1. osdba-# \dg
  2. List of roles
  3. Role name | Attributes | Member of
  4. -----------+-------------+-----------
  5. postgres | Superuser | {}
  6. : Create role
  7. : Create DB
10.\dp-显示表的权限分配情况

  1. osdba-# \dp
  2. Access privileges
  3. Schema | Name | Type | Access privileges | Column access privileges
  4. --------+------+-------+-------------------+--------------------------
  5. public | t | table | |
  6. (1 row)

四、指定字符集编译的命令1.\encoding gbk-设置客户端的字符编码为gbk五、\pset命令

1.\pset命令-用于设置输出的格式,\pset border 0/1/2:输出内容无边框、只有内边框、内外都有边框

  1. osdba-# \pset border 0
  2. Border style is 0.
  3. osdba-# \dp
  4. Access privileges
  5. Schema Name Type Access privileges Column access privileges
  6. ------ ---- ----- ----------------- ------------------------
  7. public t table
  8. (1 row)
  9. osdba-# \pset border 1
  10. Border style is 1.
  11. osdba-# \dp
  12. Access privileges
  13. Schema | Name | Type | Access privileges | Column access privileges
  14. --------+------+-------+-------------------+--------------------------
  15. public | t | table | |
  16. (1 row)
  17. osdba-# \pset border 2
  18. Border style is 2.
  19. osdba-# \dp
  20. Access privileges
  21. +--------+------+-------+-------------------+--------------------------+
  22. | Schema | Name | Type | Access privileges | Column access privileges |
  23. +--------+------+-------+-------------------+--------------------------+
  24. | public | t | table | | |
  25. +--------+------+-------+-------------------+--------------------------+
  26. (1 row)

2.\x命令-可以把表中的每一行的每列数据都拆分为单行展示,如果有一行数据有太多的拆行,显示不下,就可以使用这个命令

  1. osdba-# \x
  2. Expanded display is on.
  3. osdba-# \dp
  4. Access privileges
  5. +-[ RECORD 1 ]-------------+--------+
  6. | Schema | public |
  7. | Name | t |
  8. | Type | table |
  9. | Access privileges | |
  10. | Column access privileges | |
  11. +--------------------------+--------+
  12. osdba-# \x
  13. Expanded display is off.
  14. osdba-# \dp
  15. Access privileges
  16. +--------+------+-------+-------------------+--------------------------+
  17. | Schema | Name | Type | Access privileges | Column access privileges |
  18. +--------+------+-------+-------------------+--------------------------+
  19. | public | t | table | | |
  20. +--------+------+-------+-------------------+--------------------------+
  21. (1 row)

五、psql使用技巧1.使用上下键把过去使用过的命令或者sql语句调出来,连续两个tab键表示补全或给出提示输入

  1. osdba-# \d
  2. \d \dc \dD \dew \dFd \dg \dn \ds \dT
  3. \da \dC \des \df \dFp \di \do \dS \du
  4. \db \dd \deu \dF \dFt \dl \dp \dt \dv

2.psql加上-E参数,可以把psql中各种以"\"开头的命令执行的实际sql打印出来

  1. -bash-4.1$ psql -E postgres
  2. psql (8.4.20)
  3. Type "help" for help.
  4. postgres=# \d
  5. ********* QUERY **********
  6. SELECT n.nspname as "Schema",c.relname as "Name",CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
  7. FROM pg_catalog.pg_class c
  8. LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
  9. WHERE c.relkind IN ('r','v','S','')
  10. AND n.nspname <> 'pg_catalog'
  11. AND n.nspname <> 'information_schema'
  12. AND n.nspname !~ '^pg_toast'
  13. AND pg_catalog.pg_table_is_visible(c.oid)
  14. ORDER BY 1,2;
  15. **************************
  16. No relations found

如果你在使用之后,想立即关闭

  1. postgres=# \set ECHO_HIDDEN off
  2. postgres=# \d
  3. No relations found.

猜你在找的Postgre SQL相关文章