postgres一些查询命令操作

postgres下一些查询有时候是不同于其他数据库的。

(1)显示SQL语句执行时间

\timing on     退出数据库失效

(2)显示postgres中所有的表总数(包含数据库自带的)

select count(*) from pg_tables;
安装好数据库系统自带为58个。

(3)显示用户生成的数据库列表

\d

(4)显示某个表列属性

\d tablename

(5)删除表中所有数据

delete from tablename --写入日志
Truncate Table tablename --不写入日志
TRUNCATE TABLE
删除表中的所有行,而不记录单个行删除操作。 
语法
TRUNCATE TABLE name
参数
name
是要截断的表的名称或要删除其全部行的表的名称。
注释
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。
如果要删除表定义及其数据,请使用 DROP TABLE 语句。
对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。 
TRUNCATE TABLE 不能用于参与了索引视图的表。
示例
下例删除 authors 表中的所有数据。
TRUNCATE TABLE authors

(6)显示当前用户

\c

(7)显示当前数据库所有用户

\du

(8)创建用户

create user xxx with password 'xxxxxx';

(9)更改用户密码

alter user xxx with password 'yyyy';

(10)更改用户连接

\c database username

(11)更改表名

更改表名称
alter table smallint rename to integer;

(12)更改列名

更改表列名
 alter table integer rename column id to id1;

(13)显示日期

show datestyle;

(14)设置日期格式

set datestyle=MDY;

(15)打印详细出错信息

postgres=# \set VERBOSITY verbose
postgres=# 
postgres=# 
postgres=# create table (id );
ERROR:  syntax error at or near "(" at character 14
STATEMENT:  create table (id );
ERROR:  42601: syntax error at or near "("
LINE 1: create table (id );
                     ^
LOCATION:  scanner_yyerror, scan.l:1044

(16)更改列属性

postgres=# alter table a1 alter column id2 set DATA TYPE int;

(17)查看帮助信息

\h alter table 

(18)列显示

\x

(19)创建函数

CREATE OR REPLACE FUNCTION f_value_single()
returns void AS $_$
DECLARE
BEGIN
   for i in 1..2000000 loop     
       insert into abc values(1,'a','a');
   end loop;
   return;
END;
$_$ language plpgsql;


将表名作为入参
create or replace function count(varchar) 
returns bigint  
as 
$$
select count(*) from quote_ident($1);
$$
language 'sql';

(20)关闭数据库3种模式

SIGTERM 
不再允许新的连接,但是允许所有活跃的会话正常完成他们的工作,只有在所有会话都结束任务后才关闭。这是智能关闭。


SIGINT 
不再允许新的连接,向所有活跃服务器发送 SIGTERM(让它们立刻退出),然后等待所有子进程退出并关闭数据库。这是快速关闭。


SIGQUIT 
令 postgres 向所有子进程发送 SIGQUIT 并且立即退出(所有子进程也会立即退出),而不会妥善地关闭数据库系统。这是立即关闭。这样做会导致下次启动时的恢复(通过重放 WAL 日志)。我们推荐只在紧急的时候使用这个方法。


SIGKILL 
此选项尽量不要使用,这样会阻止服务器清理共享内存和信号灯资源,那样的话你只能在启动服务器之前自己手工做这件事。另外,SIGKILL 直接把 postgres 杀掉,而不会等它把信号中继给它的子进程,因此我们还需要手工杀掉每个独立子进程。




  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值