首页
/ ActionTech DBLE 项目中的表结构操作语法详解

ActionTech DBLE 项目中的表结构操作语法详解

2025-06-20 07:28:04作者:卓艾滢Kingsley

概述

本文将深入解析ActionTech DBLE项目中支持的SQL表结构操作语法,包括创建表(CREATE TABLE)、修改表(ALTER TABLE)、删除表(DROP TABLE)和清空表(TRUNCATE TABLE)等DDL语句。DBLE作为分布式数据库中间件,在兼容MySQL语法的基础上,对表操作有自己的一些限制和特性。

CREATE TABLE 创建表语法

基本语法结构

创建表的基本语法遵循标准SQL格式,但有一些DBLE特有的限制:

CREATE TABLE [IF NOT EXISTS] 表名
    (列定义,...)
    [表选项]
    [分区选项]

列定义详解

列定义包含列名和列属性,其中列属性包括:

  1. 数据类型:支持MySQL常见数据类型,包括:

    • 整数类型:TINYINT, SMALLINT, MEDIUMINT, INT/INTEGER, BIGINT
    • 浮点类型:FLOAT, DOUBLE, REAL
    • 定点数类型:DECIMAL, NUMERIC
    • 日期时间类型:DATE, TIME, TIMESTAMP, DATETIME, YEAR
    • 字符串类型:CHAR, VARCHAR, BINARY, VARBINARY
    • 文本类型:TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
    • 二进制类型:TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
    • 枚举类型:ENUM
  2. 约束条件

    • NULL/NOT NULL:是否允许空值
    • DEFAULT:设置默认值
    • AUTO_INCREMENT:自增列
    • UNIQUE KEY:唯一键
    • PRIMARY KEY:主键
    • COMMENT:列注释

表选项说明

DBLE支持的表选项包括:

  • ENGINE:存储引擎,仅支持InnoDB
  • CHARACTER SET:字符集
  • COLLATE:排序规则
  • COMMENT:表注释
  • 其他性能相关选项:KEY_BLOCK_SIZE, MAX_ROWS, MIN_ROWS等

分区选项

DBLE支持表分区语法,包括:

  • HASH分区
  • KEY分区
  • RANGE分区
  • LIST分区

注意事项

  1. 枚举类型限制:不建议将含有ENUM类型的表作为分片表。因为ENUM类型既可以使用枚举值插入,也可以使用枚举值下标插入,可能导致分片计算不一致。

  2. 存储引擎限制:仅支持InnoDB引擎。

创建表示例

-- 简单表示例
CREATE TABLE IF NOT EXISTS users (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    age INT DEFAULT 18,
    email VARCHAR(100) UNIQUE KEY COMMENT '用户邮箱'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';

-- 包含多种数据类型的复杂表示例
CREATE TABLE data_types (
    id INT PRIMARY KEY,
    col_bit BIT(1),
    col_decimal DECIMAL(10,2) UNSIGNED ZEROFILL,
    col_date DATE,
    col_datetime DATETIME(3),
    col_text TEXT,
    col_enum ENUM('active','inactive','pending')
);

ALTER TABLE 修改表语法

基本语法结构

ALTER [IGNORE] TABLE 表名
    [修改操作1 [, 修改操作2] ...]

支持的修改操作

  1. 添加列

    ADD [COLUMN] 列名 列定义 [FIRST|AFTER 列名]
    
  2. 修改列

    CHANGE [COLUMN] 旧列名 新列名 新列定义 [FIRST|AFTER 列名]
    MODIFY [COLUMN] 列名 新列定义 [FIRST|AFTER 列名]
    
  3. 删除列

    DROP [COLUMN] 列名
    
  4. 索引操作

    ADD {INDEX|KEY} [索引名] (列名,...)  -- 添加索引
    DROP {INDEX|KEY} 索引名            -- 删除索引
    ADD PRIMARY KEY (列名,...)         -- 添加主键
    DROP PRIMARY KEY                   -- 删除主键
    
  5. 其他操作

    ALTER [COLUMN] 列名 SET DEFAULT-- 设置默认值
    ALTER [COLUMN] 列名 DROP DEFAULT    -- 删除默认值
    COMMENT '字符串'                    -- 修改表注释
    

修改表示例

-- 添加多列
ALTER TABLE users 
ADD COLUMN phone VARCHAR(20) AFTER email,
ADD COLUMN status TINYINT DEFAULT 1 FIRST;

-- 修改列定义
ALTER TABLE users 
CHANGE COLUMN phone mobile VARCHAR(15) COMMENT '手机号码',
MODIFY COLUMN age TINYINT UNSIGNED;

-- 索引操作
ALTER TABLE users
ADD INDEX idx_mobile (mobile),
DROP INDEX idx_email;

-- 主键操作
ALTER TABLE users
DROP PRIMARY KEY,
ADD PRIMARY KEY (id, username);

DROP TABLE 删除表语法

基本语法

DROP TABLE [IF EXISTS] 表名 [, 表名2...]
    [RESTRICT | CASCADE]

选项说明

  • IF EXISTS:表不存在时不报错
  • RESTRICT:如果有依赖对象则拒绝删除(默认行为)
  • CASCADE:级联删除依赖对象

删除表示例

-- 安全删除表
DROP TABLE IF EXISTS temp_users;

-- 级联删除
DROP TABLE users CASCADE;

TRUNCATE TABLE 清空表语法

基本语法

TRUNCATE [TABLE] 表名

注意事项

TRUNCATE TABLE会删除表中所有数据并重置自增计数器,比DELETE语句更高效,但无法回滚。

清空表示例

TRUNCATE TABLE log_records;

总结

ActionTech DBLE项目提供了完整的表结构操作支持,开发者在设计分布式数据库表结构时需要注意:

  1. 合理选择数据类型和约束条件
  2. 避免使用可能导致分片问题的ENUM类型
  3. 修改生产环境表结构前充分测试
  4. 重要操作前做好备份

通过熟练掌握这些DDL语法,可以更好地在DBLE环境中进行数据库设计和维护工作。

登录后查看全文
热门项目推荐

最新内容推荐

项目优选

收起
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
144
1.92 K
kernelkernel
deepin linux kernel
C
22
6
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
192
274
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
930
553
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
422
392
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
145
189
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
75
65
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
344
1.3 K
easy-eseasy-es
Elasticsearch 国内Top1 elasticsearch搜索引擎框架es ORM框架,索引全自动智能托管,如丝般顺滑,与Mybatis-plus一致的API,屏蔽语言差异,开发者只需要会MySQL语法即可完成对Es的相关操作,零额外学习成本.底层采用RestHighLevelClient,兼具低码,易用,易拓展等特性,支持es独有的高亮,权重,分词,Geo,嵌套,父子类型等功能...
Java
36
8