百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

详解PostgreSQL数据类型

xsobi 2024-12-01 05:36 1 浏览

字符类型

char(n), varchar(n) 和text。

char和varchar超出长度的字符都是空白,这种情况下该字串将被截断为最大长度。

如果没有长度声明,char等于char(1),而varchar则可以接受任何长度的字串。

数字类型

由2、4或8字节的整数以及4或8字节的浮点数和可选精度小数组成。

名字

存储尺寸

描述

范围

smallint

2字节

小范围整数

-32768 to +32767

integer

4字节

整数的典型选择

-2147483648 to +2147483647

bigint

8字节

大范围整数

-9223372036854775808 to +9223372036854775807

decimal

可变

用户指定精度,精确

最高小数点前131072位,以及小数点后16383位

numeric

可变

用户指定精度,精确

最高小数点前131072位,以及小数点后16383位

real

4字节

可变精度,不精确

6位十进制精度

double precision

8字节

可变精度,不精确

15位十进制精度

smallserial

2字节

自动增加的小整数

1到32767

serial

4字节

自动增加的整数

1到2147483647

bigserial

8字节

自动增长的大整数

1到9223372036854775807

serial:自增的int类型,自动创建了一个序列,把默认的值赋予下一个序列。当insert没有指定serial列的值时,则默认的从序列中取出值,并且将序列的值自动加1。

日期类型

名字

存储尺寸

描述

最小值

最大值

解析度

timestamp [ (p)][withouttimezone]

8字节

包括日期和时间(无时区)

4713 BC

294276 AD

1微秒 / 14位

timestamp [ (p)]withtimezone

8字节

包括日期和时间,有时区

4713 BC

294276 AD

1微秒 / 14位

date

4字节

日期(没有一天中的时间)

4713 BC

5874897 AD

1日

time [ (p)][withouttimezone]

8字节

一天中的时间(无日期)

0:00:00

24:00:00

1微秒 / 14位

time [ (p)]withtimezone

12字节

仅仅是一天中的时间,带有时区

00:00:00+1459

24:00:00-1459

1微秒 / 14位

interval [ fields][(p)]

16字节

时间间隔

-178000000年

178000000年

1微秒 / 14位

枚举(enum)类型

是由一个静态值的有序集合构成的数据类型,它们等效于很多编程语言所支持的enum类型。

枚举类型的一个例子可以是一周中的日期,或者一个数据的状态值集合。

枚举类型可以使用CREATE TYPE命令创建。

一旦被创建,枚举类型可以像很多其他类型一样在表和函数定义中使用。

一个枚举类型的值的排序是该类型被创建时所列出的值的顺序。

几何类型

名字

存储尺寸

表示

描述

point

16字节

平面上的点

(x,y)

line

32字节

无限长的线

{A,B,C}

lseg

32字节

有限线段

((x1,y1),(x2,y2))

box

32字节

矩形框

((x1,y1),(x2,y2))

path

16+16n字节

封闭路径(类似于多边形)

((x1,y1),...)

path

16+16n字节

开放路径

[(x1,y1),...]

polygon

40+16n字节

多边形(类似于封闭路径)

((x1,y1),...)

circle

24字节

<(x,y),r> (center point and radius)

网络地址类型

名字

存储尺寸

描述

cidr

7或19字节

IPv4和IPv6网络

inet

7或19字节

IPv4和IPv6主机以及网络

macaddr

6字节

MAC地址

位串类型

位串就是一串1和0的字串,可以用于存储和视觉化位掩码。

有两种类型的SQL位类型:bit(n)和bit varying(n); n是一个正整数。

  • bit类型的数据必须准确匹配长度n; 试图存储短些或者长一些的数据都是错误的。
  • 类型bit varying数据是最长n的变长类型;更长的串会被拒绝。
  • 写一个没有长度的bit等效于bit(1),没有长度的bit varying相当于没有长度限制。

数组类型

1、任何基本类型 (不是组合类型或域) 可以用作数组,只要在类型后面加一个中括号 ([]) 。

创建一个二维数组如下:

CREATE TABLE a(a int[][5]);

PG不强制要求定义数组大小,甚至维数也可以不定义。所有的数组作为type[].

ANSI 语法只支持一维数组,并且需要定义数组大小:

CREATE TABLE a(a int ARRAY[5]);

Arrays 可以为 NULL, 但数组内的元素不能为null。

2、不限长度:int[]和int[10]都不会限定元素个数。

不限维度:int[]和int[][]效果是一样的,都可以存储任意维度的数组。

矩阵强制:多维数组中,同一个维度的元素个数必须相同。

元素强制:元素类型必须一致。

3、扩展:

  • 一维数组支持prepend(往前追加),append(往后追加),cat(两个数组合并)操作。
  • 二维数组仅支持cat操作:array_append、array_prepend、array_cat。
  • subscript:数组的下标,默认是从1开始编号,除非赋值的时候强制指定subscript。

