Postgresql学习笔记之——数据类型概括

在学习Postgresql前先了解一下它所支持的数据类型,以便于了解如何在数据库中存储数据。
一、Postgresql数据库支持很多类型,大概分类有如下几种:

分类名称说明与其他数据库对比
布尔类型支持标准的boolean数据类型与mysql的BOOL、BOOLEAN类型相同,占用空间为1字节
数值类型整数类型有2字节的smallint、4字节的int、8字节的bigint。十进制精确类型有numeric,浮点类型有real、double precision。还有8字节的货币类型 money无mysql的unsigned整数类型,也没有1字节长度的tinyint整数类型和3字节长度的mediumint整数类型
字符类型有varchar(n)、char(n)、text三种类型Postgresql中的varchar最大可以存储1GB,mysql中最大只能是64KB,而text类型相当于mysql中的LONGTEXT类型
二进制类型只有一种bytea对应mysql的BLOB、LONGBLOB类型
位串类型位串就是一串1和0的字符串,有bit(n)、bit varying(n)两种其他数据库没有此类型
日期和时间类型有date、time、timestamp,而time和timestamp又分是否包括时区的两种类型在Postgresql中可以精确到秒以下,如毫秒。mysql中只能精确到秒
枚举类型枚举类型是一种包含一系列有序静态值集合的数据类型,等于某些编程语言中的enum类型Postgresql使用枚举类型前需要先使用create type 创建这个类型。mysql中也有枚举类型ENUM
几何类型包括了点(point)、直线(line)、线段(lseg)、路径(path)、多边形(polygon)、圆(cycle)等类型PG特有类型,相当于数据库内置的自定义类型
网络地址类型有cidr、inet、macaddr三种类型PG特有类型
数组类型可以存储一个数组PG特有类型
复合类型把已有的简单类型组合成用户自定义的类型类似其他种类数据库的自定义类型
xml类型可以存储XML数据的类型
json类型可以存储json数据的类型
range类型范围类型,存放范围数据
对象标识符类型Postgresql内部标识对象的类型,如oid类型、regproc类型、regclass类型
伪类型伪类型不能作为字段的数据类型,但是可以声明一个函数的参数或者结果类型。有any、anyarray、anyelement、cstring、internal、language_hander、record、trigger、void、opaque
其他类型一些不易区分的类型,如UUID、pg_lsn

为了提高SQL的兼容性,部分类型可以简写,如integer类型可以用int、int4表示,smallint可以用int2表示;char varying可以用varchar表示;numeric(m,n)可以用decimal(m,n)表示。

二、类型的输入与转换
1.简单的类型,像数字或者字符串,习惯的正常输入,数据库可以自动识别:

postgres=# select 1, 1.123, 'hello world';
 ?column? | ?column? |  ?column?   
----------+----------+-------------
        1 |    1.123 | hello world
(1 row)

2.其他复杂的数据类型,可以通过前缀类型名加上单引号括起来的值的格式进行输入:

postgres=# select bit '10011101', int'1'+ int'4';
   bit    | ?column? 
----------+----------
 10011101 |        5
(1 row)

实际上所有类型都可以通过上面的方法输入。

3.Postgresql支持标准SQL的类型转换函数CAST进行类型转换:

postgres=# select CAST('1200' as int), CAST('2020-02-15' as date);
 int4 |    date    
------+------------
 1200 | 2020-02-15
(1 row)

此外,Postgresql还有一种更简洁的类型转换方式,使用双冒号加数据类型:

postgres=# select '13'::int, '2020-02-15'::date;
 int4 |    date    
------+------------
   13 | 2020-02-15
(1 row)

Postgresql数据库的数据类型与常接触的Oracle、MySQL数据库的数据类型在常用数据类型上差别不太,如字符、数字、日期等,但它有自己的特殊的数据类型,如位串类型、网络地址类型、数组类型等。这些特有的数据类型的使用要在数据库表数据存储时多使用才能具体了解其使用方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Major_ZYH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值