数据类型

postgresql的数据类型比其他数据库类型多,有:

布尔类型,数值类型,字符类型,二进制数据类型,位串类型,日期和时间类型,枚举类型,几何类型,网络地址类型,数组类型,xml类型,json类型,range类型,对象标识符类型,伪类型,其他类型;

类型输入和转换:对于一下简单类型,如数字及字符串,使用通常的方法输入就可以了:

 

select 1, 1.23, 'abc';

对于复杂类型的数据,可以使用类型名 加上单引号把类型的值格式输入:

 

select bit '100011';

其实简单类型也可以那样输入:

 

select int '1' + int '2'; # 3

Postgresql 支持使用标准的SQL的类型转换函数CAST进行类型转换:

 

select cast('5' as int) ,cast('2000-10-15' as date);

# int 5 , date 2000-10-15

还有一种更加简介的转换类型方式,双冒号的方式:

 

select '5'::int, '2000-10-15'::date;

详细说明数据类型的使用:

1).布尔类型(true,false); 不分大小写,也可以是包括字符串'y', 'yes', 'n', 'no'这些字符串类型

 

create table t1(id int, col1 boolean, col2 text);

insert into t1(1, true, 'true');

insert into t1(2, false, 'false');

insert into t1(3, TruE, 'truE');

insert into t1(4, 'y', 'y');

2).数值类型

类型名称

存储空间

描述

smallint

2字节

小范围整数

int或integer

4字节

常用类型

bigint

8字节

大范围整数

numeric或decimal

变长

用户申明的精度

real

4

变精度,不精确

double precision

8

变精度,不精确

serial

4

自增整数

bigserial

8

大范围的自增整数

重点讲下精确的小数类型:numeric,numeric(m,n), numeric(m)的表示方法;

其中m为精度(也就时说长度,包括小数点后面的数),n为小数点后的个数;

numeric, 不写精度,可以包括任何数字,但不能大于系统所表示的范围;

如:

numeric 可以表示任何类型的数;

numeric(3,2); 表示:小数部分要保留2位有效数字,3 表示长度,也包括小数点的位数,这里,不能大于3位数的数字,否则就会溢出;3.18(true),30.18(false),30(false)

numeric(3) 等于numeric(3,0)

3).浮点数类型(float, double),精确度不高的类型;

需要注意的事项:2个浮点数比较,可能得不到自己想要的结果

除了普通的数值之外,还有几个特殊的值:

Infinity 表示无穷大;

-Infinity 无穷小;

NaN 不是一个数字

4).序列类型(serial 和 bigserial),和Mysql的自增类型一样auto_increment,Postgresql 是通过序列sequence实现的,和Oracle;

下面的一个语句:

 

create table t (id serial);

等价于下面几句语句:

 

create sequence t_id_seq;

create table t(id integer not null default nextval('t_id_seq') );

alter sequence t_id_seq owned by t.id;

5).货币类型:(money type )可以存储固定小数的货币数目,与浮点数类型不同。他是完全保证精度的,其输出格式与参数(lc_monetary)设置有关,不同的国家的货币输出方式不同。

 

select '123.35'::money;

6).数学函数和操作符

7,字符串类型(varchar,char,text)

类型名称

描述

character varying(n) 简写varchar(n)

存储空间:4+实际的字符串长度;最大能存储1G字节

character(n)简写char(n)

定长,不够补空白,1G

text

变长,无限长度

直接写char,默认为char(1), varchar 不带参数,默认接受任何长度的字符串,不带长度说明的时Postgresql的扩展,其他数据库不能这样做;

在其他数据库中char定长字符串可能有性能上的优势,但在Postgresql中和varchar没有差别,使用基本上都使用varchar和text

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

book_longker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值