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

一、psql介绍

psql是PostgreSQL中的一个命令行交互式客户端工具,类似Oracle中的命令行工具sqlplus:

1.允许你交互地键入SQL或命令,然后把它们发出给PostgreSQL服务器,再显示SQL或命令的结果;

2.输入的内容还可以来自一个文件;

3.还提供了一些元命令和多种类似shell的特性来实现书写脚本,以及对对量任务的自动化工作;

二、psql的简单实用

按照前面的步骤,切换su - postgres用户,实用psql工具连接数据库。

1.查看有哪些数据库

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    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
(3 rows) 

a.安装好后,默认会有一个叫postgres的数据库,还有两个模板数据库template0和template1;

b.用户再建数据库的时候,默认是从模板数据库template1克隆出来;

c.template0是一个最简化的模板库,创建数据库时,如果明确指定从此数据库集成,将创建一个最简化的数据库;

2.创建数据库osdba

postgres=# CREATE DATABASE osdba;
CREATE DATABASE
postgres-# \l
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 osdba     | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 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
(4 rows) 

3.访问osdba数据库

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

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

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

5.查看osdb数据库中的表

osdba=# \d
        List of relations
 Schema | Name | Type  |  Owner
--------+------+-------+----------
 public | t    | table | postgres
(1 row) 

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

osdba=# CREATE DATABASE testdb;
CREATE DATABASE
osdba=# \c testdb
psql (8.4.20)
You are now connected to database "testdb".
testdb=#  

三、psql的常用命令

1.\d命令-查看当前数据库中的所有表

osdba-# \d
        List of relations
 Schema | Name | Type  |  Owner
--------+------+-------+----------
 public | t    | table | postgres
(1 row) 

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

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

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

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

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

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

Index "public.t_pkey"
 Column |  Type
--------+---------
 id     | integer
primary key, btree, for table "public.t" 

5.\d+命令,显示比\d命令更加详细的信息,显示与表列关联的注释

osdba-# \d+
                    List of relations
 Schema | Name | Type  |  Owner   |  Size   | Description
--------+------+-------+----------+---------+-------------
 public | t    | table | postgres | 0 bytes |
(1 row) 

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

osdba-# \dt t*
        List of relations
 Schema | Name | Type  |  Owner
--------+------+-------+----------
 public | t    | table | postgres 

7.\dn命令-列出所有的schema

osdba-# \dn
        List of schemas
        Name        |  Owner
--------------------+----------
 information_schema | postgres
 pg_catalog         | postgres
 pg_toast_temp_1    | postgres
 public             | postgres
(5 rows) 

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

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

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

osdba-# \dg
            List of roles
 Role name | Attributes  | Member of
-----------+-------------+-----------
 postgres  | Superuser   | {}
           : Create role
           : Create DB  

10.\dp-显示表的权限分配情况

osdba-# \dp
                          Access privileges
 Schema | Name | Type  | Access privileges | Column access privileges
--------+------+-------+-------------------+--------------------------
 public | t    | table |                   |
(1 row) 

四、指定字符集编译的命令

1.\encoding gbk-设置客户端的字符编码为gbk

五、\pset命令

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

osdba-# \pset border 0
Border style is 0.
osdba-# \dp
                     Access privileges
Schema Name Type  Access privileges Column access privileges
------ ---- ----- ----------------- ------------------------
public t    table
(1 row) 

osdba-# \pset border 1
Border style is 1.
osdba-# \dp
                          Access privileges
 Schema | Name | Type  | Access privileges | Column access privileges
--------+------+-------+-------------------+--------------------------
 public | t    | table |                   |
(1 row) 

osdba-# \pset border 2
Border style is 2.
osdba-# \dp
                           Access privileges
+--------+------+-------+-------------------+--------------------------+
| Schema | Name | Type  | Access privileges | Column access privileges |
+--------+------+-------+-------------------+--------------------------+
| public | t    | table |                   |                          |
+--------+------+-------+-------------------+--------------------------+
(1 row) 

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

osdba-# \x
Expanded display is on.
osdba-# \dp
Access privileges
+-[ RECORD 1 ]-------------+--------+
| Schema                   | public |
| Name                     | t      |
| Type                     | table  |
| Access privileges        |        |
| Column access privileges |        |
+--------------------------+--------+ 

osdba-# \x
Expanded display is off.
osdba-# \dp
                           Access privileges
+--------+------+-------+-------------------+--------------------------+
| Schema | Name | Type  | Access privileges | Column access privileges |
+--------+------+-------+-------------------+--------------------------+
| public | t    | table |                   |                          |
+--------+------+-------+-------------------+--------------------------+
(1 row) 

