使用SQL的ALTER语句进行表结构修改

显然,ALTER TABLE是SQL中改变表结构的关键,但如果使用不当,很容易使数据库变得混乱。

先说最重要的一点,修改列类型或者删除列的时候要小心一点——去年我们跑那个电商项目,把库存表的INT类型改成了BIGINT。
结果一半数据直接失效了,我们花了半个晚上才恢复数据。
另外,MySQL和PostgreSQL的语法也有很大不同。
例如,MySQL 使用 MODIFY COLUMN,而 PostgreSQL 直接使用 ALTER COLUMN,每次都会产生错误。
还有一个非常重要的细节。
重命名表时,标准SQL是RENAME TO,但MySQL需要使用RENAMETABLE。
SQL Server直接调用sp_rename存储过程。
这正是数据库生产者的“爱与责任”。

一开始我以为 ALTER 操作很快,但后来我发现有些不对劲。
对包含 3 000 万行的用户表建立索引继续导致在线服务瘫痪。
系统监控显示CPU峰值达到2 00%。
等等,还有别的事。
有些数据库在改变结构时会自动锁表,比如Oracle。
在修改计划期间,其他操作必须等待。
您需要先查看文档进行确认。

建议在进行更改之前先备份表,尤其是大表,然后再次运行测试环境。
不要第一次直播就把自己砍死。
其实最值得尝试的就是临时的日程安排。
当需求改变时,直接删除并重新创建比ALTER更快。

openGauss高级数据库管理:ALTER TABLE语句

ALTER TABLE 是更改表结构的命令。
简而言之,操作包括添加、删除和修改查找表字段、重命名表、重命名约束和更改架构。

我上周刚刚处理了一个请求,客户想要添加一个新字段。
只需使用 ALTER TABLE ADD COLUMN。
您想更改字段类型吗?也使用该命令。

想要更改表名吗?更改表旧名称重命名为新名称。
简单直接。

您还想更改约束名称吗? ALTER TABLE RENAME CONSTRAINT old_name TO new_name。

柱级安全开关?启用 ALTER TABLE ROWLEVELSECURITY。
虽然不常用,但这个功能是存在的。

如何移动桌子?更改表集架构 new_schema。
请注意,这是家庭变更,而不是移动数据。

使用哪个子句要看情况,自己考虑一下。