program tip

SQL CREATE TABLE 구문에서 "where 1 = 2"를 사용하는 이유는 무엇입니까?

radiobox 2020. 10. 14. 07:41
반응형

SQL CREATE TABLE 구문에서 "where 1 = 2"를 사용하는 이유는 무엇입니까?


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

나는 인터넷 어딘가 에서이 진술을 읽었지만 WHERE 1=2.

누구든지 설명해 주시겠습니까?


이 유형의 명령은 일반적으로 한 테이블의 구조를 다른 테이블로 복사하는 데 사용됩니다. 이 경우, EMPL_DEMO동일한 칼럼 구조를 갖는 것 employees, 키 또는 제한을 제외 .

1=2항상로 평가 False되는이 행 중 하나를 복사에서 당신을 방지 할 수 있습니다.


CREATE TABLE (새 테이블 만들기)

EMPL_DEMO (EMPL_DEMO라고 함)

AS (데이터 및 구조 포함)

SELECT * FROM employees WHERE 1=2; (1 = 2 인 직원의 모든 것. 1은 2가 아니므로-구조와 일치하는 행 0 개 모두 복사)

.. 본질적으로 데이터가 아닌 구조를 복사합니다.


이 구문은 동일하지만 데이터가없는 동일한 구조의 테이블을 만드는 것이 더 분명합니다.

CREATE TABLE EMPL_DEMO AS SELECT * FROM employees limit 0;

이는 제약 조건, 키, 인덱스, ID 속성 및 데이터 행을 제외한 테이블의 구조를 복사하는 데 유용 할 수 있습니다 .

이 쿼리는 조건이 항상로 평가되므로 EMPL_DEMO직원 테이블에서 복사 된 행이없는 테이블을 만듭니다 .WHERE 1=2FALSE

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

내 친구, Google을 신뢰하십시오. 해당 진술을 Google에 검색했을 때 첫 번째 결과의 하단에서 :

예를 들면 :

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

이렇게하면 companies 테이블의 모든 열을 포함하지만 companies 테이블의 데이터는없는 supplier라는 새 테이블이 생성됩니다.


신탁:

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

SQL Server에서

select * into table1 from table2 where 1 = 2 (Only Structure)

* 선택 *을 table2에서 table1로, 여기서 1 = 1 (데이터가있는 구조)

참고 URL : https://stackoverflow.com/questions/45783699/why-use-where-1-2-on-a-sql-create-table-syntax

반응형