五、psql使用技巧

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

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

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

-bash-4.1$ psql -E postgres
psql (8.4.20)
Type "help" for help. 

postgres=# \d
********* QUERY **********
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"
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN (‘r‘,‘v‘,‘S‘,‘‘)
      AND n.nspname <> ‘pg_catalog‘
      AND n.nspname <> ‘information_schema‘
      AND n.nspname !~ ‘^pg_toast‘
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
************************** 

No relations found 

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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-16 21:20:52

PostgreSQL快速入门:psql工具的使用的相关文章

程序员带你学习安卓开发,十天快速入门-开发工具配置学习

上次课程:.Net程序员学习Android开发-第一课 讲到,.Net程序员学习Android开发的必要性以及对安卓大环境的相关介绍. 其中看到有网友评论,称,搞C#的去搞安卓,还怪自己的移动平台不给力.有的人说,学习.Net就学.Net学习什么安卓.这时的我首先想到了,固步自封的大清朝.当然并不是对这部分人排斥.只能说是想法不一致,认知略有不同,也没有错与对,我只是想把我自己的想法表达出来,期望与您产生共鸣.的确迄今为止,我仍然认为C#是当今我见过的最好的语言.设计规范语法总使我赶到兴奋其优美

程序员带你学习安卓开发,十天快速入门-基础知识(四)

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到熟悉的效果. 本系列课程是.Net程序员学习安卓开发系列课程. 下面是前三次课程列表: 程序员带你学习安卓开发,十天快速入门-安卓学习必要性 程序员带你学习安卓开发,十天快速入门-开发工具配置学习 程序员带你学习安卓开发,十天快速入-对比C#学习java语法 为了大家系统有效的快速入门安卓开发,推荐

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

(推荐)PHP采集工具curl快速入门教程

为什么要用CURL? CURL(Client URL Library Functions)是一个利用URL语法在命令行方式下工作的文件传输工具.它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER,  TELNET, DICT, FILE 以及 LDAP.CURL同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法,FTP 上传, kerberos认证,HTTP上传, 代理服务器, cookies, 用户名/密码认证,下载文件断点续传,上载文件断点续传,

NetBeans工具学习之道:NetBeans IDE Java 快速入门教程

欢迎使用 NetBeans IDE! 本教程通过指导您创建一个简单的 "Hello World" Java 控制台应用程序,简要介绍 NetBeans IDE 工作流.学习完本教程后,您将对如何在 IDE 中创建和运行应用程序有一个基本了解. 学习完本教程所需的时间不到 10 分钟. 学完本教程后,您可以转至文档.培训和支持页中链接的学习资源.这些学习资源提供了综合性教程,其中重点介绍适用各种应用程序类型的更多 IDE 功能和编程技巧.如果您不希望创建 "Hello Worl

GNU开发工具——CMake快速入门

GNU开发工具--CMake快速入门 一.CMake简介 不同Make工具,如GNU Make.QT的qmake.微软的MS nmake.BSD Make(pmake)等,遵循着不同的规范和标准,所执行的Makefile格式也不同.如果软件想跨平台,必须要保证能够在不同平台编译.而如果使用Make工具,必须为不同的Make工具编写不同的Makefile.CMake是一个比Make工具更高级的编译配置工具,是一个跨平台的.开源的构建系统(BuildSystem).CMake允许开发者编写一种平台无

IDEA工具下Mybaties框架快速入门程序

本篇文章介绍在IDEA工具下mybatis快速入门程序分为以下五步 ? 1 添加依赖包 ? 2 编写pojo对象 ? 3 编写映射文件 ? 4 编写核心配置文件 ? 5 测试框架 详细如下 建立Module后 ? 1 添加依赖包   在pox.xml 添加   代码如下 <properties> <maven.coppiler.source>1.9</maven.coppiler.source> <maven.coppiler.target>1.9</

AndroidStudio快速入门四:打造你的开发工具,settings必备

http://blog.csdn.net/jf_1994/article/details/50085825 前言:这里是使用AS的基本设置,适合新入手的朋友阅读,将这里介绍的设置完基本使用无忧啦. 1.setting介绍 点击菜单栏:File | settings 快捷方式:ctrl+art+s 注意:我们可以在基本设置头部的搜索框直接输入你要设置的关键字直接进入 2.设置主题样式.字体大小 File | settings |Appearance&Behavior|Appearance 如上图中

Docker快速入门——Docker-Compose

Docker快速入门--Docker-Compose 一.Docker-Compose简介 1.Docker-Compose简介 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container).Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一