沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 基础

  • Mysql

  • Redis

  • 达梦数据库

    • DM基础入门
    • DM数据类型
      • 一、常规数据类型
        • 1、字符数据类型
        • CHAR 类型
        • CHARACTER 类型
        • VARCHAR / VARCHAR2 类型
        • ROWID 类型
        • 2、数值数据类型
        • (1)精确数值数据类型
        • NUMERIC 类型
        • DECIMAL 类型
        • DEC 类型
        • NUMBER 类型
        • INTEGER 类型
        • INT 类型
        • BIGINT 类型
        • TINYINT 类型
        • BYTE 类型
        • SMALLINT 类型
        • BINARY 类型
        • VARBINARY 类型
        • RAW 类型
        • (2)近似数值数据类型
        • FLOAT 类型
        • DOUBLE 类型
        • REAL 类型
        • DOUBLE PRECISION 类型
      • 二、位串数据类型
        • BIT 类型
      • 三、日期时间数据类型
        • 1、一般日期时间数据类型
        • DATE 类型
        • TIME 类型
        • TIMESTAMP 类型
        • 2、时间间隔数据类型
        • 3、时区数据类型
      • 四、多媒体数据类型
        • TEXT 类型
        • LONG、LONGVARCHAR(又名 TEXT)类型
        • IMAGE 类型
        • LONGVARBINARY(又名 IMAGE)类型
        • BLOB 类型
        • CLOB 类型
        • BFILE 类型
    • DM_SQL语言支持的表达式
    • DM表结构修改
  • 数据库
  • 达梦数据库
沉梦听雨
2024-09-10
目录

DM数据类型

# DM 数据类型

参考官方文档:结构化查询语言 DM_SQL 简介 (opens new window)

# 一、常规数据类型

# 1、字符数据类型

# CHAR 类型

语法:CHAR[(长度)]
1

功能:CHAR 数据类型指定定长字符串。

在基表中,

  • 定义 CHAR 类型的列时,可以指定一个不超过 32767 的正整数作为字节长度,例如:CHAR(100)。
  • 如果未指定长度,缺省为 1。
  • CHAR 类型列的最大存储长度由数据库页面大小决定,CHAR 数据类型最大存储长度和页面大小的对应关系请见下表 1.4.1。
  • 但是,在表达式计算中,该类型的长度上限不受页面大小限制,为 32767。

表1.4.1 最大存储长度和页面大小的对应关系

数据库页面大小 实际最大长度
4K 1900
8K 3900
16K 8000
32K 16000

# CHARACTER 类型

语法:CHARACTER[(长度)]
1

功能:与 CHAR 相同。

# VARCHAR / VARCHAR2 类型

语法:VARCHAR[(长度 [CHAR])]
1

功能:VARCHAR 数据类型指定变长字符串,用法类似 CHAR 数据类型,可以指定一个不超过 32767 的正整数作为字节或字符长度,例如:

  • VARCHAR (100) 指定 100 字节长度;
  • VARCHAR(100 CHAR) 指定 100 字符长度。
  • 如果未指定长度,缺省为 8188 字节。

区别:

  • CHAR 同 VARCHAR 的区别在于前者长度不足时,系统自动填充空格,而后者只占用实际的字节空间。
  • 另外,实际插入表中的列长度要受到记录长度的约束,每条记录总长度不能大于页面大小的一半。

# ROWID 类型

语法:ROWID
1

功能:

  • ROWID 类型数据由 18 位字符组成,用来表示 ROWID 数据。
  • 18 位字符由 “4 位站点号 +6 位分区号 +8 位物理行号” 组成。
  • ROWID 类型数据可通过 SF_BUILD_ROWID() 构造而来。
  • 表中的 ROWID 类型列,可以用于排序或创建索引。
  • 但是 ROWID 类型不支持作为分区列和自定义类型的属性数据类型。
  • ROWID 列与字符类型一样,支持 MAX,MIN 等集函数,不支持 SUM,AVG 等集函数。

