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

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

2025-06-20 05:21:34作者:卓艾滢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环境中进行数据库设计和维护工作。

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

热门内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
860
511
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
259
300
kernelkernel
deepin linux kernel
C
22
5
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
595
57
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
332
1.08 K