达梦数据库建表步骤是怎样的?新手如何快速掌握?

在数据库管理系统中,表是存储数据的基本结构,合理创建表是确保数据高效存储和访问的前提,达梦数据库(DM Database)作为国产自主可控的数据库管理系统,其建表语法与主流数据库类似,但也具备自身特性,本文将详细介绍达梦数据库建表的核心语法、数据类型、约束条件及最佳实践,帮助用户快速掌握建表技能。

达梦数据库建表步骤是怎样的?新手如何快速掌握?

建表基本语法

达梦数据库建表通过CREATE TABLE语句实现,基本语法结构如下:

CREATE TABLE [模式名.]表名 (
    列名1 数据类型 [列级约束],
    列名2 数据类型 [列级约束],
    ...
    [表级约束]
) [表属性选项];
  • 模式名:可选,用于指定表所属的模式(类似其他数据库的schema),若未指定则默认为当前用户模式。
  • 列名:列的名称,需符合标识符命名规范(以字母或下划线开头,后续可包含字母、数字或下划线)。
  • 数据类型:定义列存储的数据类型,如数值型、字符型、日期型等。
  • 约束:包括列级约束(如NOT NULLDEFAULT)和表级约束(如PRIMARY KEYFOREIGN KEY),用于保证数据完整性。
  • 表属性选项:如存储位置、表空间、压缩属性等,用于优化存储性能。

数据类型详解

达梦数据库支持丰富的数据类型,常用类型如下表所示:

类型分类 常用数据类型 说明
数值型 INTBIGINTSMALLINTFLOATDECIMAL INT表示整数,DECIMAL(p,s)表示精确小数(p为总位数,s为小数位数)
字符型 CHAR(n)VARCHAR(n)TEXT CHAR固定长度,VARCHAR可变长度,TEXT用于大文本存储
日期时间型 DATETIMEDATETIMETIMESTAMP DATE存储日期,TIMESTAMP存储日期和时间,支持精度到纳秒
二进制型 BINARY(n)VARBINARY(n)BLOB BINARY固定长度二进制,BLOB用于存储大二进制数据
其他类型 BOOLEAN(布尔型)、JSON(JSON文档) BOOLEAN存储TRUE/FALSEJSON存储半结构化数据

约束条件应用

约束是保证数据完整性的关键,达梦数据库支持的约束类型及用法如下:

达梦数据库建表步骤是怎样的?新手如何快速掌握?

列级约束

直接在列定义后添加,适用于单列约束:

  • NOT NULL:列值不能为空,user_name VARCHAR(50) NOT NULL
  • DEFAULT:设置默认值,status INT DEFAULT 1(默认值为1)。
  • UNIQUE:列值唯一,允许空值,email VARCHAR(100) UNIQUE
  • PRIMARY KEY:主键,唯一标识表记录,id INT PRIMARY KEY
  • CHECK:检查约束,限制列值范围,age INT CHECK (age >= 18)

表级约束

在所有列定义后添加,适用于多列约束:

  • PRIMARY KEY (列1, 列2):联合主键,PRIMARY KEY (dept_id, user_id)
  • FOREIGN KEY (列名) REFERENCES 父表(列名):外键,实现表间关联,FOREIGN KEY (dept_id) REFERENCES department(dept_id)
  • UNIQUE (列1, 列2):联合唯一约束,UNIQUE (username, create_time)

建表示例

示例1:创建用户表(单表)

CREATE TABLE user_info (
    user_id INT PRIMARY KEY AUTO_INCREMENT,  -- 自增主键
    username VARCHAR(50) NOT NULL UNIQUE,    -- 用户名唯一且非空
    password VARCHAR(100) NOT NULL,          -- 密码非空
    email VARCHAR(100) DEFAULT '',           -- 默认空字符串
    age INT CHECK (age BETWEEN 0 AND 120),   -- 年龄范围0-120
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 默认当前时间
    status INT DEFAULT 1                     -- 状态:1-正常,0-禁用
);

示例2:创建订单表(含外键)

CREATE TABLE order_info (
    order_id BIGINT PRIMARY KEY,
    user_id INT NOT NULL,
    order_no VARCHAR(50) NOT NULL UNIQUE,
    total_amount DECIMAL(10,2) NOT NULL,
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES user_info(user_id) -- 外键关联用户表
);

表属性优化

