PostgreSQL中的数据类型

前端之家收集整理的这篇文章主要介绍了PostgreSQL中的数据类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Postgresql中的数据类型



概述


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

数据的输入和类型转换


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

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

看下面的例子:

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

数据类型详解


数据库中处理数据,最重要的部分就是对不同数据类型的处理,这个部分是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个字符,但是字节数肯定是不同的。@H_404_81@ 
 

结论:在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语句@H_404_81@ 
 
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
原文链接:https://www.f2er.com/postgresql/194426.html

猜你在找的Postgre SQL相关文章