ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL_Sub Query_Table 만들기
    Data Base_Oracle/SQL 2020. 1. 7. 23:17

    Sub Query_Table 만들기

    DML작업시에는 항상 백업 Table을 생성해두는 것이 좋음

    § 백업 테이블 만드는 형식

    Full Backup 완전 백업

    [ SQL> create table 백업table명 as select * from 원본table명; ]

    Partial Backup 부분 백업

    [ SQL> create table 백업table명 as select * from 원본table명 where 조건식; ]

    Schema Backup 테이블 구조 백업

    테이블의 구조만 가져오고 데이터는 백업하지 않는 형식

    [ SQL> create table 백업table명 as select 필드명1,필드명2
    from 원본table명 where 1=0; ]
    ※ where 조건식이 거짓이 되도록 설정

     

    § 데이터가 비어 있는 것을 확인하는 방법
    [ SQL> select * from table명; ]
    or [ SQL> count(*) from table명; ]

    # 예제

    { 문제 _ 백업 활용 }
    ▷ emp 테이블에서 부서별로 부서번호, 인원수, 평균급여, 급여합계,
    최소급여, 최대급여를 구하고 이 결과를 저장할 백업 Table 생성
    백업 Table 이름은 emp_deptno로 함

     

    { 에러 }
    ▶ [ SQL> create table emp_deptno as select deptno, count(), avg(sal), sum(sal), min(sal), max(sal) from emp group by deptno;
    1행에 오류:
    *ORA-00998: 이 식은 열의 별명과 함께 지정해야 합니다
    ]

    ※ 그룹함수는 가상필드이며 가상필드는 백업테이블의 실질적인 필드로 복사되지 않음
    → 가상필드에 별칭을 부여해서 일반필드로 만들어줘야 함

     

    { 풀이 }
    ▶▶ [ SQL> create table
    emp_deptno(deptno, e_count, e_avg, e_sum, e_min, e_max)
    as select deptno, count( * ), avg(sal), sum(sal), min(sal), max(sal) from emp
    group by deptno; ]

    이름 널? 유형
    DEPTNO   NUMBER(2)
    E_COUNT   NUMBER
    E_AVG   NUMBER
    ...   ...

    ※ 가상필드와 별칭은 1:1대응관계로 순서와 개수가 일치해야함

     

    ※ 테이블로 저장하는 경우에는 하드디스크에 저장이 됨
    ↔ save로 위와 같은 정보를 조회하는 문장만 txt파일로 저장
    → sql 문장으로 저장해서 호출하는 편이 메모리 사용 부담을 줄여줌

     

    ※ create ~ 와 select~ 가 같이 사용되었기 때문에 서브 쿼리의 한 종류로 보기도 함


    DDL_Create에서의 서브 쿼리 활용을 살펴보았습니다.

    원본 테이블에서 원하는 형태로 백업 테이블을 생성하는 것은

    기존의 테이블에서 원하는 데이터만 조회해서 새로운 테이블을 만드는 것과 같다고 할 수 있습니다.

    'Data Base_Oracle > SQL' 카테고리의 다른 글

    SQL_ROLLBACK  (0) 2020.01.08
    SQL_Sub Query_Update & Delete  (0) 2020.01.08
    SQL_Sub Query Pattern_Inline View  (0) 2020.01.07
    SQL 다중 행 Sub Query_EXISTS 연산자  (0) 2020.01.07
    SQL 다중 행 Sub Query_Any 연산자  (0) 2020.01.07

    댓글

Designed by Tistory.