表1列出了所有的可用类型。数字操作符和相关的内置函数请参见数字操作函数和操作符。
表1 整数类型
|
名称 |
描述 |
存储空间 |
范围 |
|---|---|---|---|
|
TINYINT [UNSIGNED] |
微整数,带符号别名为INT1,无符号别名为UINT1。 |
1字节 |
|
|
SMALLINT [UNSIGNED] |
小范围整数,带符号别名为INT2,无符号别名为UINT2。 |
2字节 |
|
|
MEDIUMINT [UNSIGNED] |
中等范围整数,带符号别名为INT4,无符号别名为UINT4。 |
4字节 |
|
|
INTEGER [UNSIGNED] |
常用的整数,带符号别名为INT4,无符号别名为UINT4。 |
4字节 |
|
|
BINARY_INTEGER |
常用的整数,带符号别名为INTEGER。 |
4字节 |
-2,147,483,648 ~ +2,147,483,647。 |
|
BIGINT [UNSIGNED] |
大范围的整数,带符号别名为INT8,无符号别名为UINT8。 |
8字节 |
|
|
INT16 [SIGNED] |
十六字节的大范围整数,目前不支持用户用于建表等使用。 |
16字节 |
-170,141,183,460,469,231,731,687,303,715,884,105,728 ~ +170,141,183,460,469,231,731,687,303,715,884,105,727。 |
- 当sql_compatibility = 'MYSQL'时,设置参数b_format_version = '5.7'和参数b_format_dev_version = 's1'后,整型支持显示宽度和指定ZEROFILL属性。
- 显示宽度不限制可以存储在列中的值的范围,也不会阻止宽于列显示宽度的值正确显示。例如,指定为SMALLINT(3)的列可以存储-32768到32767的SMALLINT范围的值,并且使用三位以上的数字完整显示三位数所允许的范围之外的值。
- 当显示宽度与ZEROFILL属性结合使用时,将在数值前填充零以达到显示宽度。例如,对于声明为INT(4) ZEROFILL的列,将检索5的值作为0005。
- 如果为数字列指定ZEROFILL,将自动添加UNSIGNED属性。
- 如果不为数字列指定ZEROFILL,仅指明宽度信息,则宽度信息在表结构描述中不显示。
示例:
--创建数据库。 gaussdb=# CREATE DATABASE b_database dbcompatibility = 'MYSQL'; gaussdb=# \c b_database
--创建具有TINYINT类型数据的表。
b_database=# CREATE TABLE int_type_t1
(
IT_COL1 TINYINT,
IT_COL2 TINYINT UNSIGNED
);
--插入数据。
b_database=# INSERT INTO int_type_t1 VALUES(10,20);
--查看数据。
b_database=# SELECT * FROM int_type_t1;
it_col1 | it_col2
--------+---------
10 | 20
(1 row)
--删除表。
b_database=# DROP TABLE int_type_t1;
--创建具有TINYINT,INTEGER,BIGINT类型数据的表。
b_database=# CREATE TABLE int_type_t2
(
a TINYINT,
b TINYINT,
c INTEGER,
d INTEGER UNSIGNED,
e BIGINT,
f BIGINT UNSIGNED
);
--插入数据。
b_database=# INSERT INTO int_type_t2 VALUES(100, 10, 1000, 10000, 200, 2000);
--查看数据。
b_database=# SELECT * FROM int_type_t2;
a | b | c | d | e | f
-----+----+------+--------+-----+------
100 | 10 | 1000 | 10000 | 200 | 2000
(1 row)
--删除表。
b_database=# DROP TABLE int_type_t2;
--删除数据库。
b_database=# \c postgres
gaussdb=# DROP DATABASE b_database;
|
- TINYINT、SMALLINT、INTEGER、BIGINT和INT16类型存储各种范围的数字,即整数。如果存储超出范围以外的数值将会导致错误。
- 如果指定UNSIGNED,将不允许使用负值。
- 常用的类型是INTEGER,因为它提供了在范围、存储空间、性能之间的最佳平衡。一般只有取值范围确定不超过SMALLINT的情况下,才会使用SMALLINT类型。而只有在INTEGER的范围不够的时候才使用BIGINT,因为INTEGER的处理速度相对快得多。
- 无符号数值类型仅支持sql_compatibility = 'MYSQL'时的行存储引擎中使用。
- 当在整数值(其中一个是UNSIGNED类型)之间使用减号、加号、乘号时,结果是无符号。
- INT1/UINT1/UINT2/UINT4/UINT8的+、-、*运算允许返回值超过类型本身范围,INT2/INT4/INT8的+、-、*运算不允许返回值超过类型本身范围。
- UNSIGNED类型不支持与SET数据类型间的转换,避免对UNSIGNED类型与SET类型计算或比较。
- 当sql_compatibility = 'MYSQL'时,非数值类型的字符输入,会自动截断或返回数值0。
更多详情请参考GaussDB 文档中心:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html
浙公网安备 33010602011771号