Clarence Java DocClarence Java Doc
开发总结
Java
数据库
缓存
JVM
Spring
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
系统架构
开发协议
IOT
人工智能
开发总结
Java
数据库
缓存
JVM
Spring
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
系统架构
开发协议
IOT
人工智能
  • MySQL
  • PostgreSQL
  • Other RDBMS
  • Orm Framework
  • Columnar DB
  • Distributed DB
  • Time Series DBMS
  • Document Stores
  • Search Engines
  • 数据库中间件
  • Java总结-数据库

PostgreSQL

  • 官网:PostgreSQL 官网

一、基础介绍

  • 背景:PostgreSQL 是一个开源的关系型数据库管理系统(RDBMS),最初由加利福尼亚大学伯克利分校的研究团队在 1986 年开始开发,最初的名字叫做 Postgres。
  • 来源:PostgreSQL 并非中国的数据库,而是源自美国的开源项目。
  • 特点:
    • 全球范围内广泛使用的开源数据库,具有高可扩展性和强大的事务支持。
    • 支持 SQL 标准,具备丰富的功能,如 JSON 数据类型、地理信息系统(GIS)功能(PostGIS)等。
    • 在全球范围内有广泛的社区支持和开发者贡献。

二、安装使用

services:
  postgres:
    image: postgres:17.4-bookworm
    container_name: postgres
    restart: always
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: 123456
    ports:
      - "5432:5432"
    volumes:
      - ./postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

三、核心概念

1、逻辑结构

PostgreSQL 采用 数据库 - 模式(Schema) - 表 的层级结构:

  • 数据库(Database):存储所有数据,每个 PostgreSQL 实例可包含多个数据库。

  • 模式(Schema):用于组织数据库对象(表、视图等),类似于命名空间。

  • 表(Table):数据的核心存储单元,由行和列组成。

  • 列(Column):定义字段,具有不同的数据类型。

  • 行(Row):存储具体的数据记录。

2、常见数据类型

官网数据结构地址:https://www.postgresql.org/docs/current/datatype.html

以下是 PostgreSQL 数据类型 和 Java 数据类型 之间的对应关系表:

PostgreSQL 数据类型Java 数据类型说明
整数类型
SMALLINT (2字节)Short适用于 -32,768 到 32,767 之间的整数
INTEGER / INT (4字节)Integer适用于 -2^31 到 2^31-1 之间的整数
BIGINT (8字节)Long适用于更大范围的整数
SERIAL (自增 INT)Integer自增主键,自动生成数值
BIGSERIAL (自增 BIGINT)Long适用于大整数的自增主键
浮点数与精度数
DECIMAL(p,s) / NUMERIC(p,s)BigDecimal高精度小数,适用于金融计算
REAL (4字节)Float单精度浮点数
DOUBLE PRECISION (8字节)Double双精度浮点数
字符串类型
CHAR(n) / CHARACTER(n)String固定长度字符串
VARCHAR(n) / CHARACTER VARYING(n)String可变长度字符串
TEXTString任意长度的字符串
日期和时间类型
DATELocalDate仅存储日期 (yyyy-MM-dd)
TIMELocalTime仅存储时间 (HH:mm:ss)
TIMESTAMPLocalDateTime日期 + 时间,不带时区
TIMESTAMP WITH TIME ZONEOffsetDateTime带时区的日期时间
INTERVALDuration表示时间间隔
布尔类型
BOOLEANBooleantrue 或 false
二进制类型
BYTEAbyte[]存储二进制数据
JSON 类型
JSON / JSONBString / JSONObjectJSONB 存储效率更高
数组类型
INTEGER[]Integer[] / List<Integer>存储整型数组
TEXT[]String[] / List<String>存储字符串数组
UUID 类型
UUIDUUID存储全局唯一标识符
枚举类型
ENUMEnum<?>需要用 @Enumerated(EnumType.STRING) 映射
hstore(键值存储)
hstoreMap<String, String>键值对存储

四、常用命令

五、常见问题

1、PostgreSQL Gis如何支持?

CREATE EXTENSION postgis;
Last Updated:
Contributors: hello0709
Prev
MySQL
Next
Other RDBMS