postgresql使用笔记

在terminal使用createuser命令时收到报错:

createuser: 无法联接到数据库 postgres: 致命错误:  角色 "lily" 不存在

解决方法:

sudo - su postgres切换到postgres用户。

在postgres用户下可使用createdb命令创建用户:

$ createuser --interactive lily
新的角色是否是超级用户? (y/n) y

--interactive选项可收到对所创建用户权限的询问,从而设置新创建用户的权限。

创建管理员名字的用户并授相应权限后则可成功在terminal直接使用createdb命令:

$ createuser neil
$ dropuser neil

 

查看已创建的角色名

可在postgres用户下使用psql命令进入数据库管理状态。输入命令:

# SELECT rolname FROM pg_roles;

可查看已有的角色名。

建立、登录数据库

创建用户后可在自己的用户下运行命令:

$ createdb bpsimple 

创建数据库bpsimple

成功创建后可运行命令:

psql -U lily -d bpsimple

以自己的用户身份登录数据库

运行sql脚本

psql数据库名进入管理,输入i+脚本文件.sql运行脚本。

查看数据库中的表

psql 数据库名进入管理,输入dt查看已有表:

bpsimple=# dt
                关联列表
 架构模式 |   名称    |  类型  | 拥有者 
----------+-----------+--------+--------
 public   | barcode   | 数据表 | lily
 public   | customer  | 数据表 | lily
 public   | item      | 数据表 | lily
 public   | orderinfo | 数据表 | lily
 public   | orderline | 数据表 | lily
 public   | stock     | 数据表 | lily
(6 行记录)

bpsimple=# 

设置日期格式datestyle

psql后可使用SET datestyle命令修改日期格式,使用命令SHOW datestyle可查看内部datestyle变量。

bpsimple=# SELECT cast('2005-02-1' AS date);
    date    
------------
 2005-02-01
(1 行记录)

bpsimple=# SET datestyle TO 'US, SQL';
SET
bpsimple=# SELECT cast('2005-02-1' AS date);
    date    
------------
 02/01/2005
(1 行记录)

bpsimple=# SHOW datestyle;
 DateStyle 
-----------
 SQL, MDY
(1 行记录)

bpsimple=# SET datestyle TO 'European, SQL';
SET
bpsimple=# SELECT cast('2005 02 1' AS date);
    date    
------------
 01/02/2005
(1 行记录)

bpsimple=# SET datestyle TO 'European, ISO';
SET
bpsimple=# SELECT cast('2005-02-1' AS date);
    date    
------------
 2005-02-01
(1 行记录)

bpsimple=# 

 也可修改时间输出样式:

bpsimple=# 
bpsimple=# SELECT cast('2005-02-1' AS timestamp);
      timestamp      
---------------------
 2005-02-01 00:00:00
(1 行记录)

bpsimple=# SET datestyle TO 'European, Postgres';
SET
bpsimple=# SELECT cast('2005-02-1' AS timestamp);
        timestamp         
--------------------------
 Tue 01 Feb 00:00:00 2005
(1 行记录)

copy命令

copy 表名 FROM '文件名'
    [USING DELIMITERS '作为分隔符的单个字符']
    [WITH NULL AS '代表NULL的字符串']

访问序列生成器

定义为serial类型的列有一个序列生成器 <表名>_<列名>_seq。可通过currval函数获取序列生成器,nextval函数给序列生成器递增1,setval函数设置序列生成器。

e.g. customer表中有serial类型customer_id列。

查看序列生成器当前值:

bpsimple=# SELECT currval('customer_customer_id_seq');
 currval 
---------
      16
(1 行记录)

递增序列生成器:

bpsimple=# SELECT nextval('customer_customer_id_seq');
 nextrval 
---------
      17
(1 行记录)

使用聚集找出当前列中最大值:

bpsimple=# SELECT max(customer_id) FROM customer;
 max 
-----
  19
(1 行记录)

设置序列生成器的值:

bpsimple=# SELECT currval('customer_customer_id_seq');
 currval 
---------
      19
(1 行记录)
原文地址:https://www.cnblogs.com/RDaneelOlivaw/p/8166155.html