加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgres一些查询命令操作

发布时间:2020-12-13 17:36:06 所属栏目:百科 来源:网络整理
导读:postgres下一些查询有时候是不同于其他数据库的。 (1)显示SQL语句执行时间 timing on 退出数据库失效 (2)显示postgres中所有的表总数(包含数据库自带的) select count(*) from pg_tables; 安装好数据库系统自带为58个。 (3)显示用户生成的数据库列表
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 杀掉,而不会等它把信号中继给它的子进程,因此我们还需要手工杀掉每个独立子进程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读