原始 SQL
ALTER TABLE admin_user
MODIFY COLUMN createdtime DATETIME
NOT NULL
DEFAULT CURRENT_TIMESTAMP
COMMENT '创建时间';
一、整体在干什么?(先有全局)
修改
admin_user表中
createdtime这个字段的定义
⚠️ 不会新建表
⚠️ 不会删数据(前提是数据合法)
二、逐段精讲(核心部分)
1️⃣ ALTER TABLE admin_user
ALTER TABLE admin_user
含义:
对
admin_user这张表做结构修改
常见搭配:
| 语句 | 用途 |
|---|---|
| ADD COLUMN | 新增字段 |
| MODIFY COLUMN | 修改字段 |
| DROP COLUMN | 删除字段 |
| ADD INDEX | 加索引 |
2️⃣ MODIFY COLUMN createdtime DATETIME
MODIFY COLUMN createdtime DATETIME
含义:
修改字段
createdtime的类型 / 属性
⚠️ 注意:
createdtime必须已经存在- MODIFY 会 覆盖这个字段的全部定义
👉 所以后面的 NOT NULL / DEFAULT / COMMENT 必须全写
3️⃣ DATETIME
DATETIME
含义:
字段类型:日期 + 时间
范围:
1000-01-01 00:00:00
~
9999-12-31 23:59:59
4️⃣ NOT NULL
NOT NULL
含义:
该字段不允许为 NULL
⚠️ 前提条件:
- 表里 不能有 NULL / 0000-00-00
- 否则 ALTER 会失败
5️⃣ DEFAULT CURRENT_TIMESTAMP
DEFAULT CURRENT_TIMESTAMP
含义:
插入时,如果没传 createdtime
MySQL 自动填当前时间
效果等价于:
INSERT INTO admin_user (...) VALUES (...);
-- createdtime = NOW()
6️⃣ COMMENT '创建时间'
COMMENT '创建时间'
含义:
字段注释,仅用于说明
- Navicat / DBeaver 可视化显示
- 对程序无影响
- 强烈建议写
7️⃣ ;(结束符)
;
表示:
SQL 语句结束
三、MODIFY vs ADD vs CHANGE(重点对比)
🔹 MODIFY(你现在用的)
MODIFY COLUMN createdtime DATETIME ...
- 字段名不变
- 改类型 / 默认值 / 约束
🔹 ADD(新增字段)
ADD COLUMN createdtime DATETIME ...
🔹 CHANGE(改字段名 + 定义)
CHANGE old_name createdtime DATETIME ...