1. 程式人生 > >postgres一些查詢命令操作

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 殺掉,而不會等它把訊號中繼給它的子程序,因此我們還需要手工殺掉每個獨立子程序。