添加数据库表的 Column(列) 取决于你使用的数据库类型。下面是常见数据库(MySQL / PostgreSQL / SQL Server / Oracle)的通用做法,以及常见注意事项。
ALTER TABLE 表名
ADD 列名 数据类型;
ALTER TABLE user
ADD age INT;
带默认值:
ALTER TABLE user
ADD status TINYINT NOT NULL DEFAULT 1;
指定位置(MySQL 支持):
ALTER TABLE user
ADD email VARCHAR(100) AFTER username;
ALTER TABLE user
ADD COLUMN age INT;
带默认值:
ALTER TABLE user
ADD COLUMN status INT NOT NULL DEFAULT 1;
⚠️ PostgreSQL 不支持指定列位置。
ALTER TABLE user
ADD age INT;
带默认值:
ALTER TABLE user
ADD status INT NOT NULL DEFAULT 1;
ALTER TABLE user
ADD age NUMBER;
带默认值:
ALTER TABLE user
ADD status NUMBER DEFAULT 1 NOT NULL;
ALTER TABLE user
ADD (
age INT,
email VARCHAR(100),
status TINYINT DEFAULT 1
);
✅ 在 Oracle / PostgreSQL 中可用
❌ MySQL 需要分开写或使用多个ADD
| 选项 | 说明 |
|---|---|
NOT NULL |
不允许为空 |
DEFAULT |
默认值 |
UNIQUE |
唯一约束 |
CHECK |
检查约束 |
COMMENT |
注释(部分数据库支持) |
示例(MySQL):
ALTER TABLE user
ADD email VARCHAR(100) NOT NULL DEFAULT '' COMMENT '邮箱';
DEFAULT 可能重写表pt-online-schema-change(MySQL)NOT NULL:自动为 NULLNOT NULL + DEFAULT:自动填充默认值-- MySQL / SQL Server
DESCRIBE user;
-- PostgreSQL
\d user;
如果你愿意,可以告诉我:
我可以帮你写 安全、可执行的 SQL。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。