插件窝 干货文章 SQL 如何修改现有列的属性

SQL 如何修改现有列的属性

列名 ALTER COLUMN 修改 684    来源:    2025-03-29

修改SQL表中现有列的属性

在SQL中,修改现有列的属性通常使用ALTER TABLE语句结合ALTER COLUMNMODIFY COLUMN子句(具体语法取决于数据库系统)。以下是几种常见数据库系统中修改列属性的方法:

MySQL/MariaDB

-- 修改列数据类型
ALTER TABLE 表名 MODIFY COLUMN 列名 新数据类型;

-- 修改列名和数据类型
ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 新数据类型;

-- 示例:将age列从INT改为SMALLINT
ALTER TABLE employees MODIFY COLUMN age SMALLINT;

-- 示例:重命名列并修改类型
ALTER TABLE employees CHANGE COLUMN emp_name full_name VARCHAR(100);

PostgreSQL

-- 修改列数据类型
ALTER TABLE 表名 ALTER COLUMN 列名 TYPE 新数据类型;

-- 修改列约束
ALTER TABLE 表名 ALTER COLUMN 列名 SET/DROP NOT NULL;
ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 默认值;

-- 重命名列
ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名;

-- 示例
ALTER TABLE employees ALTER COLUMN salary TYPE DECIMAL(10,2);
ALTER TABLE employees ALTER COLUMN email SET NOT NULL;
ALTER TABLE employees RENAME COLUMN emp_id TO employee_id;

SQL Server

-- 修改列数据类型
ALTER TABLE 表名 ALTER COLUMN 列名 新数据类型;

-- 重命名列
EXEC sp_rename '表名.旧列名', '新列名', 'COLUMN';

-- 示例
ALTER TABLE employees ALTER COLUMN hire_date DATE;
EXEC sp_rename 'employees.emp_dept', 'department', 'COLUMN';

Oracle

-- 修改列数据类型
ALTER TABLE 表名 MODIFY (列名 新数据类型);

-- 重命名列
ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名;

-- 示例
ALTER TABLE employees MODIFY (phone VARCHAR2(20));
ALTER TABLE employees RENAME COLUMN emp_job TO job_title;

注意事项

  1. 修改列数据类型时,现有数据必须能够隐式转换为新类型,否则操作会失败
  2. 某些修改可能导致数据截断(如VARCHAR(100)改为VARCHAR(50))
  3. 在大表上执行此类操作可能需要较长时间并锁定表
  4. 某些数据库系统对某些类型的修改有限制(如SQL Server不能直接修改IDENTITY属性)

在执行列修改前,建议先备份数据或在测试环境中验证操作。