为什么在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