数值类型
PostgreSQL 提供了多种数值类型,使得用户可以根据具体的应用需求选择最合适的类型。合理选择数值类型有助于提高数据库性能、减小存储开销,并确保数据的准确性和完整性。在设计数据库时,需要仔细考虑数据的特性和业务需求,选择最适合的数值类型。
数据类型 | 别名 | 说明 | 范围 |
---|---|---|---|
smallint | int2 | 有符号2字节整数 | -32768 到 +32767 |
integer | int、int4 | 有符号4字节整数 | -2147483648 到 +2147483647 |
bigint | int8 | 有符号8字节整数 | -9223372036854775808 到 +9223372036854775807 |
decimal(p,s) | 可选精度的精确数字 | 小数点前 131072 位;小数点后 16383 位 | |
numeric(p,s) | 可选精度的精确数字 | 小数点前 131072 位;小数点后 16383 位 | |
real | float4 | 单精度浮点数(4字节) | 6 位十进制数字精度 |
double precision | float8 | 双精度浮点数(8字节) | 15 位十进制数字精度 |
smallserial | serial2 | 自增2字节整数 | 1 到 32767 |
serial | serial4 | 自增4字节整数 | 1 到 2147483647 |
bigserial | serial8 | 自增8字节整数 | 1 到 9223372036854775807 |
create table demoint(id1 numeric(3),id2 numeric(3,0),id3 numeric(3,2),id4 numeric);
\d demoint
insert into demoint values(3.1,3.5,3.123,3.123);
select * from demoint;
insert into demoint values(3.1,3.5,13.123,3.123);
若字段声明了标度,超过小数点位数的标度会自动4舍5入后进行存储。而对于既没有声明精度也没有声明标度的number类型来说,则会原样存储。
对于声明了精度的数值,如果INSERT语句插入的数值超出声明的精度范围,则会报错。
# 序列
CREATE TABLE demoserial (id SERIAL,col1 int);
insert into demoserial(col1) values(1);
insert into demoserial(col1) values(2);
insert into demoserial(col1) values(3);
select * from demoserial;
相关函数
- 绝对值函数ABS(x)
# 求2,-3.3和-33的绝对值
SELECT ABS(2), ABS(-3.3), ABS(-33);
- 圆周率函数PI()
SELECT pi();
- 平方根函数SQRT(x)
# 求9,40的二次平方根
SELECT SQRT(9), SQRT(40);
- 求余函数MOD(x,y)
* 对MOD(31,8),MOD(234, 10),MOD(45.5,6)进行求余运算
SELECT MOD(31,8),MOD(234, 10),MOD(45.5,6);
- 获取整数的函数CEIL(x)、CEILING(x)(向上取整)
* 使用CEIL和CEILING函数返回最小整数
SELECT CEIL(-3.35),CEILING(3.35);
- FLOOR(x)返回不大于x的最大整数值(向下取整)
SELECT FLOOR(-3.35), FLOOR(3.35);
- 四舍五入函数ROUND(x)和ROUND(x,y)
# 使用ROUND(x)函数对操作数进行四舍五入操作
SELECT ROUND(-1.14),ROUND(-1.67), ROUND(1.14),ROUND(1.66);
# 使用ROUND(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位
SELECT ROUND(1.38, 1), ROUND(1.38, 0), ROUND(232.38, -1), ROUND (232.38,-2);
- 符号函数SIGN(x)
SELECT SIGN(-21),SIGN(0), SIGN(21);
- 幂运算函数POW(x,y)、POWER(x,y)和EXP(x)
# 使用POW和POWER函数进行乘方运算
SELECT POW(2,2), POWER(2,2),POW(2,-2), POWER(2,-2);
# 使用EXP函数计算e的乘方
SELECT EXP(3),EXP(-3),EXP(0);
- 对数运算函数LOG(x)
SELECT LOG(3);
- 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)
# 使用RADIANS将角度转换为弧度
SELECT RADIANS(90),RADIANS(180);
# 使用DEGREES将弧度转换为角度
SELECT DEGREES(PI()), DEGREES(PI() / 2);
- 正弦函数SIN(x)和反正弦函数ASIN(x)
# 使用SIN函数计算正弦值
SELECT SIN(1), ROUND(SIN(PI()));
# 使用ASIN函数计算反正弦值
SELECT ASIN(0.8414709848078965);
- 余弦函数COS(x)反余弦函数ACOS(x)
# 使用COS函数计算余弦值
SELECT COS(0),COS(PI()),COS(1);
# 使用ACOS计算反余弦值
SELECT ACOS(1),ACOS(0), ROUND(ACOS(0.5403023058681398));
- 正切函数、反正切函数和余切函数
# 使用TAN函数计算正切值
SELECT TAN(0.3), ROUND(TAN(PI()/4));
# 使用ATAN函数计算反正切值
SELECT ATAN(0.30933624960962325), ATAN(1);
# 使用COT()函数计算余切值
SELECT COT(0.3), 1/TAN(0.3),COT(PI() / 4);
PostgreSQL 数值类型的多样性使得用户能够根据具体的数据需求灵活选择。在设计数据库时,考虑数据的特性、存储要求以及对精度和性能的需求,选择最合适的数值类型是确保数据质量和性能的重要一环。
最后修改时间:2023-12-07 09:15:10
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。