VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

数据类型

Vastbase在MySQL兼容模式下支持的数据类型如下:

类型 描述 存储空间
binary(N) binary类型是固定长度二进制字符串,指定长度后未满足长度的将自动补齐。
binary与char相似,可存储字符,不同的是binary存储的是二进制值。
binary(N)中的N指的是字节长度。N取值范围为1~255(默认为1)。
最大为255字节
longtext 变长字符串。 最大为1GB,但还需要考虑到列描述头信息的大小, 以及列所在元组的大小限制(也小于1GB),因此longtext类型最大小于1GB。
datetime datetime[n]用于设置显示毫秒后面的多少位,n表示获取的位数,取值为1~6。 8字节
longblob longblob是一种存储二进制数据的数据类型,可以用于存储大型二进制对象(blob),例如图像,音频和视频等数据。 最大为1GB减8203字节(即1073733621字节)。
int(N) 常用的整数(Vastbase仅做语法支持,没有实际意义)。 4字节
tinyint(N) 微整数(Vastbase仅做语法支持,没有实际意义)。 1字节
bigint(N) 大范围整数(Vastbase仅做语法支持,没有实际意义)。 8字节

注意事项

  • binary、datetime、bigint(N)、tinyint(N)、int(N)数据类型仅在数据库兼容模式为MySQL时能够使用(即创建DB时DBCOMPATIBILITY='B'),在其他数据库兼容模式下不能使用该特性。

  • datetime[n]数据类型的实现依赖Vastbase现有timestamp数据类型,因此,在一些场景中,例如\d元命令中,datetime数据类型会被显示成timestamp类型。

  • 当datetime[n]类型指定了小数位之后,如果datetime[n]类型的数据小数位都是0,则在Vastbase数据库中,受到timestamp数据类型的局限,其小数位上的0将不做显示。

示例

前置步骤:创建兼容MySQL的库db_mysql,并进入。

CREATE DATABASE db_mysql DBCOMPATIBILITY='B';
\c db_mysql

示例1:binary类型。

1、创建测试binary类型的表test_mysql_type2并插入测试数据。

CREATE TABLE test_mysql_type2(c1 binary(10));
INSERT INTO test_mysql_type2 values('a');
INSERT INTO test_mysql_type2 values('张三');

2、验证binary数据类型。

SELECT * FROM test_mysql_type2;

当结果显示如下信息,则表示验证完成。

           c1
------------------------
 \x61000000000000000000
 \xe5bca0e4b88900000000
(2 rows)

示例2:longtext类型。

1、创建测试longtext类型的表test_mysql_type3并插入测试数据。

CREATE TABLE test_mysql_type3(c1 longtext);
INSERT INTO test_mysql_type3 values('测试abc123');

2、验证longtext数据类型。

SELECT * FROM test_mysql_type3;

当结果显示如下信息,则表示验证完成。

   c1
------------------
 测试abc123
(1 row)

示例3:datetime类型。

1、创建测试datetime类型的表test_mysql_type4并插入测试数据。

CREATE TABLE test_mysql_type4(c1 datetime);
INSERT INTO test_mysql_type4 values('2019-03-05 01:53:55.63');

2、验证datetime数据类型。

SELECT * FROM test_mysql_type4;

当结果显示如下信息,则表示验证完成。

     c1
--------------------------
 2019-03-05 01:53:55.63
(1 row)

示例4:longblob类型。

1、创建测试表并插入数据。

CREATE TABLE t_longblob
(c1 int primary key auto_increment,c2 longblob default 'test_default,测试默认值');
INSERT INTO t_longblob VALUE(1,'test1');
INSERT INTO t_longblob(c2) VALUES(default);

2、查询表中数据。

select * from t_longblob;

返回结果为:

 c1 |                              c2
----+--------------------------------------------------------------
  1 | 7465737431
  2 | 746573745F64656661756C74EFBC8CE6B58BE8AF95E9BB98E8AEA4E580BC
(2 rows)

3、将longblob类型的二进制数据转换为UTF8编码的形式。

select c1,convert_from(rawsend(c2::raw),'utf8') from t_longblob;
  • convert_from函数用来以数据库编码的方式转换字符串bytea。详细请参考convert_from
  • rawsend是内部处理函数,用于将raw类型数据转换为bytea。

数据表中的存储的longblob类型的二进制数据,经过上述转换之后查询返回结果为:

 c1 |       convert_from
----+--------------------------
  1 | test1
  2 | test_default,测试默认值
(2 rows)