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

  • 字符串类型
    PostgreSQL中字符串类型指 char、varchar和text。
类型 说明
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');
  • 数组类型
    PostgreSQL允许将字段定义成变长的多维数组, 数组类型可以是任何基本类型或用户定义类型。
    为说明这些用法,我们先创建一个由基本类型数组构成的表
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;
  • 二进制类型
    PostgreSQL提供了bytea类型,用来存储二进制字符串

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

  1. 二进制字符串完全可以存储字节零值以及其它"不可打印的" 字节(定义在 32 到 126 范围之外的字节)。字符串不允许字节零值, 并且也不允许那些不符合选定的字符集编码的非法字节值或者字节序列。
  2. 对二进制字符串的处理实际上就是处理字节,而对字符串的处理则取决于区域设置。 简单说,二进制字符串适用于存储那些程序员认为是"原始字节"的数据, 而字符串适合存储文本。
  • 布尔类型
    PostgreSQL支持SQL标准的 boolean数据类型。 boolean只能有 true/false/unknown(用NULL表示)三种状态。

|数据类型|说明|占用空间|
|-||
|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');
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,183评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,986评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • Day7. 老师今天抛出了一个现象:问什么面对同样的问题,不同的人有截然相反的解决方案? 我认为这都是因为认知的差...
    任雨点阅读 150评论 0 0
  • 不知道是什么原因,自感冒第二天孩子脾气又不太好了,似乎又回到了原点,我也一直按照之前的做法,没有急躁,没有焦虑,而...
    兰州李慧阅读 308评论 4 2