插件窝 干货文章 PostgreSQL如何添加列?

PostgreSQL如何添加列?

添加 COLUMN TABLE ALTER 114    来源:    2025-03-28

PostgreSQL 添加列方法

在PostgreSQL中,您可以使用ALTER TABLE语句来向现有表添加新列。以下是几种常见的添加列的方法:

基本语法

ALTER TABLE table_name ADD COLUMN column_name data_type [constraints];

示例

  1. 添加一个简单列(不带约束):
ALTER TABLE employees ADD COLUMN email VARCHAR(100);
  1. 添加带默认值的列:
ALTER TABLE employees ADD COLUMN hire_date DATE DEFAULT CURRENT_DATE;
  1. 添加带NOT NULL约束的列(需要同时指定默认值):
ALTER TABLE employees ADD COLUMN department VARCHAR(50) NOT NULL DEFAULT 'Unassigned';
  1. 添加多个列:
ALTER TABLE employees 
ADD COLUMN phone VARCHAR(20),
ADD COLUMN address TEXT;
  1. 添加带检查约束的列:
ALTER TABLE products 
ADD COLUMN discount_price NUMERIC(10,2) 
CHECK (discount_price > 0 AND discount_price < price);

高级选项

  1. 指定列位置(PostgreSQL 12+):
ALTER TABLE employees ADD COLUMN middle_name VARCHAR(50) AFTER first_name;
  1. 添加生成列(PostgreSQL 12+):
ALTER TABLE orders 
ADD COLUMN total_price NUMERIC(10,2) 
GENERATED ALWAYS AS (quantity * unit_price) STORED;

注意事项

  • 添加列时,现有行中的新列将被填充为NULL或指定的默认值
  • 对于大表,添加列可能会锁定表并影响性能
  • 添加NOT NULL约束的列必须同时指定默认值
  • 某些操作可能需要表级锁,在生产环境中应考虑在低峰期执行

您需要根据具体需求选择合适的添加列方式。