Skip to content

大纲:

  • 安装
    • 安装地址
    • docker安装
    • linux/windows安装
  • pg体系
  • pg用户体系、配置参数等等
  • 基础工具
  • sql语法(与其他sql不同之处)
  • 常用数据类型
  • 数据备份
  • 数据库连接工具使用:pgadmin

PostgreSQL简介

PostgreSQL是开源的对象关系型数据库,以下简称PG,它的前身是IngresIngres是伯克利大学的一个关系型数据库研究项目)。

逻辑存储结构

PG数据库的逻辑存储结构如下图所示,一个Database Cluster包含多个Database,在一个Database下可以创建多个Table,在Database与Table之间根据需要可以引入一层逻辑实体Schema。每个Table包含了多条Record,而每条Record由多个Field构成。上述不同粒度的逻辑实体是一个逐级包含的关系,这是一种典型的关系型数据库数据模型。 image.png

进程体系结构

PG采用客户/服务器(Client/Server)模型:

  • 服务端:服务端采用多进程架构,负责管理数据库文件、接受来自客户端的连接请求等。其主进程叫作Postmaster(其程序名叫作postgres)。当接受新的客户端连接请求之后,Postmaster会创建一个新的postgres服务进程,并让该服务进程专门服务新的客户端连接,直到该连接关闭为止。
  • 客户端:客户端可以是多种形式,如数据库管理工具、基于数据库访问API的应用程序、基于文本的工具终端等。

image.png

安装

在WINDOWS操作系统下,PG的安装较为简单,在PG官网下载对应操作系统的安装包,按步骤安装即可。 这里介绍下在ldocker安装:

windows

在PG官网的windows平台下载界面,点击download the

docker安装

image.png

  1. **拉取镜像:**使用docker pull postgres:${VERSION} 其中 ${VERSION}代表你需要的版本号。

安装完成后,使用docker images查看是否安装成功。 image.png

  1. 创建一个数据卷,方便后续做数据迁移等工作。
shell
docker volume create postgres
  1. 运行镜像
shell
docker run --name postgresql -e POSTGRES_PASSWORD=password -p 15433:5432 -v postgres:/var/lib/postgresql/data -d postgres

其中:

  • --name为容器指定一个名称
  • -e 设置环境变量,指定默认用户postgres的密码,格式为POSTGRES_PASSWORD=密码
  • -p 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -v 绑定一个数据卷,格式为:主机(宿主)数据卷文件或目录:容器文件或目录
  • -d 后台要运行的镜像名称;
  1. 查看是否运行成功
shell
docker logs 容器名或者容器id
  1. 设置自动运行
  2. 安装postgis

PG用户权限和模式

PG通过用户、角色和权限三层模型来进行数据库权限管理。 PG管理用户权限有两个核心的概念需要理解:

  • 数据库对象的权限
  • 角色的属性

数据库对象的权限

PG中所有的资源都是细粒度管理的,不同的对象拥有不同的权限,权限类型包括:

  • SELEC
  • INSERT
  • UPDATE
  • DELETE
  • TRUNCATE
  • ......

image.png

💡在PG中,任何逻辑对象(包括数据库)都是有所有者的,也就是说数据库对象都是属于某个用户的,所以,无需把对象的权限赋予所有者,因为所有者默认就拥有所有的权限,

角色的属性

数据库角色具有一系列属性,用于定义如何与客户端身份认证系统交互。 这些属性包括:

  • 登陆
  • 超级管理员
  • 创建数据库
  • 创建角色
  • 密码
  • 连接数限制

数据类型

字符类型

字符类型以文本形式存储数据,PostgreSQL 提供了三种字符数据类型: charvarchartextimage.png

整数类型

PostgreSQL 提供了三种整数数据类型: **smallint**integerbigint

最常使用的是Integer,因为它提供了在范围、存储空间和性能之间的最佳平衡。一般只有在硬盘容量不足时才使用smallint类型。而只有在integer类型的范围不够时才使用bigint类型。

image.png

任意精度数字类型(numeric)

任意精度数字类型包括numeric和decimal

参考