稷然如此

  • 首页
  • 文章分类
    • AI
    • Android
    • Java
    • Shell
    • Vue
    • C#
    • Python
    • 数据库
    • 组件
    • 其他
    • Game
  • 常用命令
    • Docker
    • Git
    • Linux
  • 操作系统
    • CentOS
    • Ubuntu
    • Windows
    • Kylin
  • 工具
    • IntelliJ IDEA
    • Visual Studio Code
稷然如此
不积跬步,无以至千里
  1. 首页
  2. 文章分类
  3. 数据库
  4. 正文

达梦数据库的数据类型

2025年5月30日 65点热度 0人点赞

1.数值数据类型

数值类型用于存储精确或近似的数值数据,分为整数、定点数和浮点数三类。
1.1 整数类型
特点:精确存储整数,无小数部分,占用固定字节空间。
TINYINT:
作用:存储小范围整数(-128~127),占用1字节。
示例:状态码、性别标记(0/1)
CREATE TABLE user_status (
  user_id INT,
  is_active TINYINT -- 0表示未激活,1表示激活
);
INSERT INTO user_status VALUES (1, 1);
SMALLINT:
作用:存储中等范围整数(-32768~32767),占用2字节。
示例:年龄、订单数量
CREATE TABLE product_stock (
  product_id INT,
  stock SMALLINT
);
INSERT INTO product_stock VALUES (1, 1500);
INT/INTEGER:
作用:常规整数存储(-2147483648~2147483647),占用4字节。
示例:用户ID、计数器
CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  user_id INT
);
INSERT INTO orders VALUES (1, 1001);
BIGINT:
作用:存储大范围整数(-263 ~263 -1),占用8字节。
示例:金融交易流水号、大数据量统计
CREATE TABLE transaction_log (
  log_id BIGINT,
  amount DECIMAL(18,2)
);
INSERT INTO transaction_log VALUES (9223372036854775807, 999999.99);
1.2 定点数类型
特点:精确存储小数,适用于财务计算等场景。
NUMERIC/DECIMAL/NUMBER:
作用:存储指定精度和标度的定点数(精度1~38)。
语法:NUMERIC(p,s),p为总位数,s为小数位数。
示例:商品价格、税率
CREATE TABLE financial_records (
  record_id INT,
  price NUMERIC(10,2), -- 如999999.99
  tax_rate DECIMAL(5,4) -- 如0.1234
);
INSERT INTO financial_records VALUES (1, 12345.67, 0.0825);
1.3 浮点数类型
特点:存储近似值,适用于科学计算。
FLOAT:
作用:单精度浮点数(4字节),精度约10位小数。
示例:温度测量、传感器数据
CREATE TABLE sensor_data (
  sensor_id INT,
  temperature FLOAT
);
INSERT INTO sensor_data VALUES (501, 23.456789);
DOUBLE/DOUBLE PRECISION:
作用:双精度浮点数(8字节),精度约10位小数。
示例:地理坐标计算
CREATE TABLE location_points (
  point_id INT,
  latitude DOUBLE,
  longitude DOUBLE
);
INSERT INTO location_points VALUES (1, 39.904202, 116.407394);

2.字符数据类型

字符类型用于存储文本数据,分为定长和变长两类。
2.1 定长字符串
CHAR/CHARACTER:
特点:固定长度,不足时填充空格,最大长度由页面大小决定(如8K页面对应3900字节)。
示例:固定编码、状态标志
CREATE TABLE country_codes (
  country_code CHAR(3) -- 如'CHN'、'USA'
);
INSERT INTO country_codes VALUES ('CHN');
2.2 变长字符串
VARCHAR/VARCHAR2:
特点:动态调整长度,节省存储空间,最大长度同样受页面大小限制(默认8188字节)。
示例:用户名、地址
CREATE TABLE user_profiles (
  user_id INT,
  username VARCHAR(50),
  address VARCHAR(200)
);
INSERT INTO user_profiles VALUES (1001, 'user_张三', '北京市海淀区');

3.位串数据类型

BIT:
特点:BIT 类型用于存储整数数据 1、0 或 NULL,只有 0 才转换为假,其他非空、非 0 值都会自动转换为真,可以用来支持 ODBC 和 JDBC 的布尔数据类型。
示例:性别标识
--表,定义性别字段为 sex, 1-男,0-女
CREATE TABLE USERS(
    id INT NOT NULL,
    name VARCHAR(10),
    sex BIT
);

--插入数据
INSERT INTO USERS values('1','张三',1);
INSERT INTO USERS values('2','李四',0);
COMMIT;

SELECT * FROM USERS;

