create subquery
- 테이블을 복사할 때 사용.
- 단수행, 복수행 서브쿼리를 모두 사용할 수 있다.
- 원본 데이터블의 제약사항은 복사되지 않는다.(not null 조건은 복사된다.)
- 제약사항
- primary key
- foreign key
- unique
- not null
- check
- default
- 테이블에 설정된 제약사항을 확인하려면 제약사항이 들어있는 DBMS에서 운영하는 테이블을 확인해야함.
- DD(Data Dictionary) : DBMS가 운영되기 위해 사용하는 테이블
- 개발자는 DML작업을 직접 할 수 없다.
- select만 가능
- 조회쿼리에 사용되는 컬럼명, 데이터형, 크기, 레코드가 그대로 복사된다.
- 문법 )
- create table 테이블명 as (select,,,,);
- select : subquery에서 조회된 결과(inline view)로 테이블이 생성된다.
insert subquery
- 다른 컬럼의 값으로 레코드를 추가할 때 사용.
- 단수행,복수행 서브쿼리 모두 사용할 수 있다.
- 단수행 문법 )
- insert into 테이블명(컬럼명,,,,) valuse(값,,,(select 컬럼명 from 테이블명 where ),,);
- 복수행 문법 ) : 정산쿼리
- insert into 테이블명(컬럼명,,,) (select 컬럼명,, from 테이블명);
- select에서 선택된 컬럼의수와 기존 테이블의 컬럼의 수와 같아야함
update subquery
- 단수행 서브쿼리만 가능.
- 다른 컬럼에 존재하는 값으로 변경할 때.
- where 절에 in을 사용하면 복수행 서브쿼리도 사용 가능.
- 문법 )
update 테이블명
set 컬럼명 = (select,,,) -> 단수행 서브쿼리만 가능
where 컬럼명 = (select,,,) -> 복수행 서브쿼리도 가능은 하다.
delete subquery
- 단수행 서브쿼리만 가능.
- 다른 컬럼에 존재하는 값으로 삭제할 때.
- where 절에 in을 사용하면 복수행 서브쿼리도 사용 가능.
- 문법 )
delete from 테이블명 where 컬럼명 = (selet ,,,,)