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类型 参考资料 官方数据类型参考文档: https://www.postgresql.org/docs/9.5/static/datatype.html 总结以上是内存溢出为你收集整理的PostgreSQL中的数据类型全部内容,希望文章能够帮你解决PostgreSQL中的数据类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)