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

在数据库管理系统中,表是存储数据的基本结构,合理创建表是确保数据高效存储和访问的前提,达梦数据库(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

相关推荐

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信