暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

人大金仓KES常用数据类型实践

数据猿 2023-12-06
4399


关键字:

KingbaseES、数据类型、人大金仓、KingbaseES

一、实践前准备

1.1 软件环境要求

金仓数据库管理系统KingbaseES V8.0支持微软Windows 7、Windows XP、Windows 2003、 Windows 2008等32位及64位发行版本。

1.2 安装包准备

准备需要安装的金仓数据库管理系统KingbaseES安装程序和jdk1.8及以上的jdk环境。

1.3 注意事项

1.3.1 安装用户
在安装金仓数据库管理系统KingbaseES V8.0时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。Windows 10及以上的操作系统,需要使用管理员身份安装。

1.3.2 安装目录

金仓数据库管理系统KingbaseES安装过程中有默认的安装目录C:\Program Files\Kingbase\ES\V8。

二、数据类型实践

2.1 字符数据类型

字符数据类型是用来存储字符(字母、数字)数据,包括单词和自由格式文本,以数据库字符集或国际字符集形式存储。字符列可以存储所有字母数字值,但数值列只能存储数值。常用字符数据类型如下:

character varying[(n [char | byte])])

有限制的变长字符类型

varchar(n [char | byte])

n取值最小为 1 字节或 1 字符,最大10485760字节或字符,n缺省值为1。

char 或 byte 的默认值由NLS_LENGTH_SEMANTICS 确定。(n可以取'*',表示不限制长度)

varchar2(n [char | byte])

nvarchar2(n [char | byte])推荐使用

nvarchar(n [char | byte])

character(n [char | byte])

指定长度的定长字符类型,n 限定字符串长度,如果显式指定 char,则表示n个字符长度;如果显式指定byte,则表示n个字节长度;n默认值为1。

定长,不足定义长度时在最右边以空格补齐。如果字符串的长度超出 n,则按照 SQL 标准截断 (兼容PostgreSQL模式下,超出部分都是空格) 或报错。

char(n [char | byte])

text

longtext

无限变长,存储任何长度的字符串存储最大值为1G。

mediumtext

指定长度变长,存储长度最大为16777215个字节字符串。

tinytext

指定长度变长,存储长度最大为255个字节。

character定长字符类型设置字符限定的方式:nls_length_semantics =‘char/byte’,或者显示的指定。实践如下:

注意:一般单字符的长度是1字节,汉字是2字节,查看字符的长度char_length()使用如下:

character varying变长字符类型,如果显式指定了 char,则表示n个字符长度,n 的最大值为 10485760;如果显式指定byte,则表示n个字节长度;如果插入字符串数据长度小于 n 时,在字符串右边用空格补齐。如果n缺省,则character varying 表示接受任何长度的串。

varchar、varchar2、nvarchar、nvarchar2的区别:

  1. varchar2把所有字符都占两个字节处理,varchar只对汉字和全角等字符占两字节,数字、英文都是一个字节;
  2. varchar2把空串等同于null处理,varchar仍按空串处理
  3. varchar2字符要用几个字节存储,与数据库使用的字符集相关,如GBK,汉字就是2字符;UTF-8,汉字就是3字节;
  4. nvarchar和nvarchar2更适合存储中文。nvarchar中文一般2字节,其他一字节;nvarchar2中所有字符均按照2字节计算。
  5. nvarchar2更占空间,但具有更好的兼容性。
  6. nvarchar2是更好使用,比如nvarchar2(10)可以存进去10个汉字,也仅能存10个英文字符,varchar2(10)只能存5个字符,10个英文。

2.2 数值数据类型

数值类型存储 正、负定点及浮点数、零、Infinity、-Infinity以及NaN。

tinyint

int1

1字节

小范围整数

-128 to +127

smallint

2字节

小范围整数

-32768 to +32767

middleint

mediumint

int3

3字节

小范围整数

-8388608 to 8388607

integer,推荐使用

4字节

整数的典型选择

-2147483648 to +2147483647

bigint

8字节

大范围整数

