当前位置:   article > 正文

PostgreSQL数据类型和运算符_postgresql float

postgresql float

PostgreSQL数据类型和运算符

在这里插入图片描述

1.PostgreSQL基本数据类型介绍

在这里插入图片描述

1.整数类型
常用的类型是integer,因为它提供了在范围、存储空间和性能之间的最佳平衡。
一般只有在磁盘空间紧张的时候才使用 smallint类型。
而只有在integer的范围不够的时候才使用bigint
  • 1
  • 2
  • 3
2.浮点数类型
数据类型realdouble precision是不精确的、变精度的数字类型。这些类型是IEEE标准 754 二进制浮点算术(分别对应单精度和双精度)的实现.
不准确意味着一些值不能准确地转换成内部格式并且是以近似的形式存储的,因此存储和检索一个值可能出现一些缺失。 
如果你要求准确的存储和计算(例如计算货币金额),应使用numeric类型。

除了普通的数字值之外,浮点类型还有几个特殊值:
Infinity  正无穷大
-Infinity  负无穷大
NaN  不是一个数字
这些分别代表 IEEE 754 特殊值“infinity”、“negative infinity”以及“not-a-number”, 如果在 SQL 命令里把这些数值当作常量写,你必须在它们周围放上单引号,例如UPDATE table SET x = '-Infinity'。 在输入时,这些字符串是以大小写不敏感的方式识别的。

PostgreSQL还支持 SQL 标准表示法floatfloat(p)用于声明非精确的数字类型。在这里,p指定以二进制位表示的最低可接受精度。 
在选取real类型的时候,PostgreSQL接受float(1)float(24),在选取double precision的时候,接受float(25)float(53)。
在允许范围之外的p值将导致一个错误。没有指定精度的float将被当作是double precision
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
3.任意精度类型
类型numeric可以存储非常多位的数字。我们特别建议将它用于货币金额和其它要求计算准确的数量。类型decimalnumeric是等效的。
NUMERIC(precision, scale)
一个numericprecision(精度)是整个数中有效位的总数,也就是小数点两边的位数。numeric的scale(刻度)是小数部分的数字位数,也就是小数点右边的部分。因此数字 23.5141 的精度为6而刻度为4
  • 1
  • 2
  • 3
smallserial、serial和bigserial类型不是真正的类型,它们只是为了创建唯一标识符列而存在的方便符号(类似其它一些数据库中支持的AUTO_INCREMENT属性)。
  • 1
4.日期和时间类型

在这里插入图片描述

时间格式:'10:20:05''102005'都可以被正确解析
日期格式:'2021-03-20''20210320''210320'都可以被正确解析

返回系统当前日期和时间:
CURRENT_TIME
CURRENT_DATE
NOW() 返回日期和时间 时区,会仅把对应的部分填入字段中。

timetimestampinterval接受一个可选的精度值 p,这个精度值声明在秒域中小数点之后保留的位数。缺省情况下,在精度上没有明确的边界。p允许的范围是从 06
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
5.字符类型

在这里插入图片描述
在这里插入图片描述

如果要存储的串比声明的长度短,类型为character的值将会用空白填满;而类型为character varying的值将只是存储短些的串。
varchar(n)char(n)的概念分别是character varying(n)character(n)的别名。没有长度声明词的character等效于character(1)。如果不带长度说明词使用character varying,那么该类型接受任何长度的串。

类型character的值物理上都用空白填充到指定的长度n, 并且以这种方式存储和显示。不过,拖尾的空白被当作是没有意义的,并且在比较两个 character类型值时不会考虑它们。
请注意,在character varyingtext值里, 结尾的空白语意上是有含义的,并且在使用模式匹配(如LIKE和正则表达式)时也会被考虑。
  • 1
  • 2
  • 3
  • 4
  • 5
6.二进制类型

在这里插入图片描述

bytea类型支持两种用于输入和输出的格式:“十六进制”格式和PostgreSQL的历史的“转义”格式。在输入时这两种格式总是会被接受。输出格式则取决于配置参数bytea_output,其默认值为十六进制(注意十六进制格式是在PostgreSQL 9.0中被引入的,早期的版本和某些工具无法理解它)。

十六进制格式和很多外部应用及协议相兼容,并且其转换速度要比转义格式更快,因此人们更愿意用它。
  • 1
  • 2
  • 3
7.布尔类型

在这里插入图片描述

8.数组类型
CREATE TABLE sal_emp (
    name            text,
    pay_by_quarter  integer[],
    schedule        text[][]
);
一个数组数据类型可以通过在数组元素的数据类型名称后面加上方括号([])来命名
声明长度和不声明长度一样
默认情况下,PostgreSQL为数组使用了一种从1开始的编号习惯,即一个具有n个元素的数组从array[1]开始,结束于array[n]。

任何数组值的当前维度可以使用array_dims函数获得。
array_length将返回一个指定数组维度的长度:array_length(字段名, 1)
cardinality返回一个数组中在所有维度上的元素总数,这实际上是调用unnest将会得到的行数:cardinality(字段名)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
2.常见运算符介绍
1.算数运算符
	+
	-
	*
	/
	%
2.比较运算符
	=
	!= (<> )
	<=
	>=
	<
	>
	least(x1,x2,...,xn) 返回其中的最小值 
	greatest(x1,x2,...,xn) 返回其中的最大值 
	between x and y   表示[x,y]范围
	in
	not in 
	
3.逻辑运算符
	not
	and
	or
4.位操作运算符
	&
	|
	~
	^
	<<
	>>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/399966
推荐阅读
相关标签
  

闽ICP备14008679号