sql 改字段名称

说白了,SQL Server和MySQL中更改字段名的方法完全不同,但都很容易出问题。

SQL Server 有两种方法。
第一种是最直接使用 ALTER TABLE 语法。
例如,要将“Employees”表的“EmpName”更改为“EmployeeName”,请运行 ALTER TABLEEmployees RENAME COLUMN EmpName TO EmployeeName。
去年我们在这个项目中使用了它。
我们当时认为这样效果很好,但后来发现,如果我们更改的列名是存储过程参数的名称,则必须再次更改整个内容。
说实话,这很令人沮丧。
还有一点是sp_rename存储过程比较灵活,但是用多了很容易忘记“COLUMN”后缀,比如把Orders.OrderDate改成CreateDate,但我基本上不使用这种方法,因为担心升级SQL Server版本后出现兼容性问题。
MySQL 的 ALTER TABLE CHANGE COLUMN 语法必须具有数据类型,即使它只是更改名称,例如 ALTER TABLE Users CHANGE UserName Uname VARCHAR(5 0)。
很多人不注意这一点。
如果直接使用ALTER TABLE Users CHANGE UserName Uname,会报错,因为MySQL默认会保留原来的数据类型。
还有另一个关键细节。
如果数据类型不变但想确认字段名称冲突,例如将Products.ProductPrice改为Price,则需要添加DECIMAL(1 0,2 ),否则MySQL会错误地认为您忘记更改类型。

一开始我以为PostgreSQL和Oracle的语法类似,后来发现这是错误的。
对于 PostgreSQL,只需使用 ALTER TABLEEmployees RENAME COLUMN EmpName TO EmployeeName。
对于 Oracle,您必须使用 ALTER TABLEEmployees RENAME COLUMN EmpName TO EmployeeName 或重建表。
这些数据库提供商喜欢让自己与众不同。

提醒一下,无论你使用什么系统,在修改字段之前一定要保存数据,尤其是大表。
去年我们把OrderDate表改成Orders表的时候,因为没有提前检查索引,花了两个小时才把整个表扫描完了,差点被老板炒了。
建议在非高峰期运行,最好先运行测试环境。

如何修改一个已存在的数据库名称?