数据类型
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将不做显示。
- int(N),tinyint(N),bigint(N)的写法仅在Vastbase G100 V2.2 Build 10(Patch No.9)及以后版本支持。
示例
前置步骤:创建兼容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、创建测试表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:测试longtext类型、longblob类型。
1、创建测试表并插入数据。
create table tb_1156158(c1 longtext,c2 longblob);
insert into tb_1156158 values ('abc','abc');
insert into tb_1156158 values ('abc \153\154\155 \052\251\124','ef');
2、查询表中数据。
select * from tb_1156158;
返回结果为:
c1 | c2
-------------------------------+------
abc | 0ABC
abc \153\154\155 \052\251\124 | EF
(2 rows)