加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL中的数据类型

发布时间:2020-12-13 17:04:23 所属栏目:百科 来源:网络整理
导读:PostgreSQL中的数据类型 PostgreSQL中的数据类型 概述 数据的输入和类型转换 数据类型详解 整型 布尔类型 字符类型 时间类型 枚举类型 money类型 bytea类型 数组类型 其它类型 参考资料 概述 PostgreSQL支持丰富的数据类型,从简单数据类型int、char varying

PostgreSQL中的数据类型


      • PostgreSQL中的数据类型
        • 概述
        • 数据的输入和类型转换
        • 数据类型详解
          • 整型
          • 布尔类型
          • 字符类型
          • 时间类型
          • 枚举类型
          • money类型
          • bytea类型
          • 数组类型
          • 其它类型
        • 参考资料

概述


PostgreSQL支持丰富的数据类型,从简单数据类型int、char varying(n)、date等类型,到复杂的xml、json、range类型,在数据库中支持的数据类型可谓独树一帜,那么学习PostgreSQL最重要的问题之一就应该是熟悉其数据类型,本文将从数据类型的使用角度对PostgreSQL的数据类型进行详细的讲述,统计了PostgreSQL中有41种数据类型。

数据的输入和类型转换


在正式学习PostgreSQL的数据类型之前,我们先来看一下怎么在SQL语句中输入相应的数据类型。

  • 简单数据类型 直接输入
    看下面的例子:
$ select 1+2 ;
  • 复杂数据类型 数据类型 ‘对应类型的值’
    看下面的例子:
$ select date '2016/7/17' ;
  • 风格统一的数据输入方式
    不论是简单的数据类型还是复杂的数据类型,我们都采用:数据类型 '对应数据类型的值'格式来输入数据。

看下面的例子:

$ select int '1' + int '2' ;
  • PostgreSQL中的数据类型转换
    PostgreSQL中支持使用SQL标准的强制类型转换函数CAST进行类型转换。看下面的例子:
$ select CAST('5' as int),CAST('2016/7/17' as date) ;  #将'5'转换为int类型准确的讲是int4类型 将'2016/7/17'转换为日期类型

数据类型详解


在数据库中处理数据,最重要的部分就是对不同数据类型的处理,这个部分是PostgreSQL中最重要的部分之一,应该认真的掌握其中的内容。

整型

这是所有的编程语言中最简单、最常用的数据类型,在我们平时的编程中使用的最多,在此不再详述。

布尔类型

和任何语言中的布尔数据类型一样,在PostgreSQL中的不忍类型的取值也为true或者false,当然如果处于未知的状态使用NULL表示,boolean在SQL中可以用不带引号的TRUE或者FALSE表示,也可以使用更多的表示真和假的带引号的字符表示如’true’、’false’、’yes’、’no’、’t’、’f’、’y’、’n’、’TruE’、’tRUe’、’on’、’off’等等来表示,布尔类型可采用的值是有限的,具体请参见文档: https://www.postgresql.org/docs/9.5/static/datatype-boolean.html 。在PostgreSQL数据库中布尔类型是三值的布尔逻辑,三值分别为:TRUE、FALSE、NULL,其中NULL代表的是UNKNOWN,布尔类型在底层存储时占一个字节

字符类型

在PostgreSQL中字符类型有三种,分别是:varchar(n)、char(n)、text(最多存储1GB的数据),在前面的两种类型中n分别指的是存储的字符的个数,不是字节数,一定要注意,这点和Oracle中是不同的,比如下面的例子:

create table test(name varchar(4));
insert into test values('朱君鹏呀');
insert into test values('zjp1');  #对于上面的两种情况,实际上在存储时存储的字节数一定是不同的,但是在PostgreSQL中计算的是存储的字符数,对于插入的这两个值,全部都是4个字符,但是字节数肯定是不同的。

结论:在PostgreSQL中,我们在SQL语句中可用的字符类型,其中n的大小全部指的是字符的个数,而不是存储的字节的个数,一定要注意。

时间类型

  • timestamp without time zone
  • timestamp with time zone
  • time without time zone
  • time with time zone
  • date
  • interval(时间间隔类型)
枚举类型

在各种编程语言中,枚举类型在限制类型取值时是最好的选择,下面将简单的介绍枚举类型的使用。

$ create type 枚举类型名称 as ENUM('值1','值2'...);  #枚举类型的值不能超过63个字符
$ create table test(属性 枚举类型); $ insert into test values('值1');  #正确
$ insert into test values('非枚举类型值'): #只能插入在定义枚举类型时限定的值,error:Invalid value $ alter type 枚举类型名称 add value '增加的枚举类型值' before[after] '已经存在的某个枚举类型' #向已经定义的枚举类型中增加可选的值,但是目前PostgreSQL中语法还不支持删除枚举值的操作,可参考: http://pgguide.lxneng.com/sexy/enums.html $ select t.typname,e.enumlabel from pg_type t,pg_enum e where t.oid = e.enumtypid;   #列出所有的你定义的枚举类型和该类型的取值,这个命令是通用的查看枚举类型和值得SQL语句
money类型

只是在字符的前面加了一个$或者¥符号而已,不要以为它有多么的神奇。

bytea类型

参见官方文档 https://www.postgresql.org/docs/9.0/static/datatype-binary.html , 在平时我们可能用的不是很多。

数组类型

在PostgreSQL中的数组类型不限长度也不限制维度,该类型被作为数学中的矩阵,非常重要的类型。参考: http://blog.163.com/digoal@126/blog/static/163877040201201275922529/

其它类型

  • 几何类型
  • 网络地址类型
  • bit类型
  • 全文检索类型
  • xml类型
  • uuid类型

参考资料


  1. 官方数据类型参考文档: https://www.postgresql.org/docs/9.5/static/datatype.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读