postgresql基本命令操作:
登陆数据库:
[postgres@localhost ~]$ psql -Utestwjw -h 127.0.0.1 -dpostgres -p 36985
Password for user testwjw:
psql.bin (9.5.9)
Type "help" for help.
postgres=>
切换数据库:
postgres=> \c testdb1
You are now connected to database "testdb1" as user "testwjw".
查看所有的数据库:
testdb1=> \l
testdb1=> \list
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
testdb1 | testwjw | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/testwjw +
| | | | | testwjw=CTc/testwjw
testdb2 | testwjw | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(5 rows)
查看所有的表:
testdb1=> \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+---------
public | t | table | testwjw
public | t1 | table | testwjw
public | tlb01 | table | testwjw
(3 rows)
testdb1=>
创建数据库:
[postgres@localhost ~]$ psql -p 36985
psql.bin (9.5.9)
Type "help" for help.
postgres=# create database testdb3 with encoding='utf8' owner=testwjw;
CREATE DATABASE
[postgres@localhost ~]$ createdb testdb5 -p 36985
[postgres@localhost ~]$ createdb testdb6 -p 36985
查看创建的数据库:
[postgres@localhost ~]$ psql -p 36985 -c '\list'|egrep "testdb4|testdb5"
testdb4 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
testdb5 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
删除创建的数据库:
#以testwjw的身份连接服务器,删除testdb1数据库。
[postgres@localhost ~]$ dropdb -Utestwjw -p 36985 -e testdb1
DROP DATABASE testdb1;
[postgres@localhost ~]$ psql -p 36985 -c '\list'|grep "testdb1"
通过查看系统表验证该数据库是否已经被删除:
[postgres@localhost ~]$ psql -p 36985 -c "SELECT count(*) FROM pg_database WHERE datname ='testdb1'"
count
-------
0
(1 row)
证明此数据库确实被删除。
查看数据库中所有的表以及单表结构:
testdb2=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+---------
public | tlb2 | table | testwjw
(1 row)
testdb2=# \d tlb2
Table "public.tlb2"
Column | Type | Modifiers
--------+-----------------------+-----------
id | integer |
pay | character varying(20) |
name | character varying(6) |
Indexes:
"uniq" UNIQUE CONSTRAINT, btree (id)
testdb2=#
查看索引详细信息:
testdb2=# \d uniq;
Index "public.uniq"
Column | Type | Definition
--------+---------+------------
id | integer | id
unique, btree, for table "public.tlb2"
\d+ 命令:将会显示比\d命令更详细的信息,除了前面介绍的那些,它还会显示任何与表列相关的注释,以及表中出现的OID。
testdb2=# \d+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------+-------+---------+---------+-------------
public | tlb2 | table | testwjw | 0 bytes |
(1 row)
testdb2=# \d
List of relations
Schema | Name | Type | Owner
--------+------+-------+---------
public | tlb2 | table | testwjw
(1 row)
testdb2=#
列出所有的schemas:
testdb2=# \dn
List of schemas
Name | Owner
--------+----------
public | postgres
(1 row)
创建schema:
testdb2=# create schema sa;
CREATE SCHEMA
testdb2=# \dn
List of schemas
Name | Owner
--------+----------
public | postgres
sa | postgres
(2 rows)
testdb2=#
显示sql执行的时间,可以使用\timing参数:
testdb2=# \timing
Timing is on.
testdb2=# select * from tlb2;
id | pay | name
----+-----+------
(0 rows)
Time: 0.177 ms
testdb2=#
如果想列出数据库中所有的角色或者用户,可以使用\du \dg,这两个命令等价,因为postgresSQL中用户和角色不区分:
testdb2=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
testwjw | | {}
testdb2=# \dg
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
testwjw | | {}
testdb2=#
查看表字段:
testdb2=# SELECT a.attname from pg_class c,pg_attribute a,pg_type t where c.relname='tlb2' and a.attnum>0 and a.attrelid=c.oid and a.atttypid=t.oid;
attname
---------
id
pay
name
(3 rows)
Time: 0.586 ms
testdb2=# \dnp+
List of schemas
Name | Owner | Access privileges | Description
--------+----------+----------------------+------------------------
public | postgres | postgres=UC/postgres+| standard public schema
| | =UC/postgres |
sa | postgres | |
(2 rows)
testdb2=# \dn
List of schemas
Name | Owner
--------+----------
public | postgres
sa | postgres
(2 rows)
testdb2=#
创建表:
testdb2=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+---------
public | tlb2 | table | testwjw
(1 row)
建表:
testdb2=# CREATE TABLE products (
product_no integer,
name text,
price numeric
);
CREATE TABLE
查看表:
testdb2=# \dt
List of relations
Schema | Name | Type | Owner
--------+----------+-------+----------
public | products | table | postgres
public | tlb2 | table | testwjw
(2 rows)
删除表:
testdb2=# drop table products;
DROP TABLE
testdb2=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+---------
public | tlb2 | table | testwjw
(1 row)
testdb2=#
列出所有的表空间:
postgres=# \db
List of tablespaces
Name | Owner | Location
---------------+----------+--------------------------
my_tablespace | postgres | /data/postgresql/mydata
pg_default | postgres |
pg_global | postgres |
tbspace01 | postgres | /data/postgresql/tbspace
(4 rows)
查看当前用户:
testdb02=# select user;
current_user
--------------
postgres
(1 row)
查看当前时间:
testdb02=# select now();
now
-------------------------------
2017-10-30 04:06:49.657883+08
(1 row)
查看当前数据库版本:
testdb02=# select version();
version
----------------------------------------------------------------------------------------------------------
PostgreSQL 9.5.9 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55), 64-bit
(1 row)
查看数据库用户:
testdb02=# select * from pg_user where usename='postgres';
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
postgres | 10 | t | t | t | t | ******** | |
(1 row)
testdb02=# select * from pg_user ;
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
postgres | 10 | t | t | t | t | ******** | |
replica | 16384 | f | f | t | f | ******** | |
查看pg_user 表结构:
postgres-# \d pg_user;
View "pg_catalog.pg_user"
Column | Type | Modifiers
--------------+---------+-----------
usename | name |
usesysid | oid |
usecreatedb | boolean |
usesuper | boolean |
userepl | boolean |
usebypassrls | boolean |
passwd | text |
valuntil | abstime |
useconfig | text[] |