SQL 10-7. 서브 쿼리 구문을 사용한 테이블 생성
관련링크
본문
첫 번째 방법은
․ CREATE TABLE문과 AS subquery 옵션을 결합하여 테이블을 생성하고 행을 삽입한다.
․ 지정한 열 수를 서브 쿼리 열 수 와 일치시켜야 한다.
․ 열 이름 및 기본값을 사용하여 열을 정의한다.
CREATE TABLE table
[(column, column...)]
AS subquery;
구문 설명 :
table 테이블 이름이다.
column 열 이름, 기본값 및 무결성 제약 조건이다.
subquery 새 테이블에 삽입될 행의 집합을 정의하는 SELECT문이다.
두 번째 방법은 AS subquery 절을 적용하여 테이블 생성과 서크 쿼리에 의해 반환되는 행 삽입을 모
두 수행하는 것이다.
지침
․ 지정한 열 이름을 사용하여 테이블을 생성하며 SELECT문에 의해 검색된 행을 테이블에 삽입한다.
․ 열 정의에는 열 이름과 기본값만 포함시킬 수 있습니다.
․ 열 명세가 제공되는 경우 열 수는 서브 쿼리의 SELECT목록에 있는 열 수와 동일해야 한다.
․ 열 명세가 제공되지 않는 경우 해당 테이블의 열 이름은 서브 쿼리의 열 이름과 동일한다.
․ 무결성 규칙은 새로운 테이블에 전달되지 않으며 열 데이터 유형 정의만 전달된다.
예제) 서브 쿼리를 사용한 테이블 생성
오라클 디비 예제 :
CREATE TABLE dept80
AS
SELECT employee_id, last_name, salary*12 ANNSAL, hire_date
FROM employees
WHERE department id = 80;
Table created.
DESCRIBE dept80
☞설명) 다른 테이블의 행으로부터 테이블 생성(계속)
예제는 부서80에서 일하는 모든 사원에 대한 자세한 정보를 포함하는 DEPT80 테이블을 생성한다.
DEPT80 테이블의 데이터는 EMPLOYEES 테이블에서 가져온다.
iSQL*plus DESCRIBE 명령을 사용하여 데이터베이스 테이블의 유무 및 열 정의를 확인할 수 있다.
표현식을 선택할 때 열 별칭을 지정해야 한다.
표현식 SALARY*12에는 별칭 ANNSAL이 지정되다.
별칭이 없으면 다음 오류가 생성된다.
------------------------------------------------
ERROR at line 3 :
ORA-00998 : must name this expression with a column alias
from pubs.dbo.employee
where pub_id=0877
sp_columns dept80
select * from dept80'
-------------------------------------------------
테이블형식만 가져오기
SELECT * into dept81 from pubs.dbo.employee
where 1=2
select * from dept81