MemFireDB SQL语法 - ALTER TABLE 语句(更改表)

小小亮 2021-06-10
164

ALTER TABLE

概要

使用ALTER TABLE语句更改现有表的定义。

语法

alter_table ::= ALTER TABLE [ ONLY ] name [ * ]  alter_table_action                   [  , ... ]                                            alter_table_action ::= ADD [ COLUMN ] column_name  data_type                           [ alter_column_constraint [ ... ] ]                           | RENAME TO table_name                           | DROP [ COLUMN ] column_name                             [ RESTRICT | CASCADE ]                           | ADD  alter_table_constraint                           | DROP CONSTRAINT constraint_name                             [ RESTRICT | CASCADE ]                           | RENAME [ COLUMN ] column_name TO column_name                           | DISABLE ROW LEVEL SECURITY                           | ENABLE ROW LEVEL SECURITY                           | FORCE ROW LEVEL SECURITY                           | NO FORCE ROW LEVEL SECURITY                                                        alter_table_constraint ::= [ CONSTRAINT constraint_name  ]                                 { CHECK (  expression )                                   | UNIQUE (  column_names )                                     index_parameters                                   | FOREIGN KEY (  column_names )                                     references_clause  }                                 [ DEFERRABLE | NOT  DEFERRABLE ]                                 [ INITIALLY  DEFERRED                                   | INITIALLY  IMMEDIATE ]                                                                    alter_column_constraint ::= [ CONSTRAINT  constraint_name ]                                 { NOT NULL                                   | NULL                                   | CHECK (  expression )                                   | DEFAULT  expression                                   | UNIQUE  index_parameters                                   |  references_clause }                                [ DEFERRABLE |  NOT DEFERRABLE ]                                [ INITIALLY  DEFERRED                                   | INITIALLY  IMMEDIATE ]  

语义

ALTER TABLE [ ONLY ] name [ * ] alter_table_action [ , ... ] 更改指定的表和依赖项。

  • ONLY 将更改限制为指定的表

ADD [ COLUMN ] column_name data_type constraint 添加具有指定数据类型和约束的指定列。

RENAME TO table_name 将表重命名为指定的表名。

DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] 从表中删除命名列。

  • RESTRICT 仅删除指定的

ADD alter_table_constraint 添加具有指定数据类型和约束的指定列。

DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ] 从表中删除命名列。

  • RESTRICT —仅删除指定的约束。
  • CASCADE —删除指定的约束和所有依赖关系。

**RENAME [ COLUMN ] column_name TO column_name ** 将列重命名为指定名称。

ENABLE / DISABLE ROW LEVEL SECURITY 这将启用或禁用表的行级安全性。如果启用并且该表不存在任何策略,则将应用默认拒绝策略。如果禁用,则将不应用该表的现有策略,并将其忽略。有关如何创建行级安全策略的详细信息,请参见创建策略。

FORCE / NO FORCE ROW LEVEL SECURITY 当用户是表所有者时,这将控制表的行安全策略的应用。如果启用,则当用户是表所有者时,将应用行级安全策略。如果禁用(默认设置),则当用户是表所有者时,将不应用行级安全性。有关如何创建行级安全策略的详细信息,请参见创建策略。

CONSTRAINT constraint_name 指定约束的名称。

Foreign key FOREIGN KEY和REFERENCES指定外键。它用于强制数据的参照完整性。 Unique 这将强制UNIQUE约束在表中指定的列集在表中是唯一的,也就是说,对于约束中指定的列集,没有两行可以具有相同的值 Check 这用于强制指定表中的数据满足该CHECK子句中指定的要求。 Default 用于指定列的默认值。如果INSERT语句未为该列指定值,则使用默认值。如果没有为列指定默认值,则默认值为NULL。

Deferrable