# 2、数值数据类型

# (1)精确数值数据类型

# NUMERIC 类型
语法:NUMERIC[(精度 [, 标度])]
1

功能:

  • NUMERIC 数据类型用于存储零、正负定点数。

其中:

  • 精度 是一个无符号整数,定义了总的数字数,精度范围是 1 至 38。
  • 标度 定义了小数点右边的数字位数。一个数的标度不应大于其精度,如果实际标度大于指定标度,那么超出标度的位数将会四舍五入省去。
  • 例如:NUMERIC(4,1) 定义了小数点前面 3 位和小数点后面 1 位,共 4 位的数字,范围在 -999.9 到 999.9。

所有 NUMERIC 数据类型,

  • 如果其值超过精度,DM 会返回一个出错信息,
  • 如果超过标度,则多余的位会被截断。
  • 如果不指定精度和标度,缺省精度由 INI 参数 DECIMAL_ENHANCED 决定,标度不应大于其精度。
  • 当 DECIMAL_ENHANCED=1,缺省精度为 40;
  • 当 DECIMAL_ENHANCED=0,缺省精度为 38。
# DECIMAL 类型
语法:DECIMAL[(精度 [, 标度])]
1

功能:与 NUMERIC 相似。

# DEC 类型
语法:DEC[(精度[, 标度])]
1

功能:与 DECIMAL 相同。

# NUMBER 类型
语法:NUMBER[(精度[, 标度])]
1

功能:与 NUMERIC 相同。

# INTEGER 类型
语法:INTEGER
1

功能:

  • 用于存储有符号整数,精度为 10,标度为 0。

  • 取值范围为:-2147483648 (-2^31)~ +2147483647(2^31-1)。

  • int - 4 字节,4 * 8 = 32

# INT 类型
语法:INT
1

功能:与 INTEGER 相同。

# BIGINT 类型
语法:BIGINT
1

功能:

  • 用于存储有符号整数,精度为 19,标度为 0。
  • 取值范围为:-9223372036854775808(-2^63)~9223372036854775807(2^63-1)。
  • bigint - 8 字节,8 * 8 = 64
# TINYINT 类型
语法:TINYINT
1

功能:

  • 用于存储有符号整数,精度为 3,标度为 0。
  • 取值范围为:-128(-2^7) ~ +127(2^7)。
  • tinyint - 1 字节,1 * 8 = 8
# BYTE 类型
语法:BYTE
1

功能:

  • 与 TINYINT 相似,精度为 3,标度为 0。
# SMALLINT 类型
语法:SMALLINT
1

功能:

  • 用于存储有符号整数,精度为 5,标度为 0。
  • 取值范围为:-32768(-2^15) ~ +32767(2^15-1)。
  • smallint - 2 字节,2 * 8 = 16
# BINARY 类型
语法:BINARY[(长度)]
1

功能:

  • BINARY 数据类型用来存储定长二进制数据。

在基表中,

  • 定义 BINARY 类型的列时,其最大存储长度由数据库页面大小决定,可以指定一个不超过其最大存储长度的正整数作为列长度。
  • 缺省长度为 1 个字节。
  • 最大存储长度见【上表 1.4.1】。
  • BINARY 类型在表达式计算中的长度上限为 32767。
  • BINARY 常量以 0x 开始,后面跟着数据的十六进制表示,例如:0x2A3B4058。
# VARBINARY 类型
语法:VARBINARY[(长度)]
1

功能:

  • VARBINARY 数据类型用来存储变长二进制数据,用法类似 BINARY 数据类型,可以指定一个不超过 32767 的正整数作为数据长度。
  • 缺省长度为 8188 个字节。
  • VARBINARY 数据类型的实际最大存储长度由数据库页面大小决定,具体最大长度算法与 VARCHAR 类型的相同,其在表达式计算中的长度上限也与 VARCHAR 类型相同,为 32767。