通过表属性选项可优化存储和性能,常用选项包括:

达梦数据库建表步骤是怎样的?新手如何快速掌握?

  • TABLESPACE:指定表空间,TABLESPACE USER_DATA
  • STORAGE:存储参数,如STORAGE (INITIAL 1M NEXT 512K),定义初始大小和扩展步长。
  • COMPRESSION:启用压缩,COMPRESSION 'ZSTD'(需数据库版本支持)。
  • PARTITION BY:分区表,提升大数据量查询性能,PARTITION BY RANGE (create_time)

建表最佳实践

  1. 命名规范:表名和列名使用小写字母,单词间用下划线分隔,避免保留字。
  2. 主键设计:每个表建议设置主键,推荐使用自增整数或UUID,避免业务字段作为主键。
  3. 索引优化:对查询频繁的字段(如外键、条件字段)创建索引,但避免过度索引。
  4. 数据类型选择:优先使用精确的数据类型(如用INT而非VARCHAR存储数字),减少存储空间占用。
  5. 约束合理使用:通过NOT NULLCHECK等约束减少无效数据,外键需谨慎使用,避免影响写入性能。

相关问答FAQs

Q1:达梦数据库中如何修改已创建表的结构?
A:使用ALTER TABLE语句修改表结构,常见操作包括添加列、修改列类型、删除列等。

  • 添加列:ALTER TABLE user_info ADD COLUMN phone VARCHAR(20);
  • 修改列类型:ALTER TABLE user_info MODIFY COLUMN age INT;
  • 删除列:ALTER TABLE user_info DROP COLUMN phone;

Q2:达梦数据库支持哪些自增主键方式?如何设置?
A:达梦数据库支持两种自增主键方式:

  1. 序列(SEQUENCE)+ 触发器:先创建序列,再通过触发器在插入数据时自动填充。
    CREATE SEQUENCE seq_user_id INCREMENT BY 1 START WITH 1;
    CREATE TRIGGER trig_user_id BEFORE INSERT ON user_info FOR EACH ROW
    BEGIN
        IF :NEW.user_id IS NULL THEN
            :NEW.user_id := seq_user_id.NEXTVAL;
        END IF;
    END;
  2. 自增列(AUTO_INCREMENT):直接在列定义后添加AUTO_INCREMENT属性(推荐,语法简单)。
    CREATE TABLE user_info (
        user_id INT PRIMARY KEY AUTO_INCREMENT,
        ...
    );

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-11-04 22:19
下一篇 2025-11-04 22:22

相关推荐

  • 如何用vb连接sql server数据库来实现数据增删改查?

    在Visual Basic (VB) 的开发实践中,与SQL Server数据库进行交互是一项基础且核心的技能,无论是构建桌面应用程序、管理后台系统还是进行数据处理,稳定高效的数据库连接都是项目成功的基石,本文将详细、系统地阐述在VB.NET环境中连接SQL Server数据库的全过程,从前期准备到代码实现,再……

    2025-10-05
    007
  • 服务主机哪个耗流量吗_服务流量管理

    服务主机的流量消耗取决于其运行的服务和应用。一些服务如视频流、大型文件传输会消耗大量流量,而文本处理或小型数据库交互则消耗较少。

    2024-07-24
    005
  • 个人邮箱如何通过公司域名进行登录?企业邮箱绑定域名登录方法

    公司域名的个人邮箱通常无法直接通过标准个人邮箱客户端(如QQ邮箱、163邮箱)独立登录,必须依托企业邮箱管理后台或特定的Webmail入口,使用“用户名@公司域名”的完整账号格式进行身份验证,这一结论基于当前主流企业邮箱服务商(如腾讯企业邮、阿里企业邮、网易企业邮)的安全架构设计,个人邮箱与企业邮箱在底层数据隔……

    2026-06-02
    002
  • 服务器内存为硬件保留32g怎么回事,内存被占用如何释放

    服务器内存显示为“硬件保留”且数值高达32GB,这通常并非硬件故障,而是BIOS配置、系统版本限制或虚拟化机制共同作用的结果,核心结论在于:服务器内存被大量保留,绝大多数情况下可以通过调整BIOS设置、升级系统版本或重新分配资源来释放,无需更换硬件,这种“消失”的内存实质上是系统底层为了特定硬件映射或由于配置不……

    2026-03-09
    009

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信