1、数据类型有哪些
1.1 数值类型
DECIMAL/NUMERIC 使用方法
DECIMAL是PostgreSQL中的一种数值数据类型,用于存储固定精度和小数位数的数值。DECIMAL的精度是由用户指定的,可以存储任何位数的数值,而小数位数则由用户自行定义。DECIMAL类型的值在存储时被截断或四舍五入到指定的小数位数。
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2)
);
在上面的示例中,我们创建了一个名为products的表,其中包含一个price列,其数据类型为DECIMAL,总共可以存储10位数值,其中有2位为小数。
1.2 字符类型
Postgresql提供了三种字符类型:char(n),varchar(n)和text,其中n是正整数。
类型 描述
char(n) 定长,空白填充
varchar(n) 可变长度限制
text,varchar 可变无限长度
总结:
varchar(没有n) = text
char(没有n) = char(1)
varchar(n)唯一好处是:当字符串超过n时会执行失败
PostgreSQL中三种字符类型没有性能差异,推荐用text或varchar,要求限制长度则用varchar(n)
1.3 日期/时间类型
下表演示了基本算术操作符的行为(+,*, 等):
1.4 布尔类型
PostgreSQL 支持标准的 boolean 数据类型。
boolean 有"true"(真)或"false"(假)两个状态, 第三种"unknown"(未知)状态,用 NULL 表示。
名称 存储格式 描述
boolean 1 字节 true/false
1.5 枚举类类型
创建枚举类类型
create type week as enum('Sun','Mon','Tues','Wed','Thur','Fri','Sat');
创建了一个名为week 的类型,包含'Sun','Mon','Tues','Wed','Thur','Fri','Sat'七类
创建表
create table duty(
person text,
weekday week //这里定义weekday字段的类型为week
);
插入数据
insert into duty values('April','Sun');
insert into duty values('Harris','Mon');
insert into duty values('Dave','Wed');
查询
select * from duty;
1.6 货币类型
select '12.14'::money
2、数据类型转换
2.1 ::显示转换
语法:字段名或数值::数据类型
-- 将文本'123'转为int8类型
SELECT
'123' :: int8 num;
-- 将文本类型字段t1转为int8类型
SELECT
t1 :: int8
from temp;
2.2 数据类型转换
语法:数据类型数值
-- 将文本'123'转为int8类型
SELECT
int8'123' num;
2.3 转换函数CAST转换
语法: cast(字段名或数值 as 数据类型)
-- 将文本'123'转为int8类型
SELECT
cast('123' as int4) num;
-- 将文本字段t1转为int类型
SELECT CAST( t1 AS INT ) t1_c
FROM
TEMP;