DATABASE
[Database] where 1=2, where 1=1을 사용하여 테이블 복사하기
예나부기
2022. 5. 23. 15:28
DB 쿼리문을 보다 보면 where절에 1=2, 1=1 등을 사용하는 것을 심심찮게 볼 수 있다.
쿼리문의 조건절에 where 1=1을 쓴다면, 말 그대로 항상 참일 것이고, (true for all rows)
where 1=2를 쓴다면, 항상 거짓일 것이다.(false for all rows)
where 1=2 사용하여 테이블 구조만 복사하기
CREATE TABLE [생성할 테이블명] AS SELECT * FROM [복사할 테이블명] WHERE 1=2;
위와 같은 쿼리문을 사용할 경우, 컬럼명과 데이터 타입이 동일한 테이블을 생성하지만,
key, constraint, 테이블의 데이터는 복사하지 않는다. (1=2인 data는 존재하지 않기 때문)
(중요한 점! 기본키, 외래키가 설정되어 있는 경우 이는 가져오지 않는다는 뜻이다.
auto_increment가 설정되어 있는 경우에도 가져오지 않는다. 오직 동일 이름/동일 데이터 타입의 컬럼만 가져온다.)
where 1=1 사용하여 테이블 구조/데이터 복사하기
CREATE TABLE [생성할 테이블명] AS SELECT * FROM [복사할 테이블명] WHERE 1=1;
위와 같은 쿼리문을 사용할 경우, 테이블의 구조는 물론 데이터도 복사하여 새로운 테이블을 생성한다.
그러나 역시, key, constraint는 복사해 오지 않는다.
아래 쿼리문 돌렸을 때와 동일한 결과값을 얻을 수 있다. (테이블 복사 - 아래 예시는 mysql)
create table [생성할 테이블명] select * from [복사할 테이블명]