SSM+shiro等我们的日志

PostgreSQL学习笔记(四)数据类型(二)

2015-09-20  本文已影响699人  bruce_wu
类型 说明
char(n)/character(n) 固定长度非二进制字符串,不足补空白
varchar(n)/character varying(n) 变长非二进制字符串,有长度限制
text 变长非二进制字符串,无长度限制

在PostgreSQL中,这三种类型的字符串数据并没有明显的性能差别,而character(n)类型的数据因为固定长度导致更多的存储空间。所以,一般来说,推荐使用text或者character varying就行了。

create table tmp_str(ch char(4),vch varchar(4),txt text);
insert into tmp_str values ('ab','cd','efghijklmn');
create table tmp_array(name text,pay_by_quarter integer[5],schedule text[][]);

如上所示,一个数组类型是通过在数组元素类型名后面附加中括号([])来命名的。目前,PostgreSQL并不强制声明数组的长度,所以上述声明长度和不声明长度是一样的。特定元素类型的数组都被认为是相同的类型, 不管他们的大小或者维数。
数组类型的使用

#插入数据
insert into tmp_array values ('array test','{1,2,3}','{{"meeting", "lunch"}, {"training", "presentation"}}');
#查询
select name from tmp_array where pay_by_quarter[1] <> pay_by_quarter[2];
select pay_by_quarter[3] from tmp_array;

|数据类型|说明|长度|
|-||
|bytea|变长的二进制字符串|4字节加上实际的二进制字符串长度|
二进制字符串是一个字节序列。二进制字符串和普通字符字符串的区别有两个:

  1. 二进制字符串完全可以存储字节零值以及其它"不可打印的" 字节(定义在 32 到 126 范围之外的字节)。字符串不允许字节零值, 并且也不允许那些不符合选定的字符集编码的非法字节值或者字节序列。
  2. 对二进制字符串的处理实际上就是处理字节,而对字符串的处理则取决于区域设置。 简单说,二进制字符串适用于存储那些程序员认为是"原始字节"的数据, 而字符串适合存储文本。

|数据类型|说明|占用空间|
|-||
|boolean|true/false/unknown|1个字节(以t或f存储)
代表真和假的有效文本,真(true/t/yes/y/on/1) 假(false/f/no/n/off/0)

create table test1 (a boolean, b text);
insert into test1 values ('t','this value is true'),('off','this value is false');
上一篇下一篇

猜你喜欢

热点阅读