人大金仓KingBaseES数据类型之数值类型

关键字:

数值类型 KingbaseES 人大金仓

数值类型

数值类型存储正、负定点及浮点数、零、Infinity、-Infinity以及NaN。由2、4或8字节的整数以及4或8字节的浮点数和可选精度小数组成。

typcategory的系统定义值都是大写ASCII码,数值类型的typcategory系统定义值为N。

表1列出了所有可用类型。

表1 数值类型

名字

存储尺寸

描述

范围

tinyint

1字节

小范围整数

-128 to +127

smallint

2字节

小范围整数

-32768 to +32767

integer

4字节

整数的典型选择

-2147483648 to +2147483647

bigint

8字节

大范围整数

-9223372036854775808 to +9223372036854775807

decimal(p,s)

可变

用户指定精度,精确

p精度的取值范围为1~1000; s标度的取值范围为0~1000

numeric(p,s)

可变

用户指定精度,精确

p精度的取值范围为1~1000; s标度的取值范围为0~1000

real

4字节

可变精度,不精确

6位十进制精度

double precision

8字节

可变精度,不精确

15位十进制精度

smallserial

2字节

自动增加的小整数

1到32767

serial

4字节

自动增加的整数

1到2147483647

bigserial

8字节

自动增加的大整数

1到9223372036854775807

整数类型

存储有符号整数,即没有小数部分的数值。

KingbaseES整数类型包括 tinyint、smallint、integer(或int) 和 bigint 。具体细节参见图表。

2.1 TINYINT数据类型

语法:TINYINT

有符号整数,取值范围 -128 ~ +127

2.2 SMALLINT数据类型

语法:SMALLINT

有符号整数,取值范围 -32768 ~ +32767

2.3 INTEGER数据类型

语法:INTEGER

别名:INT

有符号整数,取值范围 -2147483648~ +2147483647

2.4 BIGINT数据类型

语法:BIGINT

有符号整数,取值范围 -9223372036854775808~ +9223372036854775807

NUMERIC 数据类型

语法:NUMERIC(precision, scale)

存储0 以及绝对值为[1.0 x 10-130, 1.0 x 10126)的正、负定点数。在算术运算中,如果超出范围,KingbaseES报错。

precision表示精度,是整个数中有效位的总数,也就是小数点两边的位数。取值范围为 1~1000。scale表示标度,是小数部分的数字位数,也就是小数点右边的部分。取值范围为0~1000。最高小数点前131072位,以及小数点后16383位。

使用该数据类型时,最好指定定点数的小数位数和精度,以便在输入时进行额外的完整性检查。指定小数位数和精度不会强制所有值都达到固定长度。如果某个值超过精度,KingbaseES将返回错误。如果某个值超过标度,KingbaseES会对其进行四舍五入。也可以使用NUMERIC(precision) 类型,即标度为0的定点数,即NUMERIC(precision, 0)。

也可以直接使用NUMERIC类型,缺省精度和标度,指定KingbaseES数值的最大精度和标度。一个普通的列将不会把输入值转化成任何特定的比例,而带有比例声明的numeric列将把输入值转化为该比例,(SQL标准要求缺省的比例是 0,即转化成整数精度)考虑到移植性,在使用时最好是显式声明精度和标度。

除了普通的数字值之外,numeric类型允许特殊值NaN, 表示“不是一个数字”。任何在 NaN上面的操作都生成另外一个NaN。 如果在 SQL 命令里把这些值当作一个常量写,你必须在其周围放上单引号,例如UPDATE table SET x = 'NaN'。在输入时,字串NaN是大小写不敏感的。

注意:

在“不是一个数字”概念的大部分实现中,NaN被认为不等于任何其他数字值(包括NaN)。为了允许numeric值可以被排序和使用基于树的索引,PostgreSQL把NaN值视为相等,并且比所有非NaN值都要大。

浮点类型

real 和 double precision 是近似数值类型,以近似的形式存储的,因此存储和检索一个值可能出现一些偏差。

4.1 REAL类型

语法:REAL

范围在 -1E+37 到 +1E+37 之间,精度至少是 6 位小数。

4.2 DOUBLE PRECISION类型

语法:DOUBLE PRECISION[(精度)]

范围在 -1E+37 到 +1E+37 之间,精度至少是15位小数。

为了与旧版本的 KingbaseES 生成的输出兼容,并允许降低输出精度,可以使用extra_float_digits 参数来选择rounded decimal 输出。

将值设置为 0 将恢复先前的默认输入值为 6(对于 float4) 或 15(对于 float8) 的有效小数位数。 设置为负值会进一步减少位数;

4.3 FLOAT 类型

语法:FLOAT 或 FLOAT(p)

当p取值为1-24时,与REAL相同。当p取值为25-53时,与DOUBLE PRECISION相同。没有指定精度时,与DOUBLE PRECISION相同。

注意

以前,需要精确值的应用程序必须将 extra_float_digits 设置为3才能获得这些值。为了实现版本之间的最大兼容性,它们应该继续这样做。

除了普通的数字值之外,浮点类型还有几个特殊值:

Infinity

-Infinity

NaN

这些值分别表示 IEEE 754 特殊值“正无穷大”、“负无穷大”以及“不是一个数字”。 如果在 SQL命令里把这些数值当作常量写,你必须在它们周围放上单引号, 例如UPDATE table SET x = '-Infinity'。 在输入时,这些串是以大小写无关的方式识别的。

注意:

