MySQL实际项目中常用的 DDL 模板

✅ 一、建表模板(带审计字段 + 索引)

sql 复制代码
CREATE TABLE `hot_campaign` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
    `campaign_name` VARCHAR(64) NOT NULL COMMENT '活动名称',
    `site` VARCHAR(32) NOT NULL COMMENT '站点',
    `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1启用 0停用',
    `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `created_by` VARCHAR(16) DEFAULT NULL COMMENT '创建人工号',
    `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `updated_by` VARCHAR(16) DEFAULT NULL COMMENT '更新人工号',

    PRIMARY KEY (`id`),
    KEY `idx_site` (`site`),
    KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='营销活动表';

✅ 二、修改表结构(ADD / DROP / CHANGE / MODIFY)

1)新增字段

sql 复制代码
ALTER TABLE `hot_campaign`
ADD COLUMN `last_updated_staff` VARCHAR(16) DEFAULT NULL COMMENT '最后更新人工号';

2)删除字段

sql 复制代码
ALTER TABLE `hot_campaign`
DROP COLUMN `last_updated_staff`;

3)修改字段类型(MODIFY)

仅修改类型,不改字段名

sql 复制代码
ALTER TABLE `hot_campaign`
MODIFY COLUMN `campaign_name` VARCHAR(128) NOT NULL COMMENT '活动名称';

4)修改字段名 + 字段类型(CHANGE)

sql 复制代码
ALTER TABLE `hot_campaign`
CHANGE COLUMN `status` `campaign_status` TINYINT NOT NULL DEFAULT 1 COMMENT '活动状态';

5)修改字段默认值

sql 复制代码
ALTER TABLE `hot_campaign`
ALTER COLUMN `status` SET DEFAULT 1;

✅ 三、索引相关(INDEX / UNIQUE / DROP)

1)新增普通索引

sql 复制代码
ALTER TABLE `hot_campaign`
ADD INDEX `idx_name` (`campaign_name`);

2)新增联合索引

sql 复制代码
ALTER TABLE `hot_campaign`
ADD INDEX `idx_site_status` (`site`, `status`);

3)新增唯一索引

sql 复制代码
ALTER TABLE `hot_campaign`
ADD UNIQUE INDEX `uk_site_name` (`site`, `campaign_name`);

4)删除索引

sql 复制代码
ALTER TABLE `hot_campaign`
DROP INDEX `idx_site_status`;

✅ 四、外键(FOREIGN KEY)

1)新增外键约束

sql 复制代码
ALTER TABLE `coupon`
ADD CONSTRAINT `fk_coupon_campaign`
    FOREIGN KEY (`campaign_id`)
    REFERENCES `hot_campaign` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE;

2)删除外键

sql 复制代码
ALTER TABLE `coupon`
DROP FOREIGN KEY `fk_coupon_campaign`;

✅ 五、表结构变更

1)重命名表

sql 复制代码
RENAME TABLE `hot_campaign` TO `hot_campaign_v2`;

2)设置表的字符集

sql 复制代码
ALTER TABLE `hot_campaign`
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

✅ 六、删除表(DROP)

sql 复制代码
DROP TABLE IF EXISTS `hot_campaign`;
相关推荐
程序员在囧途1 小时前
likeadmin-api API 中转站怎么做统一报价?从 /pricing、/user/balance 到 task_id 回执的落地方法
运维·服务器·数据库·likeadmin-api·api中转站·token计费
龙石数据1 小时前
MySQL 全量同步到 Hive 怎么做?三步配置教程
数据库·hive·mysql·数据治理·数据中台
程序员在囧途2 小时前
likeadmin-api API 算力超市怎么做供应商切换?统一鉴权、task_id 和 callback_url 才能稳交付
java·服务器·数据库·开放api·likeadmin-api·api算力超市
数据工匠老o2 小时前
连接池配置实战——从“连不上“到“连太多“的完整排查指南
数据库
一只专注api接口开发的技术猿3 小时前
电商评论自动化监控与情感数据分析完整落地教程(附可直接运行 Python 代码)
大数据·数据库·python·数据分析·自动化
hh真是个慢性子3 小时前
GaussDB Inside 2.23.01.280 集中式一主一备安装
数据库·database·gaussdb·国产数据库·高斯
沉静的小伙3 小时前
Spring事务
java·数据库·spring
大侠锅锅3 小时前
第 3 篇:节点自动化纳管——从裸机到可管理的 7 步安装流水线
数据库·自动化·边缘计算·iot
笃行3503 小时前
踩坑实战 | MySQL/PostgreSQL 迁移必踩:LEFT JOIN 莫名丢数据,KES 外连接消除避坑指南
数据库
摇滚侠4 小时前
Redis7 零基础到进阶 Linux 离线安装 Redis 09-10
数据库·redis·缓存