位置: 编程技术 - 正文

PostgreSQL教程(四):数据类型详解

编辑:rootadmin

推荐整理分享PostgreSQL教程(四):数据类型详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

一、数值类型:

下面是PostgreSQL所支持的数值类型的列表和简单说明:

1. 整数类型:

类型smallint、integer和bigint存储各种范围的全部是数字的数,也就是没有小数部分的数字。试图存储超出范围以外的数值将导致一个错误。常用的类型是integer,因为它提供了在范围、存储空间和性能之间的最佳平衡。一般只有在磁盘空间紧张的时候才使用smallint。而只有在integer的范围不够的时候才使用bigint,因为前者(integer)绝对快得多。

2. 任意精度数值:

类型numeric可以存储最多位精度的数字并且准确地进行计算。因此非常适合用于货币金额和其它要求计算准确的数量。不过,numeric类型上的算术运算比整数类型或者浮点数类型要慢很多。 numeric字段的最大精度和最大比例都是可以配置的。要声明一个类型为numeric的字段,你可以用下面的语法: 比如数字.的精度为6,而刻度为4。 在目前的PostgreSQL版本中,decimal和numeric是等效的。 3. 浮点数类型:

数据类型real和double是不准确的、牺牲精度的数字类型。不准确意味着一些数值不能准确地转换成内部格式并且是以近似的形式存储的,因此存储后再把数据打印出来可能显示一些缺失。 4. Serial(序号)类型: serial和bigserial类型不是真正的类型,只是为在表中设置唯一标识做的概念上的便利。 等价于 这样,我们就创建了一个整数字段并且把它的缺省数值安排为从一个序列发生器取值。应用了一个NOT NULL约束以确保空值不会被插入。在大多数情况下你可能还希望附加一个UNIQUE或者PRIMARY KEY约束避免意外地插入重复的数值,但这个不是自动发生的。因此,如果你希望一个序列字段有一个唯一约束或者一个主键,那么你现在必须声明,就像其它数据类型一样。 还需要另外说明的是,一个serial类型创建的序列在其所属字段被删除时,该序列也将被自动删除,但是其它情况下是不会被删除的。因此,如果你想用同一个序列发生器同时给几个字段提供数据,那么就应该以独立对象的方式创建该序列发生器。

二、字符类型:

下面是PostgreSQL所支持的字符类型的列表和简单说明:

SQL 定义了两种基本的字符类型,varchar(n)和char(n),这里的n是一个正整数。两种类型都可以存储最多n个字符长的字串,试图存储更长的字串到这些类型的字段里会产生一个错误,除非超出长度的字符都是空白,这种情况下该字串将被截断为最大长度。如果没有长度声明,char等于char(1),而varchar则可以接受任何长度的字串。 这里需要注意的是,如果是将数值转换成char(n)或者varchar(n),那么超长的数值将被截断成n个字符,而不会抛出错误。 最后需要提示的是,这三种类型之间没有性能差别,只不过是在使用char类型时增加了存储尺寸。虽然在某些其它的数据库系统里,char(n)有一定的性能优势,但在PostgreSQL里没有。在大多数情况下,应该使用text或者varchar。 三、日期/时间类型:

下面是PostgreSQL所支持的日期/时间类型的列表和简单说明:

1. 日期/时间输入: 任何日期或者时间的文本输入均需要由单引号包围,就象一个文本字符串一样。 1). 日期: 以下为合法的日期格式列表:

PostgreSQL教程(四):数据类型详解

2). 时间: 以下为合法的时间格式列表:

3). 时间戳:

时间戳类型的有效输入由一个日期和时间的联接组成,后面跟着一个可选的时区。因此,-- ::和-- :: -8:都是有效的数值。 2. 示例: 1). 在插入数据之前先查看datestyle系统变量的值: 2). 创建包含日期、时间和时间戳类型的示例表: 3). 插入数据:

四、布尔类型:

PostgreSQL支持标准的SQL boolean数据类型。boolean只能有两个状态之一:真(True)或 假(False)。该类型占用1个字节。 "真"值的有效文本值是: 而对于"假"而言,你可以使用下面这些:   见如下使用方式: 五、位串类型:

