为什么在SQL CREATE TABLE语法中使用“where 1 = 2”?

CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2; 

我在网上的某个地方读了这个声明,但是我不明白WHERE 1=2

请有人解释一下吗?

这种types的命令通常用于将一个表的结构复制到另一个表中。 在这种情况下, EMPL_DEMO将具有与employees相同的列结构, 除了键或约束

1=2总是评估为False ,这会阻止您复制任何行。

CREATE TABLE (创build一个新表)

EMPL_DEMO (称为EMPL_DEMO)

AS (具有数据和结构)

SELECT * FROM employees WHERE 1=2; (员工中的所有东西都是1 = 2,因为1不是2 – 复制结构和所有0匹配的行)

实质上是复制结构而不是数据。

这个语法是一样的,但更明显的是,它创build了一个结构相同的表,没有数据。

 CREATE TABLE EMPL_DEMO AS SELECT * FROM employees limit 0; 

这可以用于复制表的结构,但不包括它的约束,键,索引,标识属性和数据行。

这个查询将创buildEMPL_DEMO表,没有从雇员表复制的行,因为WHERE 1=2条件总是被评估为FALSE

  CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2; 

信任Google,我的朋友。 当你谷歌的声明从第一个结果的底部 :

例如:

 CREATE TABLE suppliers AS (SELECT * FROM companies WHERE 1=2); 

这将创build一个名为供应商的新表,其中包括公司表中的所有列,但没有公司表中的数据。

甲骨文:

 CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2; //just structure not data CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=1; //ststructure and data 

在Teradata数据库中更好地理解:

 CREATE TABLE EMPL_DEMO AS Memployees with no data; //structure CREATE TABLE EMPL_DEMO AS Memployees with data; //structure and data