postgresql mysql数据类型_postgres数据库之数据类型

字符串类型

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字节加上实际的二进制字符串长度|

二进制字符串是一个字节序列。二进制字符串和普通字符字符串的区别有两个:

二进制字符串完全可以存储字节零值以及其它"不可打印的" 字节(定义在 32 到 126 范围之外的字节)。字符串不允许字节零值, 并且也不允许那些不符合选定的字符集编码的非法字节值或者字节序列。

对二进制字符串的处理实际上就是处理字节,而对字符串的处理则取决于区域设置。 简单说,二进制字符串适用于存储那些程序员认为是"原始字节"的数据, 而字符串适合存储文本。

布尔类型

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');

二 . 如何选择数据类型

1 . 整数与浮点数

整数 : 不需要小数部分

浮点数 : 需要小数部分

2 . 日期与时间类型

time : 时间

date : 日期

timestamp : 日期 + 时间

3 . char 和 varacter 的特点选择

char : 固定长度字符

varacter : 可变长度字符

三 . 常见运算符

1 . 运算符

(1) . 算术运算符

+         -         /       *           %(求余)

b1c962e67b4b568d5f8f9ae2cdc2d95e.png

(2) . 比较运算符

>       <        >=           <=        !=   IN      LIKE       LEAST       BENTWEEN  AND    GREATEST

6df4a26f05a921eb17dd2955b69b7eb1.png

(3) . 逻辑运算符

TRUE      FALSE     AND     OR    NOT

baa0593f0496dc36727c11179a7e6511.png

f58f7b358fb493082efc57d0267b8920.png

总结 :

841083ebf72edbfb92038d1abf3bd6f9.png

(4) . 位运算符

&        |         ~         ^          <<               >>

44d327bac95b89e9b197b9094cfe10b6.png

2 . 规则

①、 如果有一个或是两个参数为null,那么比较的结果为空;

②、若同一个运算符中两个参数都是字符串,那么比较结果按照字符串进行比较;

③、如果两个参数均为整数,那么在比较的时候会按照整数类型来比较;

④、如果一个字符串和数值类型进行比较,那么PostgreSQL数据库会自动将字符串类型转换成数值进行比较。

f1c46ed70fd145e931bc546d0b6c37d7.png

运算符的优先级:

ad63a4bac79f919e794e7ba2eb37ce36.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值