-9223372036854775808 to +9223372036854775807

decimal(p,s)

可变

可指定精度和标度

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

numeric(p,s),推荐使用

number(p,s)

可变

可指定精度和标度

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

fixed(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

整数类型包括 tinyint、smallint、integer(或int) 和 bigint 。整数类型推荐使用integer,浮点数推荐使用numeric类型。

其中numeric(m,n),整数部分位数不能大于m-n,小数部分位数大于n时会被四舍五入到n位。

2.3 时间/日期类型

日期时间数据类型。

名字

存储尺寸

描述

最小值

最大值

timestamp[(p)]

[without time zone]

8字节

包括日期 和时间( 无时区)

4713 BC

294276 AD

timestamp[(p)]with time zone

8字节

包括日 期和时间 ,有时区

4713 BC

294276 AD

timestamp[(p)] with local time zone

8字节

包括日 期和时间 ,有时区

4713 BC

294276 AD

date

4字节

日期

4713 BC

5874897 AD

time[(p)] [without time zone]

8字节

一天中 的时间( 无日期)

00:00:00

24:00:00

time[(p)]with timezone

12字节

仅仅是一 天中的时 间(没有 日期), 带有时区

00:00:00+1459

24:00:00-1459

interval [fields] [(p)]

16字节

时间间隔

-178956970年

178956970年

yminterval

16字节

时间间隔

-178956970年

178956970年

dsinterval

16字节

时间间隔

-999999999日

999999999日

year

4字节

年份

1901年

2155年

DateStyle 参数设置为 MDY,表示"月-日-年",设置为 DMY 就是"日-月-年",设置为 YMD,表示"年-月-日"。

DATE数据类型存储日期和时间值。每一个DATE日期值KingbaseES存储如下值:年、月、日、时、分、秒。 TO_DATE 函数可以将字符或者数值转换为date 值。日期或者时间的输入需要由单引号括起来。

to_date(str):将字符串转化为时间;

to_char(date):将时间转化为字符串;

月份差:moths_between(date1,date2)

年分差:月份差/12

next_day(x,y):用于计算X时间后第一个星期Y的时间,Y是一个字符串,表示用当前会话语言表示的一周中某一天的英文全称(星期一、星期二等),也可以是数值。

trunc(x [,format])截断日期,返回的是日期。

天数差:to_number(date1-date2)函数

小时数差:天数差*24

分钟数差:天数差*24*60

extract:从一个date和interval中截取到特定的部分:

select extract( year from date'2023-05-04')

2.4 大对象数据类型

KES内置LOB数据类型 BLOB、CLOB、NCLOB 可以存储大型非结构化数据,如文本、图像、视频和空间数据

数据类型

描述

BLOB

二进制大对象,长度最大为 1G

CLOB

字符大对象,长度最大为 1G

NCLOB

字符大对象,长度最大为 1G

BFILE

存储文件的定位符,长度最大为 1G

BYTEA

变长二进制串,长度最大为 1G

RAW

变长存储二进制或者字符串的类型, 长度最大为 1G-4

LONG RAW

变长存储二进制或者字符串的类型, 长度最大为 1G-4

2.5 布尔数据类型

布尔类型的值要么为true,要么为false,也可以用不等于0的整数、yes表示真,0、no表示假,并会对其值自动转换为true或false。

2.6 位串数据类型

位串就是一串 1 和 0 的串。BIT[(n)],BIT VARYING(n),变长位串,最长为n,n是正整数。如果存储超过n则报错。n缺省,表示该类型没有长度限制。

通过select b’判断b/B后的字符串是否为合法的二进制串,若是则以右则开始,以字节为单位转为对应ASCII码的字符,不足一个字节的按一个字节算,不是则报错返回。通过Select X’’语法,判断 x/X 后的字符串是否为合法的十六进制形式串,不是则报错返回。

三、总结

本文对KES常用数据类型进行了学习实践,熟悉了相关知识。

参考文档:

《KES产品手册》 KingbaseES SQL 基本元素

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论