文本搜索类型

PostgreSQL提供两种数据类型,它们被设计用来支持全文搜索。

  • tsvector类型:表示一个为文本搜索优化的形式下的文档,去除重复分词后按分词顺序存储可以存储位置信息和权重信息。
  • tsquery类型:表示一个文本查询,存储查询的分词,可存储权重信息。

XML类型

XML数据类型可以被用来存储XML数据。

XML数据类型比直接在一个text域中存储XML数据的优势在于:

  • 会检查输入值的结构是不是良好;
  • 有支持函数用于在其上执行类型安全的操作。

使用这种数据类型要求在安装时用configure --with-libxml选项编译。


墨天轮原文链接:https://www.modb.pro/db/150306?sjhy(复制链接至浏览器或点击文末阅读原文查看)

关于作者

陈家睿,云和恩墨MySQL技术顾问,拥有MySQL OCP、PGCE、OBCA、SCDP证书,长期服务于电信行业。现负责公司MySQL数据库、分布式数据库运维方面的技术工作;热衷于运维故障处理、备份恢复、升级迁移、性能优化的学习与分享。

相关推荐

【互联网那些事】高效开发Android App的10个建议

  假如要GooglePlay上做一个最失败的案例,那最好的秘诀就是界面奇慢无比、耗电、耗内存。接下来就会得到用户的消极评论,最后名声也就臭了。即使你的应用设计精良、创意无限也没用。  耗电或者内存...

手机APP开发方式有哪些? 手机app的开发模式有哪三种?

微信小程序开发定制_软件开发_APP开发_网站制作-优软软件开发...

Android开发入门(一):Android系统简介

Android系统是Google公司在2008年推出的一款智能移动设备操作系统,通过不断地版本迭代,目前已经推出到Android11版本了。Android系统广泛应用在手机、平板、电视等各种电子设...

物联网app开发流程 物联网app开发工具

现在随着科技的发展,很多产品都想用一个手机app去显示他的参数数据或者通过手机app去控制它。但是很多人不知道他的流程。今天我就来说下物联网app开发流程。首先需要把物联网app开发流程分2个步骤,一...

Android开发进阶 | 如何学习 Android Framework?

大部分有“如何学习Framework源码”这个疑问的,应该大都是应用层开发。应用层是被Framework层调用执行的,知道自己的代码是怎么被调用的,才能理解程序的本质,理解本质有助于解决遇到的...

快速实现APP混合开发(Hybrid App开发)攻略

前言:...

三个阶段带你了解一款app开发的完整流程

第一个阶段需求阶段:1.需求讨论--开发类型、开发平台、具体的产品功能需求、项目预计完成时间、预算2.需求评估--确认合作后评估具体的预算3.界面设计--设计部门进行产品界面设计,形成效果图...

Android 开发中文引导-应用小部件

应用小部件是可以嵌入其它应用(例如主屏幕)并收到定期更新的微型应用视图。这些视图在用户界面中被叫做小部件,并可以用应用小部件提供者发布。可以容纳其他应用部件的应用组件叫做应用部件的宿主(1)。下面的截...

手机软件开发从零开始【Android第2篇Hello】

Hello,朋友们我们又见面了。上一篇我们讲到了《Android开发环境搭建【Android基础第1篇】》,错过的朋友可以点击文章末尾的“阅读原文”查看。另外需要下载JDK和ADT-bundle工具的...

「全栈工程师之梦的开始--安卓开发(二)」开发安卓app

在配置好jdk开发环境、安装好开发工具Androidstudio后,我们就可以开始开发安卓app了。首先,我们需要先了解下android的术语。...

二、Android界面开发 android 开发

学习目标了解Android常用布局了解Android常用控件...

如何开发一款APP既快捷也简便 开发一款app的步骤

具体较为简单的步骤可以选择用androidstudio开发app1、打开软件,在菜单中选择file-》newproject打开创建向导。2、配置项目,确定各个名称和存放项目的存放路径;Applic...

安卓开发中的“Android高手”,需要具备哪些技术?

前言成为一名安卓开发者很容易,但是要成为一名“Android高手”却不那么容易;...

移动开发(一):使用.NET MAUI开发第一个安卓APP

对于工作多年的C#程序员来说,近来想尝试开发一款安卓APP,考虑了很久最终选择使用.NETMAUI这个微软官方的框架来尝试体验开发安卓APP,毕竟是使用VisualStudio开发工具,使用起来也...

微软推出PowerApps:零基础开发Win10/iOS/安卓企业应用

IT之家讯微软今天面向企业宣布了全新的应用开发解决方案PowerApps,让Windows(包括Win10)、iOS以及安卓应用的开发和分发变得更加简单。PowerApps的用户界面与Office办...