CA 40 – 修改表
发布: (2026年3月29日 GMT+8 21:37)
2 分钟阅读
原文: Dev.to
Source: Dev.to
在 customers 表中将 email 设置为 NOT NULL
ALTER TABLE customers
ALTER COLUMN email SET NOT NULL;确保以后插入的行必须有 email 值。
在 users 表中使 username 唯一
ALTER TABLE users
ADD CONSTRAINT unique_username UNIQUE (username);防止用户名重复。
在 products 表中添加检查约束 price > 0
ALTER TABLE products
ADD CONSTRAINT price_check CHECK (price > 0);现在 price 不能为零或负数。
在 orders 表中将默认 status 设置为 'pending'
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'pending';如果未提供 status,它将自动设置为 'pending'。
在 employees 表中添加 salary 列并附加条件
ALTER TABLE employees
ADD COLUMN salary INT NOT NULL;
ALTER TABLE employees
ADD CONSTRAINT salary_check CHECK (salary > 10000);salary 不能为空,且必须大于 10,000。
修改外键,使删除部门时同时删除其员工
ALTER TABLE employees
DROP CONSTRAINT employees_department_id_fkey;
ALTER TABLE employees
ADD CONSTRAINT employees_department_id_fkey
FOREIGN KEY (department_id)
REFERENCES departments(id)
ON DELETE CASCADE;现在删除部门会自动删除其关联的员工。
从 accounts 表中移除检查约束 balance >= 0
ALTER TABLE accounts
DROP CONSTRAINT accounts_balance_check;移除 balance 列上的检查约束。
在 payments 表中使 user_id 与 transaction_id 的组合唯一
ALTER TABLE payments
ADD CONSTRAINT unique_payment UNIQUE (user_id, transaction_id);防止同一用户的交易重复。
通过本练习,我了解到 ALTER TABLE 用于在不删除表的情况下修改表结构,这在数据库已经有数据时非常有用。