4.日期时间类型

4.1 基本类型
DATE:
作用:存储年月日。
示例:生日、订单日期
CREATE TABLE employee_birthdays (
  employee_id INT,
  birth_date DATE
);
INSERT INTO employee_birthdays VALUES (1, '2025-05-14');
TIME:
作用:存储时分秒,精度至毫秒。
示例:会议时间
CREATE TABLE meeting_schedule (
  meeting_id INT,
  start_time TIME(3)
);
INSERT INTO meeting_schedule VALUES (1, '14:30:00.123');
TIMESTAMP/DATETIME:
作用:组合日期和时间,精度至微秒。
示例:日志时间戳
CREATE TABLE system_logs (
  log_id BIGINT,
  log_time TIMESTAMP(6)
);
INSERT INTO system_logs VALUES (1, '2025-05-14 14:30:00.123456');
4.2 时区扩展类型
TIMESTAMP WITH TIME ZONE:
作用:包含时区信息,适用于跨时区系统。
示例:全球化交易记录
CREATE TABLE global_transactions (
  trans_id BIGINT,
  trans_time TIMESTAMP WITH TIME ZONE
);
INSERT INTO global_transactions VALUES (1, '2025-05-14 14:30:00+08:00');

5.多媒体与大对象类型

5.1 文本大对象
TEXT/CLOB:
作用:存储长文本(最大2GB),如日志文件、文档内容。
示例:文章内容存储
CREATE TABLE articles (
  article_id INT,
  content CLOB
);
INSERT INTO articles VALUES (1, '此处为长文本内容...');
5.2 二进制大对
BLOB/IMAGE:
作用:存储二进制数据(如图片、视频),IMAGE为达梦特有类型。
示例:用户头像存储
CREATE TABLE user_avatars (
  user_id INT,
  avatar BLOB
);
INSERT INTO user_avatars VALUES (1, 0x89504E470D0A1A0A...);
5.3 外部文件引用
BFILE:
作用:存储外部文件路径,不占用数据库空间。
示例:链接服务器文件
CREATE TABLE external_files (
  file_id INT,
  file_ref BFILE
);
-- 假设文件路径为'/opt/files/report.pdf'
INSERT INTO external_files VALUES (1, BFILENAME('DIR_EXTERNAL', 'report.pdf'));

6.高级扩展类型

6.1 空间数据类型
ST_GEOMETRY:
作用:存储平面空间数据(如地图坐标)。
示例:GIS系统点位
-- 在 DM 数据库中创建 DMGEO2 包
SP_INIT_GEO2_SYS(1);
-- 确认 DMGEO2 系统包为启用状态。(0:关闭,1:开启)
SELECT SF_CHECK_GEO2_SYS;
-- 创建表
CREATE TABLE map_points (
  point_id INT,
  coordinates SYSGEO2.ST_GEOMETRY
);
INSERT INTO map_points VALUES (1, ST_GeomFromText('POINT(116.407394 39.904202)'));
ST_GEOGRAPHY:
作用:存储地理空间数据(如经纬度)。
示例:地理位置服务
-- 在 DM 数据库中创建 DMGEO2 包
SP_INIT_GEO2_SYS(1);
-- 确认 DMGEO2 系统包为启用状态。(0:关闭,1:开启)
SELECT SF_CHECK_GEO2_SYS;
-- 创建表
CREATE TABLE geo_locations (
  location_id INT,
  geo_data SYSGEO2.ST_GEOGRAPHY
);
INSERT INTO geo_locations VALUES (1, ST_GeogFromText('SRID=4326;POINT(116.407394 39.904202)'));
6.2 JSON类型
JSON:
作用:存储和查询JSON格式数据,支持半结构化场景。
示例:动态配置存储
CREATE TABLE app_config (
  config_id INT,
  config_data JSON
);
INSERT INTO app_config VALUES (1, '{"theme": "dark", "notifications": true}');
-- 查询JSON字段
SELECT json_value(config_data, '$.theme') FROM app_config;

 

标签: 暂无
最后更新:2025年5月30日

Akim

犇 骉 Java、C#、Python、Go、Android、MiniProgram、Bootstrap、Vue2

点赞
< 上一篇
文章目录
  • 1.数值数据类型
  • 2.字符数据类型
  • 3.位串数据类型
  • 4.日期时间类型
  • 5.多媒体与大对象类型
  • 6.高级扩展类型

Copyright © 2025 aianran.com All Rights Reserved.

免责申明 | 隐私政策 | 服务条款 | 关于我们

黔ICP备2023008200号-1

贵公网安备 52010202003594号