🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] > [中文官方手册](http://postgres.cn/docs/14/datatype.html) > [参考](https://www.sjkjc.com/postgresql/boolean-type/) ## 二进制数据类型 | 名字 | 存储尺寸 | 描述 | | --- | --- | --- | | `bytea` | 1或4字节外加真正的二进制串 | 变长二进制串 | > 二进制串明确允许存储零值的字节以及其它“不可打印的”字节(通常是位于十进制范围32到126之外的字节),字符串不允许零字节, > 对二进制串的操作会处理实际上的字节,而字符串的处理和取决于区域设置 示例 ``` SELECT '\xDEADBEEF'; ``` ## 字符类型 | 名字 | 描述 | | --- | --- | | varchar(n) | 变长,有长度限制 | | char(n) | f 定长,不足补空白 | | text |变长,无长度限制 | * `CHAR(n)`存储固定长度的字符串,长度不足时,使用空白填充。 * `VARCHAR(n)`存储具有长度限制的可变长度文本。 * `VARCHAR`存储没有长度限制的可变长度文本。 它与`TEXT`完全相同。 * `TEXT`存储没有长度限制的可变长度文本。 > 在 PostgreSQL 中,三种字符类型之间没有性能差异,因此你只需要根据的需要选择合适的类型即可。通常您应该使用 TEXT 或者 VARCHAR ## 货币类型 | 名字 | 存储容量 | 描述 | 范围 | | --- | --- | --- | --- | | money | 8 字节 | 货币金额 | \-92233720368547758.08 到 +92233720368547758.07 | ## 日期/时间类型 | 名称 | 存储格式 | 描述 | | --- | --- | --- | | DATE| 4 字节 | yyyy-mm-dd | | TIME | 8 字节 | HH:MI:SS.ssssss| | TIMESTAMP | 8 字节 | yyyy-mm-dd HH:MI:SS 用来存储没有时区的时间戳 | | TIMESTAMPTZ | 8 字节 | yyyy-mm-dd HH:MI:SS 用来存储有时区的时间戳 | > TIME 当你插入的时会根据不同的格式写入, 写入 `10:10:10`,数据为 `10:10:10`,写入 `10:10:10.111`,数据为`10:10:10.111`,写入`10:10`,数据为`10:10:00`,但是时和分不能取消 > SQL要求只写`timestamp`等效于`timestamp without time zone`,并且PostgreSQL鼓励这种行为。`timestamptz`被接受为`timestamp with time zone`的一种简写,这是一种PostgreSQL的扩展 ## 布尔类型 | 名称 | 存储格式 | 描述 | | --- | --- | --- | | boolean | 1 字节 | true/false | > true, 'true', 't', 'yes', 'y', '1' 都被视为真, false, 'false', 'f', 'no', 'n', '0' 都被视为假,并且都不区分大小写,且除了true 和false 外都是在字符串 ## 网络地址类型 | 名字 | 存储尺寸 | 描述 | | --- | --- | --- | | `cidr` | 7或19字节 | IPv4和IPv6网络 | | `inet` | 7或19字节 | IPv4和IPv6主机以及网络 | | `macaddr` | 6字节 | MAC地址 | | `macaddr8` | 8 bytes | MAC地址(EUI-64格式) | > inet和cidr类型之间的本质区别是inet接受右边有非零位的网络掩码, 而cidr不接受。例如,`192.168.0.1/24`对inet是有效的,但对cidr是无效的 示例 ``` create table ip_demo( id serial, ip cidr ) INSERT into ip_demo (ip) VALUES('192.168.0.128') ``` ## uuid 创建一个主键为uuid的表 ``` CREATE TABLE fruits ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, name VARCHAR NOT NULL ); ```