# RAW 类型
语法:RAW[(长度)]
1

功能:

  • 与 VARBINARY 相同。

# (2)近似数值数据类型

# FLOAT 类型
语法:FLOAT[(精度)]
1

功能:

  • FLOAT 是带二进制精度的浮点数,精度范围(1~126)。
  • 当精度小于等于 24 时,DM 将其转换为标准 C 语言中的 REAL 类型;
  • 当精度大于 24 时,转换为标准 C 语言中的 DOUBLE 类型。
  • FLOAT 取值范围 -1.7976931348623158*10^308 ~ 1.7976931348623158*10^308。
# DOUBLE 类型
语法:DOUBLE[(精度)]
1

功能:

  • DOUBLE 是带二进制精度的浮点数。
  • DOUBLE 类型的设置是为了移植的兼容性。
  • 该类型直接使用标准 C 语言中 DOUBLE。
  • 精度与取值范围与 FLOAT 一样。
# REAL 类型
语法:REAL
1

功能:

  • REAL 是带二进制精度的浮点数。
  • 但它不能由用户指定使用的精度,系统指定其二进制精度为 24,十进制精度为 7。
  • 取值范围 -3.4*10^38 ~ 3.4*10^38。
# DOUBLE PRECISION 类型
语法:DOUBLE PRECISION[(精度)]
1

功能:

  • 该类型指明双精度浮点数。
  • DOUBLE PRECISION 类型的设置是为了移植的兼容性。
  • 该类型直接使用标准 C 语言中 DOUBLE。
  • 精度与取值范围与 FLOAT 一样。

# 二、位串数据类型

# BIT 类型

语法:BIT
1

功能:

  • BIT 类型用于存储整数数据 1、0 或 NULL,只有 0 才转换为假,其他非空、非 0 值都会自动转换为真,可以用来支持 ODBC 和 JDBC 的布尔数据类型。
  • DM 的 BIT 类型与 SQL SERVER2000 的 BIT 数据类型相似。
  • 功能与 ODBC 和 JDBC 的 BOOL 相同。

# 三、日期时间数据类型

日期时间数据类型分为一般日期时间数据类型、时间间隔数据类型和时区数据类型三类,用于存储日期、时间和它们之间的间隔信息。

# 1、一般日期时间数据类型

# DATE 类型

语法:DATE
1

功能:

  • DATE 类型包括年、月、日信息,定义了 '-4712-01-01' 和 '9999-12-31' 之间任何一个有效的格里高利日期。
  • DM 支持儒略历,并考虑了历史上从儒略历转换至格里高利日期时的异常,将 '1582-10-05' 到 '1582-10-14' 之间的日期统一当做 '1582-10-15' 处理。

DATE 值的书写方式有两种:一是 DATE '年月日';二是 '年月日'。

其中,年月日之间可以使用分隔符或者没有分隔符。

分隔符是指除 大小写字母、数字 以及 双引号 之外的所有 单字节字符 且是可打印的。

例如:空格、回车键、tab 键、- 、/ 、, 、.、 : 、* 等标点符号。

年月日中第一个非 0 数值前的 0 亦可省略,例如:'0001-01-01' 等价于 '1-1-1'。

例如:

CREATE TABLE T2(C1 DATE,C2 DATE,C3 DATE );

INSERT INTO T2 VALUES(DATE '1999-10-01','1999/10/01','1999.10.01');
1
2
3

# TIME 类型

语法:TIME[(小数秒精度)]
1

功能:

  • TIME 类型包括时、分、秒信息,定义了一个在 '00:00:00.000000' 和 '23:59:59.999999' 之间的有效时间。
  • TIME 类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为 0~6,如果未定义,缺省精度为 0。

TIME 值的书写方式有两种:一是 TIME '时:分:秒';二是 '时:分:秒'。

例如:

CREATE TABLE T2(C1 TIME(2),C2 TIME,C3 TIME);

