大纲:
- 安装
- 安装地址
- docker安装
- linux/windows安装
- pg体系
- pg用户体系、配置参数等等
- 基础工具
- sql语法(与其他sql不同之处)
- 常用数据类型
- 数据备份
- 数据库连接工具使用:pgadmin
PostgreSQL简介
PostgreSQL
是开源的对象关系型数据库,以下简称PG,它的前身是Ingres
(Ingres
是伯克利大学的一个关系型数据库研究项目)。
逻辑存储结构
PG数据库的逻辑存储结构如下图所示,一个Database Cluster包含多个Database,在一个Database下可以创建多个Table,在Database与Table之间根据需要可以引入一层逻辑实体Schema。每个Table包含了多条Record,而每条Record由多个Field构成。上述不同粒度的逻辑实体是一个逐级包含的关系,这是一种典型的关系型数据库数据模型。
进程体系结构
PG采用客户/服务器(Client/Server)模型:
- 服务端:服务端采用多进程架构,负责管理数据库文件、接受来自客户端的连接请求等。其主进程叫作Postmaster(其程序名叫作postgres)。当接受新的客户端连接请求之后,Postmaster会创建一个新的postgres服务进程,并让该服务进程专门服务新的客户端连接,直到该连接关闭为止。
- 客户端:客户端可以是多种形式,如数据库管理工具、基于数据库访问API的应用程序、基于文本的工具终端等。
安装
在WINDOWS操作系统下,PG的安装较为简单,在PG官网下载对应操作系统的安装包,按步骤安装即可。 这里介绍下在ldocker安装:
windows
在PG官网的windows平台下载界面,点击download the
docker安装
- **拉取镜像:**使用
docker pull postgres:${VERSION}
其中${VERSION}
代表你需要的版本号。
安装完成后,使用docker images
查看是否安装成功。
- 创建一个数据卷,方便后续做数据迁移等工作。
docker volume create postgres
- 运行镜像
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 后台要运行的镜像名称;
- 查看是否运行成功
docker logs 容器名或者容器id
- 设置自动运行
- 安装postgis
PG用户权限和模式
PG通过用户、角色和权限三层模型来进行数据库权限管理。 PG管理用户权限有两个核心的概念需要理解:
- 数据库对象的权限
- 角色的属性
数据库对象的权限
PG中所有的资源都是细粒度管理的,不同的对象拥有不同的权限,权限类型包括:
- SELEC
- INSERT
- UPDATE
- DELETE
- TRUNCATE
- ......
💡在PG中,任何逻辑对象(包括数据库)都是有所有者的,也就是说数据库对象都是属于某个用户的,所以,无需把对象的权限赋予所有者,因为所有者默认就拥有所有的权限,
角色的属性
数据库角色具有一系列属性,用于定义如何与客户端身份认证系统交互。 这些属性包括:
- 登陆
- 超级管理员
- 创建数据库
- 创建角色
- 密码
- 连接数限制
数据类型
字符类型
字符类型以文本形式存储数据,PostgreSQL 提供了三种字符数据类型: char
、varchar
、text
。
整数类型
PostgreSQL 提供了三种整数数据类型: **smallint**
、integer
、bigint
。
最常使用的是Integer,因为它提供了在范围、存储空间和性能之间的最佳平衡。一般只有在硬盘容量不足时才使用smallint类型。而只有在integer类型的范围不够时才使用bigint类型。
任意精度数字类型(numeric)
任意精度数字类型包括numeric和decimal