IEEE754指定NaN不应该与任何其他浮点值(包括NaN)相等。为了允许浮点值被排序或者在基于树的索引中使用,KingbaseES将NaN值视为相等,并且比所有非NaN值要更大。

序数类型

smallserial、serial 和 bigserial类型不是真正的类型, 它们只是为了创建唯一标识符列而存在的方便符号(类似其它一些数据库中支持的 AUTO_INCREMENT 属性)。 这是 KingbaseES 特有的创建一个自增列的方法。

5.1 SMALLSERIAL类型

语法:SMALLSERIAL

相当于创建一个SMALLINT列。

5.2 SERIAL类型

语法:SERIAL

相当于创建一个INT列。

5.3 BIGSERIAL类型

语法:BIGSERIAL

相当于创建一个BIGINT列。

创建了一个整数列并且把它的缺省值设置为从一个序列发生器取值。限定NOT NULL约束以确保空值不会被插入 (也许是UNIQUE 或者 PRIMARY KEY 约束避免意外地插入重复的值,但这不会自动发生)。 最后,该序列被标记为“属于”该列,这样当列或表被删除时该序列也会被删除。 在不删除列的情况下也可以删除序列,但是这会强制删除该列的默认值表达式。

注意:

因为 smallserial、serial 和 bigserial 是用序列实现的,所以即使没有删除过行,在出现在列中的序列值可能有“空洞”或者间隙。如果一个从序列中分配的值被用在一行中,即使该行最终没有被成功地插入到表中,该值也被“用掉”了。例如,当插入事务回滚时就会发生这种情况。更多信息参见序列操作函数中的 nextval()。

参考资料

提供该题目相关内容在产品手册中可以系统学习的位置,例如:

《KingbaseES V8.6 --用户手册》

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Kingbase 中创建表需要使用 SQL 的 CREATE TABLE 命令。下面是一个简单的例子,用于创建一个名为 `users` 的表,其中包含三个字段:`id`、`name` 和 `age`: ``` CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, age INTEGER NOT NULL ); ``` 这个例子中,`id` 字段是自增的序列,作为主键。`name` 字段是一个最大长度为 50 的字符串,不能为空。`age` 字段是整数类型,不能为空。 你可以在 Kingbase 数据库管理工具或在命令行中运行此命令。请确保你已经登录到 Kingbase 后台并连接到正确的数据库实例。 如果你使用 Kingbase 数据库管理工具,请执行以下步骤: 1. 打开 Kingbase 数据库管理工具。 2. 选择要创建表的数据库实例。 3. 在左侧面板中,展开“公共模式”节点。 4. 右键单击“基础表”节点,然后选择“新建基础表”。 5. 在“新建基础表向导”中,输入表名称和字段信息。 6. 单击“下一步”按钮,根据需要设置约束和索引。 7. 单击“完成”按钮以创建表。 如果你在命令行中运行此命令,请确保你已经登录到 Kingbase 后台并连接到正确的数据库实例。然后,输入上述 SQL 命令并按回车键,等待表创建成功。 ### 回答2: Kingbase是国内最早的商业化数据库管理系统,现在已经有了13个版本,适用于各种企业级解决方案。 使用Kingbase来创建表,首先需要使用CREATE TABLE语句。如下是一个例子: CREATE TABLE 表名 ( 列名1 数据类型, 列名2 数据类型, 列名3 数据类型, ... ); 在CREATE TABLE语句中,表名是你想要创建的表的名称,列名是表中的每个列的名称,数据类型是列中存储的数据的类型。 下面是一个更具体的例子: CREATE TABLE 产品 ( 产品ID INT PRIMARY KEY, 产品名称 VARCHAR(50), 产品价格 DECIMAL(10, 2), 创建日期 DATE ); 在这个例子中,我们创建了一个名为"产品"的表。该表有四列:产品ID,产品名称,产品价格和创建日期。产品ID列被设置为主键,表示每个产品都有唯一的ID。产品名称列使用VARCHAR(50)数据类型,表示产品名称是一个最大长度为50个字符的字符串。产品价格列使用DECIMAL(10, 2)数据类型,表示产品价格是一个最大值为10的数字,其中有2个小数位。创建日期列使用DATE数据类型,表示创建日期是一个日期值。 通过使用类似的CREATE TABLE语句,你可以根据自己的需求在Kingbase中创建不同的表。记住在定义表和列的时候,要根据实际的业务需求和数据类型进行选择,这样才能确保数据的准确性和完整性。 ### 回答3: Kingbase是一种关系型数据库管理系统,类似于Oracle数据库。建表语句指的是创建数据库表格的SQL语句。下面是一个用Kingbase建表的示例: CREATE TABLE Employee ( employee_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), age INT, position VARCHAR(50), department VARCHAR(50) ); 上面的建表语句创建了一个名为Employee的表格,包含了employee_id、first_name、last_name、age、position和department这些列。其中,employee_id是主键,表示每一个员工的唯一标识符。其他列则记录了员工的基本信息,如名字、年龄、职位和部门。 建表语句使用CREATE TABLE关键字开始,后面跟着需要创建的表格名字。括号中列出了表格的列名和数据类型。在这个例子中,我们使用了INT表示整数类型,VARCHAR(50)表示最大长度为50的字符类型。 PRIMARY KEY关键字表示该列为主键,保证每一行数据的唯一性。在这个例子中,我们使用了employee_id作为主键。 通过使用Kingbase的建表语句,我们可以创建出适合自己需求的数据表格,方便地存储和管理数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值