赞
踩
常用的类型是integer,因为它提供了在范围、存储空间和性能之间的最佳平衡。
一般只有在磁盘空间紧张的时候才使用 smallint类型。
而只有在integer的范围不够的时候才使用bigint。
数据类型real和double precision是不精确的、变精度的数字类型。这些类型是IEEE标准 754 二进制浮点算术(分别对应单精度和双精度)的实现.
不准确意味着一些值不能准确地转换成内部格式并且是以近似的形式存储的,因此存储和检索一个值可能出现一些缺失。
如果你要求准确的存储和计算(例如计算货币金额),应使用numeric类型。
除了普通的数字值之外,浮点类型还有几个特殊值:
Infinity 正无穷大
-Infinity 负无穷大
NaN 不是一个数字
这些分别代表 IEEE 754 特殊值“infinity”、“negative infinity”以及“not-a-number”, 如果在 SQL 命令里把这些数值当作常量写,你必须在它们周围放上单引号,例如UPDATE table SET x = '-Infinity'。 在输入时,这些字符串是以大小写不敏感的方式识别的。
PostgreSQL还支持 SQL 标准表示法float和float(p)用于声明非精确的数字类型。在这里,p指定以二进制位表示的最低可接受精度。
在选取real类型的时候,PostgreSQL接受float(1)到float(24),在选取double precision的时候,接受float(25)到float(53)。
在允许范围之外的p值将导致一个错误。没有指定精度的float将被当作是double precision。
类型numeric可以存储非常多位的数字。我们特别建议将它用于货币金额和其它要求计算准确的数量。类型decimal和numeric是等效的。
NUMERIC(precision, scale)
一个numeric的precision(精度)是整个数中有效位的总数,也就是小数点两边的位数。numeric的scale(刻度)是小数部分的数字位数,也就是小数点右边的部分。因此数字 23.5141 的精度为6而刻度为4。
smallserial、serial和bigserial类型不是真正的类型,它们只是为了创建唯一标识符列而存在的方便符号(类似其它一些数据库中支持的AUTO_INCREMENT属性)。
时间格式:'10:20:05'和 '102005'都可以被正确解析
日期格式:'2021-03-20' 和 '20210320' 和 '210320'都可以被正确解析
返回系统当前日期和时间:
CURRENT_TIME
CURRENT_DATE
NOW() 返回日期和时间 时区,会仅把对应的部分填入字段中。
time、timestamp和interval接受一个可选的精度值 p,这个精度值声明在秒域中小数点之后保留的位数。缺省情况下,在精度上没有明确的边界。p允许的范围是从 0 到 6。
如果要存储的串比声明的长度短,类型为character的值将会用空白填满;而类型为character varying的值将只是存储短些的串。
varchar(n)和char(n)的概念分别是character varying(n)和character(n)的别名。没有长度声明词的character等效于character(1)。如果不带长度说明词使用character varying,那么该类型接受任何长度的串。
类型character的值物理上都用空白填充到指定的长度n, 并且以这种方式存储和显示。不过,拖尾的空白被当作是没有意义的,并且在比较两个 character类型值时不会考虑它们。
请注意,在character varying和text值里, 结尾的空白语意上是有含义的,并且在使用模式匹配(如LIKE和正则表达式)时也会被考虑。
bytea类型支持两种用于输入和输出的格式:“十六进制”格式和PostgreSQL的历史的“转义”格式。在输入时这两种格式总是会被接受。输出格式则取决于配置参数bytea_output,其默认值为十六进制(注意十六进制格式是在PostgreSQL 9.0中被引入的,早期的版本和某些工具无法理解它)。
十六进制格式和很多外部应用及协议相兼容,并且其转换速度要比转义格式更快,因此人们更愿意用它。
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.比较运算符 = != (或 <> ) <= >= < > least(x1,x2,...,xn) 返回其中的最小值 greatest(x1,x2,...,xn) 返回其中的最大值 between x and y 表示[x,y]范围 in not in 3.逻辑运算符 not and or 4.位操作运算符 & | ~ ^ << >>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。