sql server 中怎么给表中增加一列?

结论:先创建数据表,再用ALTER TABLE加DEFAULT关键字给新列设默认值,确保列类型支持默认值设置。

SQL添加字段的语句怎么写 SQL添加字段语法详细教程

说白了,给SQL表加字段就是用ALTER TABLE加ADD COLUMN,但里面门道不少。

先说最重要的,直接用ALTER TABLE users ADD COLUMN age INT NOT NULL DEFAULT 1 8 就能加字段,但去年我们跑那个电商项目时,光这么干就踩坑了——加NOT NULL没默认值时,必须分三步走:先允许空,更新旧数据,再改约束,否则会直接报错。
另外一点要注意数据类型,比如存金额绝不能选FLOAT,用DECIMAL(1 0,2 )才不会像浮点数那样出精度问题,这个点很多人没注意。
还有个细节挺关键的,像手机号这种带前导零的,必须用VARCHAR,否则数字类型会自动去掉前导零。

我一开始也以为加字段很简单,后来发现不对——MySQL特有AFTER关键字能指定位置,但PostgreSQL就没了,这点调跨数据库时得留心。

备份数据再操作,特别是大表,建议凌晨执行并做好回滚计划。
说实话挺坑的,但只要记住这些,基本就能跑通。

SQL 如何添加自增列

上周试过加自增列。
在MySQL里操作。

表叫 users。
加个列叫 user_id。

语句是: sql ALTER TABLE users ADD COLUMN user_id INT NOT NULL AUTO_INCREMENT;
加完就试了插入数据。
sql INSERT INTO users(name, email) VALUES ('Bob', 'bob@example.com');
发现不用管 user_id。
数据库自己填的。
假设已有两条记录。
第三条插入。
user_id 就是 3
然后改初始值试试。
sql ALTER TABLE users AUTO_INCREMENT = 1 00;
再插一条。
user_id 从 1 00 开始。
是 1 00。

注意:这张表以前没主键。
加完自增列后。
自己设成了主键。

SQL Server 不行。
他们用 IDENTITY。
sql ALTER TABLE users ADD user_id INT IDENTITY(1 ,1 ) PRIMARY KEY;
PostgreSQL 用 SERIAL。
sql ALTER TABLE users ADD COLUMN user_id SERIAL PRIMARY KEY;
Oracle 复杂点。
要先建序列。
sql CREATE SEQUENCE user_seq START WITH 1 INCREMENT BY 1 ; ALTER TABLE users ADD user_id NUMBER DEFAULT user_seq.NEXTVAL;
最烦的是错误 "Multiple AUTO_INCREMENT columns"。
一张表只能一个自增列。

算了。
你看着办。