PostgreSQL 简介[1]

PostgreSQL 可以说是目前功能最强大、特性最丰富和结构最复杂的开源数据库管理系统,其中有些特性甚至连商业数据库都不具备。这个起源于加州大学伯克利分校的数据库,现已成为一项国际开发项目,并且拥有广泛的用户群,尤其是在海外,目前国内使用者也越来越多。

PostgreSQL 基本上算是见证了整个数据库理论和技术的发展历程,由 UCB 计算机教授 Michael Stonebraker 于 1986 年创建。在此之前,Stonebraker 教授主导了关系数据库 Ingres 研究项目,88 年,提出了 Postgres 的第一个原型设计。

MySQL 号称是使用最广泛的开源数据库,而 PG 则被称为功能最强大的开源数据库。

创建新的用户

创建一个新的用户 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 下,会锁表,不允许链接数据库。

参考链接

本文由 YP小站 发布!

html连接sql基本语句,PostgreSQL 常用SQL语句相关推荐

  1. 【学习笔记】一些postgreSQL常用sql语句

    [学习笔记]一些postgreSQL常用sql语句 1.序列自增id 2.将从一个表中查出来的数据插入到另一个表中 3.sql更新替换字段中某个字 4.统计一个字段多个值的次数 5.统计某个字段重复项 ...

  2. PostgreSQL常用SQL优化技巧

    PostgreSQL的SQL优化技巧其实和大多数使用CBO优化器的数据库类似,因此一些常用的SQL优化改写技巧在PostgreSQL也是能够使用的.当然也会有一些不同的地方,今天我们来看看一些在Pos ...

  3. supersqli(SQL注入流程及常用SQL语句)

    目录 一.SQL注入知识学习 1.判断注入类型 (1)数字型注入判断 (2)字符型注入判断 2.猜解sql查询语句中的字段数(order by 的使用) 3.判断显示位爆数据库的名字 4.注释(--+ ...

  4. mysql通常使用语句_Mysql 常用SQL语句集锦

    基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day from table_name" ...

  5. MySQL数据库sql分类_mysql数据库常用sql的分类整理

    **************************************************************************************************** ...

  6. mysql 常用sql调优_MySQL 常用SQL优化

    MySQL 常用SQL优化: 一.大批量插入数据: 1.对于load MyISAM存储引擎的表,可以通过关闭打开MyISAM表非唯一索引的更新来提升导入速度: 例:mysql > alter t ...

  7. Oracle: SQL精妙SQL语句讲解(常用sql) .

    一.重复操作查询 --where条件得distinct systemdicid作为唯一标识 select *   from dmis_zd_systemdic t  WHERE typeid = '0 ...

  8. SQL注入手工注入常用的语句

    判断是否存在注入 and 1=1 / and 1=2 回显页面不同(整形判断) 输入and 1=1和and 1=2后发现页面没有变化,判断不是整型注入 输入' and 1=1 %23和 ' and 1 ...

  9. PostgreSQL常用SQL

    – 查看已创建的数据库 SELECT datname FROM pg_database; – 创建数据库 CREATE DATABASE mydb; – 删除数据库 DROP DATABASE myd ...

最新文章

  1. Algs4-1.3.33一个双向队列Deque-双向链表实现
  2. catia过载属性使用方法_catia简明操作手册
  3. 【Python】向函数传递列表
  4. 联想微型计算机报价,联想电脑一体机报价
  5. 你真的会 snapshot 吗? - 每天5分钟玩转 OpenStack(163)
  6. 在.NET Core微服务中使用HostBuilder和Generic Host
  7. JAVA 雪花算法 唯一ID生成工具类
  8. 常用网页元素命名规范参考
  9. 计算机连接打印机没有dot4,Windows无法连接到打印机错误消息0x00000214
  10. 蓝桥本第九届省赛刷题记录
  11. 鼠友题库每日百题(四)
  12. 2022N1叉车司机考试练习题模拟考试平台操作
  13. RT-Thread学习笔记【ADC与DAC设备】
  14. 2016年最经典的高仿系列源码打包下载4.84G
  15. 懂车帝视频连接--JS逆向
  16. 天正自定义填充图案怎么添加_天正填充图案 图层管理 文件
  17. 并行接口电路8255A的基本使用——三种工作方式的时序图的具体讲解
  18. easyconnect 通过Vmware虚拟机挂ccproxy变非全局代理
  19. 利用yolov7训练自己的数据集; yolov7的安装与使用 ; yolov7源码解读
  20. UE4课堂笔记——《UE4C++游戏开发入门教程!》第一期开场,C++必须了解小知识

热门文章

  1. Json转换对象工具类
  2. 阿翔编程学-Axis传递Pojo对象
  3. 小游戏 虚拟支付 米大师 90009
  4. Android直播开发之旅(4):MP3编码格式分析与lame库编译封装
  5. pycharm运行按钮灰色解决方法
  6. ccf试题1:最大波动
  7. 【零基础学Python】海龟画图篇 :第十九节--海龟画图实际应用|用法总结
  8. 【uni-app框架介绍及环境配置】
  9. 你真的了解机器学习、人工智能、统计建模吗?
  10. 课程设计-商店管理系统(一)----前端页面的制作(一)