PostgreSQL 事务 - 保证交易的完整性
本文介绍了在 PostgreSQL 中如何开启、提交和回滚事务。
PostgreSQL 提供了丰富的数据类型,包括 数值类型、字符类型、日期时间类型、二进制数据类型、货币类型、布尔类型、枚举类型、JSON 类型、数组类型、集合类型、网址类型、UUID 类型、 XML 类型、区间类型、位字符串类型等。除此之外,您还可以自定义复合类型。
摘要:在本教程中,您将了解**PostgreSQL 数据类型,**包括布尔型、数值型、时间型、数组、json、uuid 和特殊类型。

PostgreSQL 数据类型概述
PostgreSQL 支持以下数据类型:
- 布尔值
- 性格 类型,如
char,varchar和text。 - 数字类型,例如整数和浮点数。
- 时间类型,如 日期、时间、时间戳和 间隔
- 用于存储通用唯一标识符的UUID
- 阵列 为存储阵列字符串,数字等
- JSON 存储 JSON 数据
- hstore 存储键值对
- 特殊类型,如网络地址和几何数据。
布尔值
一个布尔数据类型可以容纳三个可能的值之一:真,假或空。您可以使用 boolean 或 bool 关键字来声明具有布尔数据类型的列。
当你插入数据到一个布尔列,PostgreSQL 的将其转换为一个布尔值
1,yes,y,t,true值转换为true0,no,false,f值转换为false。
当您从布尔列中选择数据时,PostgreSQL 会将这些值转换回例如 t true、 ftofalse 和 spaceto null 。
特点
PostgreSQL 的提供了三种字符数据类型: CHAR(n) , VARCHAR(n) ,和 TEXT
CHAR(n)是带有空格的定长字符。如果插入的字符串比列的长度短,PostgreSQL 会填充空格。如果插入的字符串比列的长度长,PostgreSQL 会报错。VARCHAR(n)是变长字符串。使用VARCHAR(n),您最多可以存储n字符。当存储的字符串短于列的长度时,PostgreSQL 不会填充空格。TEXT是变长字符串。理论上,文本数据是一个长度不限的字符串。
数字
PostgreSQL 提供两种不同类型的数字:
- 整数
- 浮点数字
整数
PostgreSQL 共有三种整数:
- 小整数 (
SMALLINT) 是 2 字节有符号整数,范围从 -32,768 到 32,767。 - 整数 (
INT) 是一个 4 字节整数,范围从 -2,147,483,648 到 2,147,483,647。 - Serial 与 integer 相同,除了 PostgreSQL 会自动生成并将值填充到
SERIAL列中。这类似于AUTO_INCREMENTMySQL 中的AUTOINCREMENT 列或 SQLite 中的列。
浮点数
浮点数主要有以下三种类型:
float(n)是一个浮点数,其精度至少为 n,最大为 8 个字节。real或者float8是一个 4 字节的浮点数。numeric或者numeric(p,s)是小数点后有s个p位的实数。这numeric(p,s)是确切的数字。
时态数据类型
时间数据类型允许您存储日期和/或时间数据。PostgreSQL 有五种主要的时态数据类型:
这 TIMESTAMPTZ 是 PostgreSQL 对 SQL 标准时态数据类型的扩展。
数组
在 PostgreSQL,您可以存储阵列的字符串,整数等数组,数组列。该数组在某些情况下会派上用场,例如,存储一周中的几天,一年中的几个月。
JSON
PostgreSQL 提供两种 JSON 数据类型: JSON 和 JSONB 用于存储 JSON 数据。
在 JSON 需要为每个处理重新分析数据类型存储平原 JSON 数据,而 JSONB 数据类型存储 JSON 的二进制格式是更快地处理,但速度慢于插入数据。此外, JSONB 支持索引,这可能是一个优势。
用户名
该 UUID 数据类型允许你存储通过定义通用唯一标识符 RFC 4122 。与这些 UUID 值相比 SERIAL ,这些值保证了更好的唯一性,并可用于隐藏公开的敏感数据,例如 id URL 中的值。
特殊数据类型
除了原始数据类型,PostgreSQL 还提供了几种与几何和网络相关的特殊数据类型。
box– 一个长方形的盒子。line– 一组点。point– 一对几何数字。lseg– 线段。polygon– 封闭几何。inet– IP4 地址。macaddr– MAC 地址。
在本教程中,我们向您介绍了 PostgreSQL 数据类型,以便您可以在下一个教程中使用它们来创建表。