位串就是一串1和0的字串。它们可以用于存储和视觉化位掩码。我们有两种类型的SQL位类型:bit(n)和bit varying(n); 这里的n是一个正整数。bit类型的数据必须准确匹配长度n; 试图存储短些或者长一些的数据都是错误的。类型bit varying数据是最长n的变长类型;更长的串会被拒绝。写一个没有长度的bit等效于bit(1),没有长度的bit varying相当于没有长度限制。 针对该类型,最后需要提醒的是,如果我们明确地把一个位串值转换成bit(n),那么它的右边将被截断或者在右边补齐零,直到刚好n位,而不会抛出任何错误。类似地,如果我们明确地把一个位串数值转换成bit varying(n),如果它超过n位,那么它的右边将被截断。 见如下具体使用方式:

六、数组:

1. 数组类型声明: 1). 创建字段含有数组类型的表。 2). 插入数组数据: 2. 访问数组: 和其他语言一样,PostgreSQL中数组也是通过下标数字(写在方括弧内)的方式进行访问,只是PostgreSQL中数组元素的下标是从1开始n结束。 PostgreSQL中还提供了访问数组范围的功能,即ARRAY[脚标下界:脚标上界]。 3. 修改数组: 1). 代替全部数组值: 2). 更新数组中某一元素: 3). 更新数组某一范围的元素: 4). 直接赋值扩大数组: 4. 在数组中检索: 1). 最简单直接的方法: 2). 更加有效的方法:

七、复合类型:

PostgreSQL中复合类型有些类似于C语言中的结构体,也可以被视为Oracle中的记录类型,但是还是感觉复合类型这个命名比较贴切。它实际上只是一个字段名和它们的数据类型的列表。PostgreSQL允许像简单数据类型那样使用复合类型。比如,表字段可以声明为一个复合类型。

1. 声明复合类型:

下面是两个简单的声明示例: 和声明一个数据表相比,声明类型时需要加AS关键字,同时在声明TYPE时不能定义任何约束。下面我们看一下如何在表中指定复合类型的字段,如: 最后需要指出的是,在创建表的时候,PostgreSQL也会自动创建一个与该表对应的复合类型,名字与表字相同,即表示该表的复合类型。 2. 复合类型值输入: 我们可以使用文本常量的方式表示复合类型值,即在圆括号里包围字段值并且用逗号分隔它们。你也可以将任何字段值用双引号括起,如果值本身包含逗号或者圆括号,那么就用双引号括起,对于上面的inventory_item复合类型的输入如下: 如果希望类型中的某个字段为NULL,只需在其对应的位置不予输入即可,如下面的输入中price字段的值为NULL, 如果只是需要一个空字串,而非NULL,写一对双引号,如: 在更多的场合中PostgreSQL推荐使用ROW表达式来构建复合类型值,使用该种方式相对简单,无需考虑更多标识字符问题,如: 注:对于ROW表达式,如果里面的字段数量超过1个,那么关键字ROW就可以省略,因此以上形式可以简化为: 3. 访问复合类型: 访问复合类型中的字段和访问数据表中的字段在形式上极为相似,只是为了对二者加以区分,PostgreSQL设定在访问复合类型中的字段时,类型部分需要用圆括号括起,以避免混淆,如: 如果在查询中也需要用到表名,那么表名和类型名都需要被圆括号括起,如: 4. 修改复合类型: 见如下几个示例:

该篇博客是对PostgreSQL官方文档中“数据类型”章节的简单归纳,这里之所以用一篇独立的博客来专门介绍,不仅是为了系统学习,也便于今后需要时的快速查阅。

PostgreSQL教程(五):函数和操作符详解(1) 一、逻辑操作符:常用的逻辑操作符有:AND、OR和NOT。其语义与其它编程语言中的逻辑操作符完全相同。二、比较操作符:下面是PostgreSQL中提供的比较