INSERT INTO T2 VALUES(TIME '09:10:21.20','09:10:21','9:10:21.49');
1
2
3

# TIMESTAMP 类型

语法:TIMESTAMP[(小数秒精度)]
1

功能:

  • TIMESTAMP 类型包括年、月、日、时、分、秒信息,定义了一个在 '-4712-01-01 00:00:00.000000000' 和 '9999-12-31 23:59:59.999999999' 之间的有效格里高利日期时间。
  • TIMESTAMP 类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为 0~9,如果未定义,缺省精度为 6。
  • 与 DATE 类型相同,DM 不计算 '1582-10-05' 到 '1582-10-14' 之间的 10 天。

TIMESTAMP 值的书写方式有两种:一是 TIMESTAMP' <DATE 值 > <TIME 值 >';二是 '<DATE 值 > <TIME 值 >'。

语法中,TIMESTAMP 也可以写为 DATETIME。

例如:

CREATE TABLE T2(C1 TIMESTAMP,C2 DATETIME,C3 TIMESTAMP,C4 DATETIME,C5 TIMESTAMP);

INSERT INTO T2 VALUES(TIMESTAMP '2002-12-12 09:10:21',TIMESTAMP '2002-12-12 09:10:21','2002/12/12 09:10:21','2002.12.12 09:10:21',DATETIME'2002-12-12 09:10:21' );
1
2
3

# 2、时间间隔数据类型

DM 支持两类十三种时间间隔类型:

两类是:年-月间隔类 和 日-时间隔类,它们通过时间间隔限定符区分,前者结合了日期字段年和月,后者结合了时间字段日、时、分、秒。由时间间隔数据类型所描述的值总是有符号的。

需要说明的是,使用时间间隔数据类型时,如果使用了其引导精度的默认精度,要注意保持精度匹配,否则会出现错误。如果不指定精度,那么将使用默认精度。

# 3、时区数据类型

DM 支持两种时区类型:标准时区类型 和 本地时区类型。

# 四、多媒体数据类型

多媒体数据类型的字值有两种格式:

  • 一是 字符串,例如:'ABCD',
  • 二是 BINARY,例如:0x61626364。

注意:

  • TEXT、LONG、LONGVARCHAR、CLOB 只支持字符串。
  • BFILE 不适用上面两种格式。BFILE 指明的文件只能只读访问。
  • BINARY 格式的多媒体数据类型以及 BFILE 数据类型不支持比较。
  • 不支持为多媒体数据类型的字段指定精度。

# TEXT 类型

语法:TEXT
1

功能:

  • TEXT 为变长字符串类型。
  • 其字符串的长度最大为 100G-1 字节。
  • DM 利用它存储长的文本串。

# LONG、LONGVARCHAR(又名 TEXT)类型

语法:LONG/LONGVARCHAR
1

功能:与 TEXT 相同。

# IMAGE 类型

语法:IMAGE
1

功能:

  • IMAGE 用于指明多媒体信息中的图像类型。
  • 图像由不定长的象素点阵组成,长度最大为 100G-1 字节。
  • 该类型除了存储图像数据之外,还可用于存储任何其它二进制数据。

# LONGVARBINARY(又名 IMAGE)类型

语法:LONGVARBINARY
1

功能:与 IMAGE 相同。

# BLOB 类型

语法:BLOB
1

功能:

  • BLOB 类型用于指明变长的二进制大对象,长度最大为 100G-1 字节。

# CLOB 类型

语法:CLOB
1

功能:

  • 与 TEXT 相同。

# BFILE 类型

语法:BFILE
1

功能:

  • BFILE 用于指明存储在操作系统中的二进制文件,
  • 文件存储在操作系统而非数据库中,
  • 仅能进行只读访问。
上次更新: 2024/9/25 11:16:13
DM基础入门
DM_SQL语言支持的表达式

← DM基础入门 DM_SQL语言支持的表达式→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式