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 [복사할 테이블명]
'DATABASE' 카테고리의 다른 글
MariaDB 손상 복구 관련 정리 자료(1) -InnoDB (0) | 2022.09.27 |
---|---|
[MySQL] trigger로 jsp페이지 호출하기 (0) | 2022.05.26 |
[MySQL] MySQL Explain 실행계획 사용법 및 분석 (0) | 2022.05.03 |
[MSSQL] 엑셀 데이터 가져오기와 에러 해결하기 (0) | 2022.04.22 |
[MySQL] MySQL 쓰면서 하지 말아야 할 것 17가지 (0) | 2022.04.19 |
댓글