PostgreSQL教程(六):函数和操作符详解(2) 六、模式匹配:PostgreSQL中提供了三种实现模式匹配的方法:SQLLIKE操作符,更近一些的SIMILARTO操作符,和POSIX-风格正则表达式。1.LIKE:stringLIKEpattern[ESCAPE

PostgreSQL教程(七):函数和操作符详解(3) 九、序列操作函数:序列对象(也叫序列生成器)都是用CREATESEQUENCE创建的特殊的单行表。一个序列对象通常用于为行或者表生成唯一的标识符。下面序列

标签: PostgreSQL教程(四):数据类型详解

本文链接地址:https://www.jiuchutong.com/biancheng/319452.html 转载请保留说明!

上一篇:SQL2005Express中导入ACCESS数据库的两种方法

下一篇:PostgreSQL教程(五):函数和操作符详解(1)

  • 软件开发费税率17还是6
  • 个税手续费返还比例
  • 营业外支出罚款所得税怎么处理
  • 独立核算分公司注销与总公司账务
  • 材料亏损怎么做会计分录?
  • 公司冲账发票做不够该如何处理合适?
  • 企业辅助生产车间
  • 怎样冲回多计提的费用
  • 以前年度损益调整会计分录
  • 境外分回的股息并入应纳税所得
  • 旅游业差额开票的票据可以累计一季度吗
  • 公司承揽员工租房个税如何入账?
  • 伙食支出设立的明细
  • 个人开增值税普票有没有限额
  • 一个人有多份工作
  • 企业为职工社保补缴怎么办理
  • 金税三期房产税源信息更改后
  • 增值税专票的收款人必须是个人嘛
  • 哪些情况下小型车不能走
  • 工资计税基数
  • 土地增值税的纳税人是在我国境内
  • 工资预支怎么做账
  • 新租赁准则承租人计提折旧吗
  • 个人出租房屋交税如何计算
  • 利润表中财务费用可以为负数吗
  • 外商投资企业盈余公积转增资本是否交预提所得税
  • 其他应付款借贷方分别表示什么
  • 去年进项税没有抵扣了
  • 速动比率的合理范围
  • 财务都干些什么
  • 跟a签订合同可以撤销吗
  • win11电脑硬盘分区
  • 产供销一体化什么意思
  • 材料成本差异贷方表示
  • 二次规划是什么意思
  • php使用教程
  • php教程100
  • 面试官:一千万是真的吗
  • 增值税纳税申报表附列资料(一)
  • thinkphp,onethink和thinkox中验证码不显示的解决方法分析
  • thinkphp excel
  • 工程结算在资产负债表中哪个科目显示
  • 企业微信支付年限怎么看
  • 旅行社差额征税政策
  • 账户利息怎么计算
  • 连通函数
  • 物流公司驾驶员工资计算方式
  • 利润表中的本期金额和本年累计金额
  • 房地产开发企业成本核算方法
  • 增值税抵扣环节
  • 个人所得税的税率表最新的
  • 接受捐赠计入
  • 车辆购置税 购置
  • 公司把股权转让给个人员工该怎么办
  • 怎样暂估成本的会计分录
  • 库存商品的成本主要包括
  • 土地增值税预缴计算方法70号公告
  • 根据出库商品的编码
  • 发票冲红的会计怎么处理
  • 企业收到海河工厂发运的乙材料,并验收入库
  • 非流动资产减少
  • 抵扣认证的发票需要还回去吗
  • 收购 发票
  • 旅游团建费用会计怎么入账
  • 电信发票为什么有单位
  • 公用事业费属于什么会计科目
  • 中小企业会计建议和意见
  • win8无法安装其它软件
  • ubuntu英文系统安装中文输入法
  • linux使用方式有哪些方面
  • 电脑桌面图标有虚影怎么回事
  • windows7功能打不开怎么办
  • win10更新后出现windows.old
  • js怎么用
  • jquery的选择器有哪些举例说明
  • python 如何
  • jquery easyui插件
  • JavaScript基础语法详解
  • 咸阳国税局长是哪里人
  • 发票与报销内容不一样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设