代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

在用编程语言编写SQL时,使用自然联接或隐式列名不是一个好的实践吗?

  •  1
  • nonopolarity  · 技术社区  · 14 年前

    当使用自然联接时,当两个表具有相同的列名时,我们将联接表。但是如果我们用PHP编写它,然后DBA向这两个表中添加更多的字段,那么自然的连接就会中断呢?

    如果我们做一个

    insert into gifts values (NULL, "chocolate", "choco.jpg", now());
    

    然后,当DBA向表中添加一些字段(例如列2或3)时,它将破坏代码并污染表。因此,当SQL语句在编程语言中写入并存储在大型项目的文件中时,最好总是拼出列名。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Community Bayu Bramantya    7 年前

    是的,最好明确地命名您所关注的列。正如您所指出的,这可以防止在有人向表中添加列时中断查询。

    这同样适用于优先选择列表中的列,而不是写入 SELECT * . 见 this related question .

        2
  •  2
  •   Oded    14 年前

    无论你在哪里写,自然连接都不是一个好主意。它们隐藏了更显式的代码将暴露的含义,并且在列名更改时可能引入细微的错误。

        3
  •  1
  •   matei    14 年前

    是的,最好是明确地说明您的字段。否则,当您修改模式时,代码将中断。

    推荐文章