暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 小小亮 2021-06-10
400

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 constraints 可以使用该DEFERRABLE子句推迟约束。当前,在MemFire中只能推迟外键约束。在语句中的每一行之后,将检查不可延迟的约束。在可延迟约束的情况下,约束的检查可以推迟到事务结束。 标记为 INITIALLY IMMEDIATE 的约束将在语句中的每一行之后进行检查。 标记为 INITIALLY DEFERRED 的约束将在事务结束时检查。

最后修改时间:2021-06-10 16:33:04
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论