SQL 如何添加自增列

说白了,在SQL中添加自增列类似于在数据库中安装自动编号机器人。
核心由三步组成:添加列、设置主键、确认没有问题。

我们先来说说最重要的事情。
比如我们去年做电商项目的时候,我们在Orders表中添加了order_id自增列。
我们直接使用ALTER TABLE order ADD COLUMN order_id INT NOT NULL AUTO_INCRMENT PRIMARY KEY。
数据库自动从1 开始递增,插入新订单时无需手动输入ID。
还有一点:如果表本来就有主键,需要先删除它,例如例如。
ALTER TABLE user DROP PRIMARY KEY;,然后将新列设置为主键。
还有另一个关键细节。
MySQL 中的初始值可以更改,例如B. ALTER TABLE 分配 AUTO_INCRMENT = 1 00;从 1 00 开始并不断增加以避免与旧数据发生冲突。

我一开始以为可以随意添加自增列,但后来发现这是错误的。
例如,PostgreSQL 必须使用 SERIAL 类型,而 Oracle 必须创建单独的 SEQUENCE。
您必须事先阅读文档。
等等,还有别的事。
如果表中已经包含多条数据,则新添加的自增列将从一定数量开始递增。
例如,如果表包含2 个部分,则新插入数据的订单ID将自动为3 很多人没有注意到这一点。

最后提醒:一张表只能有一个自增列。
如果您需要多个递增列,例如 比如用户ID和订单号,都是升序排列,你需要使用触发器或者自己写代码来生成这些。
老实说,这很乏味。

sql如何在表中增加一列

老实说,过去向数据库表添加列时速度很快。
我记得第一次向生产表添加列时,我在 MySQL 中工作了一年。
我握了握手,写了CHANGE TABLE USERS ADD COLUMN Age INT NULL DEFAULT 3 0。
结果我就卡在一个地方,一夜没睡好。
后来我意识到这个功能必须等待表密钥被解锁。
如果在经济高峰期存在相同的货币。
这会很容易。

有趣的是,数据类型是最容易遇到问题的。
将带有货币单位的钱包余额列添加到 PostgreSQL 表后,直接使用 VARCHAR。
结果,我投入了“1 00.00 USD”。
系统不报错,但后续查询却乱了。
后来我改成了DECIMAL(1 0, 2 )。
因此,类型的选择一定要根据实际场景而定,不可掉以轻心。

说到约束,NULL可能看起来并不简单,但把它放在错误的地方可能是致命的。
有一次,我在历史订单表中添加了注释列,并且没有使用NULL DEFAULT''。
所以高级人员在提交数据时,注释不能为空直接报告了一个错误。
当时不明白为什么,后来老系统有了字符串处理机制;现在想起来真的很可怕。
我从来没有亲自在这方面运行过 SQL Server,但我知道省略了 COLUMN 关键字,这对于新手来说确实很容易。

备份数据;我们聊了三遍才换桌子。
进入 pgAdmin 后;提取表结构时工具崩溃。
幸运的是,我昨天做了备份。
迁移数据时;即使添加一列也必须先运行测试环境。
我记得添加了一个IP地址字段。
由于磁盘空间较大,服务器CPU被完全占用,CPU值最高升至9 2 %。
外科维修人员吓得差点挡住我。

不同数据库之间的语法差异也很有趣。
SQL Server 的缩写ADD column_name data_type;一旦使用,感觉MySQL的冗余关键字走上了正轨。
但最反人类的是MySQL的DEFAULT 'example@example.com'。
引号应为英文双引号或单引号。
我当时改了三个版本。
启动每个版本后,用户报告电子邮件格式不正确。
我记得数据在 X 左右,但我建议检查 PostgreSQL 中 DEFAULT CURRENT_DATE 的时间准确性。
上次我检查时,时间已经缩短到了几秒。

总的来说,添加列并不困难,但有很多细节。
选择品类时,多思考一下未来十年表格会发生怎样的变化。
不要做出咒骂之类的限制。
备份数据是关键。
注意不同数据库之间的语法差异;不然解码的时候手会抖。