中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL中有哪些常用的SQL語句

發布時間:2021-08-04 16:45:35 來源:億速云 閱讀:150 作者:Leah 欄目:數據庫

這期內容當中小編將會給大家帶來有關PostgreSQL中有哪些常用的SQL語句,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

  創建新的用戶

  創建一個新的用戶

  CREATE USER WITH ENCRYPTED PASSWORD '';

  用戶授權

  授予 CONNECT 訪問權限

  GRANT CONNECT ON DATABASE database_name TO username;

  然后授予模式使用

  GRANT USAGE ON SCHEMA schema_name TO username;

  為特定表授予 SELECT 權限

  GRANT SELECT ON table_name TO username;

  將 SELECT 授予多個表

  # 執行格式

  GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO username;

  # 例子

  grant select on all tables in schema public to user1;

  如果您希望將來自動授予對新表的訪問權限,則必須更改默認值

  ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT SELECT ON TABLES TO username;

  創建數據庫

  創建以 utf-8 字符的數據庫,并且以 template0 為模版創建

  CREATE DATABASE dbname WITH OWNER = postgres TEMPLATE = template0 ENCODING = 'UTF8';

  給指定用戶授指定數據庫所有權限

  GRANT ALL PRIVILEGES ON DATABASE dbname to username;

  在執行登陸操作后提示 FATAL: role 'root' is not permitted to log in.

  alter user "root" login;

  數據庫備份與恢復

  備份所有數據庫

  pg_dumpall > db.out

  恢復所有數據庫

  # 執行這個命令的時候連接到哪個數據庫無關緊要,因為pg_dumpall 創建的腳本將會包含恰當的創建和連接數據庫的命令

  psql -f db.out postgres

  備份單個數據庫

  pg_dump -h localhost -U postgres(用戶名) 數據庫名(缺省時同用戶名) > /data/dum.sql

  恢復單個數據庫

  psql -U postgres(用戶名) 數據庫名(缺省時同用戶名) < /data/dum.sql

  備份單個數據庫并壓縮

  pg_dump -h localhost -U postgres(用戶名) 數據庫名(缺省時同用戶名) | gzip > /data/dum.sql.gz

  恢復單個壓縮數據庫備份

  gunzip < /data/dum.sql.gz | psql -h localhost -U postgres(用戶名) 數據庫名(缺省時同用戶名)

  備份單表操作

  pg_dump -U postgres -h localhost -p 5432 -t staff -f staff.sql yjl(表示數據庫名稱)

  -U 表示用戶

  -h 表示主機

  -p 表示端口號

  -t 表示表名

  -f 表示備份后的sql文件的名字

  -d 表示要恢復數據庫名稱

  恢復數據單表操作

  psql -U postgres -h localhost -p 5432 -d product -f staff.sql

  查詢當前鏈接

  查詢當前連接數

  # 統計當前所有連接數

  select count(1) from pg_stat_activity;

  # 查詢當前連接數詳細信息

  select * from pg_stat_activity;

  查詢最大連接數

  show max_connections;

  # 最大連接數也可以在pg配置文件中配置:

  # 在 postgresql.conf 中設置:

  max_connections = 500

  統計數據庫占用磁盤大小

  統計各數據庫占用磁盤大小

  SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner,

  CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')

  THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))

  ELSE 'No Access'

  END AS SIZE

  FROM pg_catalog.pg_database d

  ORDER BY

  CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')

  THEN pg_catalog.pg_database_size(d.datname)

  ELSE NULL

  END DESC -- nulls first

  LIMIT 20

  統計數據庫中各表占用磁盤大小

  # 只顯示表名和占用磁盤大小

  SELECT

  table_schema || '.' || table_name AS table_full_name,

  pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size

  FROM information_schema.tables

  ORDER BY

  pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC;

  # 詳細顯示各個參數并按數據庫占用大小排序

  SELECT *, pg_size_pretty(total_bytes) AS total

  , pg_size_pretty(index_bytes) AS INDEX

  , pg_size_pretty(toast_bytes) AS toast

  , pg_size_pretty(table_bytes) AS TABLE

  FROM (

  SELECT *, total_bytes-index_bytes-COALESCE(toast_bytes,0) AS table_bytes FROM (

  SELECT c.oid,nspname AS table_schema, relname AS TABLE_NAME

  , c.reltuples AS row_estimate

  , pg_total_relation_size(c.oid) AS total_bytes

  , pg_indexes_size(c.oid) AS index_bytes

  , pg_total_relation_size(reltoastrelid) AS toast_bytes

  FROM pg_class c

  LEFT JOIN pg_namespace n ON n.oid = c.relnamespace

  WHERE relkind = 'r'

  ) a

  ) a ORDER BY total_bytes desc;

  查看 PostgreSQL 正在執行的 SQL

  SELECT

  procpid,

  start,

  now() - start AS lap,

  current_query

  FROM

  (SELECT

  backendid,

  pg_stat_get_backend_pid(S.backendid) AS procpid,

  pg_stat_get_backend_activity_start(S.backendid) AS start,

  pg_stat_get_backend_activity(S.backendid) AS current_query

  FROM

  (SELECT pg_stat_get_backend_idset() AS backendid) AS S

  ) AS S

  WHERE

  current_query <> ''

  ORDER BY

  lap DESC;

  # 參數解釋

  procpid:進程id

  start:進程開始時間

  lap:經過時間

  current_query:執行中的sql

  # 通過命令:

  =# select pg_cancel_backend(線程id);

  來kill掉指定的SQL語句。(這個函數只能 kill Select 查詢,而updae,delete DML不生效)。

  # 使用

  =# select pg_terminate_backend(pid int)

  可以kill 各種DML(SELECT,UPDATE,DELETE,DROP)操作。

  雖然可以使用 kill -9 來強制刪除用戶進程,但是不建議這么去做。

  因為:對于執行 update 的語句來說,kill掉進程,可能會導致 Postgres 進入到 recovery mode;而在 recovery mode 下,會鎖表,不允許鏈接數據庫。

上述就是小編為大家分享的PostgreSQL中有哪些常用的SQL語句了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

张掖市| 丹江口市| 孟津县| 建宁县| 绥宁县| 大渡口区| 德阳市| 都江堰市| 周宁县| 陵川县| 合川市| 寻甸| 博爱县| 刚察县| 双峰县| 阳城县| 含山县| 台前县| 民乐县| 介休市| 兴安盟| 常熟市| 宜章县| 清丰县| 开封市| 江永县| 通化县| 灯塔市| 宜兰市| 宕昌县| 北海市| 滨州市| 阿鲁科尔沁旗| 万宁市| 丽水市| 行唐县| 宁夏| 万山特区| 平果县| 托克逊县| 顺昌县|