postgresql的数据类型

本文详细介绍了数据库中数值类型和字符类型的特性,包括smallint、integer、bigint、numeric、decimal、real、double precision等数值类型,以及character varying、character、text等字符类型的使用场景和性能考量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据类型

1、数值类型

数值类型由 2 字节、4 字节或 8 字节的整数以及 4 字节或 8 字节的浮点数和可选精度的十进制数组成。

类型名称Navicat中显示的名称描述
smallintint2定长,2字节,即二进制16位,十进制-32768 到 +32767
integerint4定长,4字节,即二进制32位,十进制-2147483648 到 +2147483647
bigintint8

定长,8字节,即二进制64位,十进制-9223372036854775808 到 +9223372036854775807

numericnumeric变长,精确,小数点前 131072 位;小数点后 16383 位
decimaldecimal变长,精确,小数点前 131072 位;小数点后 16383 位
realfloat4变长,不精确,4字节,6 位十进制数字精度
double precisionfloat8变长,不精确,8字节,15 位十进制数字精度
smallserialint2自增整数,Navicat中显示int2,同时默认规则变为:nextval('表名_id_seq'::regclass)
serialint4自增整数,Navicat中显示int4,同时默认规则变为:nextval('表名_id_seq'::regclass)
bigserialint8自增整数,Navicat中显示int8,同时默认规则变为:nextval('表名_id_seq'::regclass)

 

2、字符类型

名字描述
character varying(n), varchar(n)变长,有长度限制,n表示字符长度
character(n), char(n)定长,不足补空白,n表示字符长度
text变长,无长度限制,n表示字符长度

varchar不指定长度,可以存储最大长度10485760(1GB)的字符串,而char不指定长度,默认则为1。

text和varchar几乎无性能差别,区别仅在于存储结构的不同。

对于char的使用,应该在确定字符串长度的情况下使用,否则应该选择varchar或者text。

事实上,character(n)通常是这三个中最慢的,因为额外存储成本。在大多数情况下,应该使用text 或character varying。

 

注释:

定长:长度固定,用户不可以指定长度。

变长:长度不固定,用户可以指定长度。

bit:即位,音译为“比特”,表示二进制位。位是计算机内部数据储存的最小单位。一个二进制数据0或1,是1bit。

Byte:即字节,字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定1Byte=8bit。

字符:一个汉字、一个数字、一个字母都称为一个字符。

1,ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。

2,UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节。

3,Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节。

字:计算机进行数据处理时,一次存取、加工和传送的数据长度称为字(word)。

字长:指字的位数,即计算机CPU一次操作处理实际位数的多少。计算机的字长越大,其性能越优越。

 

 

PostgreSQL是一种强大的开源关系型数据库管理系统,它支持多种数据类型以适应各种应用场景。以下是PostgreSQL中常见的几种数据类型: 1. **数值类型**: - 整数类型:如`smallint`, `integer`, `bigint`等,表示整数。 - 浮点数类型:如`real`, `double precision`,用于存储实数。 - 数值精度可控的类型:`decimal`或`numeric`,允许精确的小数运算。 2. **字符字符串类型**: - `text`:无限制大小的文本字符串。 - `varchar(n)`或`char(n)`:可变长度的字符数组,最大长度由`n`指定。 - `character varying(n)`:可变长度的单字节字符数组。 - `bpchar`:固定长度的双字节字符数组。 3. **日期和时间类型**: - `date`:仅包含年月日信息。 - `time`:仅包含小时、分钟和秒。 - `timestamp`:包含了日期和时间信息。 - `timestamptz`:带有时区信息的时间戳。 4. **布尔类型**:`boolean`,用于真(true)和假(false)。 5. **枚举类型**:`enum`,用于预定义一组有限的值。 6. **二进制类型**:`bytea`,用于存储任意二进制数据。 7. **数组类型**:`array`,可以是上述任何数据类型的数组。 8. **复合类型**:自定义的数据结构,包括`record`(类似于结构体)和`hstore`(键值对存储)。 每种数据类型都有其特定用途,并可通过SQL语句创建表时指定字段的数据类型。根据实际需求选择合适的数据类型能提高查询性能和存储效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值