1. 程式人生 > >postgreSql 基本操作總結

postgreSql 基本操作總結

ssi lec order by sta cti title 退出 key syntax

0. 啟動pgsl數據庫

pg_ctl -D /xx/pgdata  start

1. 命令行登錄數據庫

1 psql -U username -d dbname -h hostip -p port

2. 列出所有數據庫

\l 

3. 切換數據庫

1 \c dbname

4. 列出當前數據庫的所有表

\d 

5. 查看指定表的所有字段

1 \d tablename

技術分享圖片

6. 查看指定表的基本情況

1 \d+ tablename

技術分享圖片

7. 退出操作

1 q

8. 新建表

例1(主鍵)

技術分享圖片
create table TESTCASE(
id INTEGER, 
task_class INTEGER,
age TEXT,
PRIMARY KEY(id, task_class)
);
技術分享圖片

例2(自增SERIAL)

create table CREATETASK_CHKID_N( 
id SERIAL PRIMARY KEY,
chk_id TEXT,
n INTEGER
);

其中SERIAL代表自增,默認從1開始增加,每次自增1。

9. 刪除表

1 drop table REL_CROSS_NODE;

10. 清空表

delete from [表名]

or

TRUNCATE TABLE  [表名]

區別:Truncate table 表名 (註:不帶where語句) 速度快,而且效率高。

因為DELETE 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日誌中記錄頁的釋放

11. 添加字段

1 alter table [表名] add column [字段名] [類型];

12. 更改字段

alter table [表名] rename column [舊字段名] to [新字段名];

例:把表table_ex字段col_1限制非空去掉:ALTER TABLE table_eg ALTER col_1 drop not NULL

12.1 更改字段屬性,含空格

如果把字段colname把屬性Text轉化為int,原來text裏面存在空啥的,可以

ALTER TABLE tablename ALTER COLUMN colname TYPE int USING (trim(colname)::integer);

12.2 更改字段由int4-->int8

alter table test_data alter column task_id type bigint using task_id::bigint

13. 刪除字段

1 alter table [表名] drop column [字段名];

14. 表中插入一行數據

1 insert into [表名] (字段1,字段2) values (值1,值2);

例如:

1 insert into assist_info (id, maat_id, block_type) values (‘F006‘, ‘F7775‘, 1)

  • 如果表中字段有大寫的字段,則需要對應的加上雙引號。例:insert into test (no, "Name") values (‘123‘, ‘jihite‘);
  • 值用單引號引起來(‘‘),不能用雙引號("")

15. 表中刪除一行數據

1 delete from [表名] where [該行特征];

16. 修改表中數據

1 update [表名] set [目標字段名]=[目標值] where [該行特征]

17. 刪除表

1 drop table [表名];

18. 退出postgreSql

\q

19. 兩個查詢結果做差 except

1 2 3 4 5 (select node_id from node where node_id=1 or node_id=2) except (select node_id from node where node_id=1); node_id --------- 2 (1 row)

20. 復制表

CREATE TABLE test_a_copy AS SELECT * FROM test_a;

21.命令導入sql數據文件

psql -h localhost  -d databaseName  -U username -f  filename

22. 查詢結果存儲到輸出文件

格式:

\o file_path

這樣就會把查詢結果存儲到輸出文件中。例

postgres=> \o /home/jihite/data/iu_data;
postgres=> select test_id from cdb_all_iu_data limit 10;
postgres=> select test_id from cdb_all_iu_data limit 5;

結果

技術分享圖片
test_id
--------------
         2143
         2153
         2144
         2156
         2145
         2154
         2146
         2157
         2147
         2155
(10 rows)

test_id
--------------
         2143
         2153
         2144
         2156
         2145
(5 rows)
技術分享圖片

23. 數據庫的備份&恢復

導出到線下文件

pg_dump --host hostname --port port --username username -t tablename -d dbname >/home/jihite/table.sql 

把線下文件導入到數據庫

psql -h 10.125.7.68 -p 5432 -d postgres -U postgres -W postgres -f 2.sql

24. \x

技術分享圖片
postgres=> \x
Expanded display is on.
postgres=> select *  from cdb_chk_items where chk_id = ‘R000000335‘;
-[ RECORD 1 ]+------------------------------------------------------------------------------------------------
chk_id       | R000000335
chk_desc     | 道路屬性與道路屬性相關檢查
chk_info     | {"FIELDS": {"TRAFFIC_SIGN": ["TYPE", "GEOM"], "ROAD_LINK": ["ROAD_CLASS", "FORM_WAY", "GEOM"]}}
err_desc     | {"ERR2": "roadclass取值錯誤", "ERR1": "formway取值錯誤"}
chk_level    | 1
is_opened    | 1
module_name  | TRAFFIC_SIGN
invalid_flag | 1
rel_mode     | MAIN_LAYER:TRAFFIC_SIGN
             :         TRAFFIC_SIGN|A,M|DIRECT
             :         ROAD_LINK|A,M,D|ATTR_REL
技術分享圖片

25. 從表A中把符合條件的記錄拷貝到表B

insert into A select * from B where id  in (‘a‘, ‘b‘, ‘c‘);

26 建立索引

單字段索引

CREATE INDEX index_name ON table_name (field1);

多字段索引

CREATE INDEX index_name ON table_name (field1,field2);

查看所有表的索引使用情況

技術分享圖片
select 
    relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch 
from 
    pg_stat_user_indexes 
order by 
    idx_scan asc, idx_tup_read asc, idx_tup_fetch asc;
技術分享圖片

查看某個表索引的使用情況

技術分享圖片
select 
    relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch 
from 
    pg_stat_user_indexes 
where
    relname = table_name 
order by 
    idx_scan asc, idx_tup_read asc, idx_tup_fetch asc;
技術分享圖片

27. 超找數據庫的連接信息

select * from pg_stat_activity

包含:客戶端user、ip、執行語句,狀態、時間

postgreSql 基本操作總結