ALTER TABLE

摘要

ALTER TABLE [ IF EXISTS ] name RENAME TO new_name
ALTER TABLE [ IF EXISTS ] name ADD COLUMN [ IF NOT EXISTS ] column_name data_type [ COMMENT comment ] [ WITH ( property_name = expression [, ...] ) ]
ALTER TABLE [ IF EXISTS ] name DROP COLUMN column_name
ALTER TABLE [ IF EXISTS ] name RENAME COLUMN [ IF EXISTS ] column_name TO new_column_name
ALTER TABLE [ IF EXISTS ] name ADD [ CONSTRAINT constraint_name ] { PRIMARY KEY | UNIQUE } ( { column_name [, ...] } ) [ { ENABLED | DISABLED } ] [ [ NOT ] RELY ] [ [ NOT ] ENFORCED } ]
ALTER TABLE [ IF EXISTS ] name DROP CONSTRAINT [ IF EXISTS ] constraint_name
ALTER TABLE [ IF EXISTS ] ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL

描述

更改现有表的定义。

可选的 IF EXISTS(在表名之前使用时)子句会导致在表不存在时抑制错误。

可选的 IF EXISTS(在列名之前使用时)子句会导致在列不存在时抑制错误。

可选的 IF NOT EXISTS 子句会导致在列已存在时抑制错误。

示例

将表 users 重命名为 people

ALTER TABLE users RENAME TO people;

如果表 users 存在,则将表 users 重命名为 people

ALTER TABLE IF EXISTS users RENAME TO people;

users 表添加列 zip

ALTER TABLE users ADD COLUMN zip varchar;

如果表 users 存在且列 zip 不存在,则向 users 表添加列 zip

ALTER TABLE IF EXISTS users ADD COLUMN IF NOT EXISTS zip varchar;

users 表中删除列 zip

ALTER TABLE users DROP COLUMN zip;

如果表 users 和列 zip 存在,则从 users 表中删除列 zip

ALTER TABLE IF EXISTS users DROP COLUMN IF EXISTS zip;

users 表中的列 id 重命名为 user_id

ALTER TABLE users RENAME COLUMN id TO user_id;

如果表 users 和列 id 存在,则将 users 表中的列 id 重命名为 user_id

ALTER TABLE IF EXISTS users RENAME column IF EXISTS id to user_id;

users 表的列 user_id 上添加约束 pk

ALTER TABLE users ADD CONSTRAINT pk PRIMARY KEY (user_id);

如果表 users 存在,则在 users 表的列 first_namelast_name 上添加未命名、禁用的唯一约束

ALTER TABLE IF EXISTS users ADD UNIQUE (first_name, last_name) DISABLED;

users 表中删除约束 pk

ALTER TABLE users DROP CONSTRAINT pk;

如果表 users 存在且约束 pk 存在,则从 users 表中删除约束 pk

ALTER TABLE IF EXISTS users DROP CONSTRAINT IF EXISTS pk;

users 表的列 zip 添加非空约束

ALTER TABLE users ALTER COLUMN zip SET NOT NULL;

如果表 users 存在,则向 users 表的列 zip 添加非空约束

ALTER TABLE IF EXISTS users ALTER zip SET NOT NULL;

users 表的列 zip 中删除非空约束

ALTER TABLE users ALTER COLUMN zip DROP NOT NULL;

参见

CREATE TABLE