【问题标题】:Difference between "DROP COLUMN" and "DROP" keywords in PostgreSQLPostgreSQL 中“DROP COLUMN”和“DROP”关键字的区别
【发布时间】:2015-03-02 18:55:23
【问题描述】:

我刚刚注意到您可以在 PostgreSQL 中编写两者。有什么区别还是只是“简化”的语法。 据我所知,两者的作用完全相同。

ALTER TABLE table DROP my_column;

对比

ALTER TABLE table DROP COLUMN my_column;

编辑:我已经四处寻找这个,但找不到任何东西。这包括文档。

【问题讨论】:

  • 你检查过文档吗?
  • @Watercolours 我认为你不了解 PostgreSQL 文档,详情请参阅我的回答
  • 我确实阅读了文档,但错过了说它可以省略的那一行。以及 [] 是可选的。我的错。无论如何,将来将问题留给其他人。

标签: postgresql sql-drop


【解决方案1】:

两种语法含义相同,您可以根据自己的意愿在两种语法中进行选择,对于以下示例,可以使用关键字 COLUMN 更清楚。

ALTER TABLE table DROP COLUMN col1, 
                  DROP COLUMN col2, 
                  DROP COLUMN col3, 
                       .... 
                  DROP COLUMN col_n;  

文档本身描述了关键字COLUMN是可选的,因为 根据文档

ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    action [, ... ]
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column_name TO new_column_name
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    RENAME CONSTRAINT constraint_name TO new_constraint_name
ALTER TABLE [ IF EXISTS ] name
    RENAME TO new_name
ALTER TABLE [ IF EXISTS ] name
    SET SCHEMA new_schema
ALTER TABLE ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
    SET TABLESPACE new_tablespace [ NOWAIT ]

where action is one of:

    ADD [ COLUMN ] column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
    DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]

仅供参考,[] 中写的关键字表示可选

例如。 DROP [ COLUMN ] 这里 COLUMN可选的

【讨论】:

  • 是的,[] 中的单词是可选的,但其中一些可选单词会改变请求的处理方式(例如:IF EXISTS
【解决方案2】:

documentation中所述,可以省略。

关键词COLUMN是噪音,可以省略。

【讨论】:

    【解决方案3】:

    根据hereCOLUMN 是可选的,即语句是等价的。就个人而言,为了清楚起见,我会保留它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 2019-07-07
      • 1970-01-01
      • 2012-05-06
      相关资源
      最近更新 更多