본문 바로가기

국비

11.14 국비학원 28일차 (ROLLUP, CUBE, GROUPING 함수, DDL-TABLE)

  • GROUP BY 절에 사용하는 함수

        - ROLLUP 함수 : 그룹으로 묶기 위한 조건이 1개 이상인 경우에 사용하며 그룹에 대한 소계, 총계를 추가로 생성함

                                    함수에 작성한 컬럼 순서대로 1개 컬럼에 대한 집계, 2개 컬럼에 대한 집계를 생성함

        - CUBE 함수 : 그룹으로 묶기 위한 조건이 1개 이상인 경우에 사용하며 그룹에 대한 소계, 총계를 추가로 생성함

                                함수에 작성한 컬럼의 조합 가능한 모든 집계를 생성함

총계, 부서ID, 직무ID, 부서&직무ID 각각의 집계 생성

        - GROUPING 함수 : ROLLUP, CUBE 함수를 사용하여 나타낸 집계에 대해 어떤 컬럼을 기준으로 그룹화 했는지 구분

                                         할 수 있도록 해주는 함수. 함수 실행 결과 0 이 나오면 해당 컬럼이 사용됨을 알 수 있음

        - GROUPING SETS : GROUP BY 로 집계한 여러 Record Set 결과를 하나의 Record Set 결과로 합칠 때 사용

 

  • 집합 연산자

        - 2개 이상의 Record Set 결과를 하나의 Record Set 결과로 만드는 연산자

        - UNION, UNION ALL, INTERSECT, MINUS 연산자가 있다.

 

        - UNION : 합집합. 중복된 결과는 하나만 반영함

        - UNION ALL : 합집합. 중복된 결과까지 전부 반영함

        - INTERSECT : 교집합

        - MINUS : 차집합

다른 집합 연산자도 마찬가지로 사용하면 됨

 

  • DDL

        - 데이터 정의어. 데이터를 저장하고 다루기 위한 객체를 생성(CREATE),수정(ALTER),삭제(DROP) 하는 구문 제공

        - ORACLE 에서 사용하는 객체로는 TABLE, SEQUENCE, VIEW, USER, PROCEDUAL, FUCNTION 등이 있다

 

  • TABLE

        CREATE TABLE <테이블명> (

                      <컬럼명1> <데이터타입> [제약조건]

                    , <컬럼명2> <데이터타입> [제약조건]

                     . . .

         ) ;

 

        - 데이터 타입

              CHAR(크기) : 고정길이 문자 타입, 크기는 바이트 단위 입력. 최대 2000Byte 저장 가능 (한글은 3바이트 처리)

                                     문자의 길이로 크기 정하는 경우 CHAR(크기 CHAR) 형식 사용

              VARCHAR2(크기) : 가변길이 문자 타입. 크기는 바이트 단위 입력. 최대 4000Byte 저장 가능 (한글은 3바이트)

                                              문자의 길이로 크기 정하는 경우 VARCHAR2(크기 CHAR) 형식 사용

                                               예상되는 가장 큰 문자 길이로 크기 CHAR 을 정하면 된다.

              NUMBER : 숫자타입 (실수도 숫자타입에 포함됨)

              NUMBER(크기, [소수점자리수]) : 지정한 소수점 자리수의 실수 데이터 저장 가능

                                                                 NUMBER(5,2)  →  정수 3자리, 소수점 2자리 범위로 저장 가능

              DATE : 날짜 타입

              LONG : 가변길이 문자 타입. 2GB 까지 저장 가능

              LOB : 가변길이 바이너리 타입. 2GB 까지 저장 가능

              BLOB : 대용량 데이터 저장용 객체, 4GB 까지 저장 가능(바이너리 타입)

              CLOB : 대용량 데이터 저장용 객체, 4GB 까지 저장 가능(문자타입)

              TIMESTAMP : 타임스탬프 타입(날짜 타입의 확장)

 

        - 제약 조건

              NOT NULL : NULL 데이터 저장을 허용하지 않음

              UNIQUE : 중복값 저장을 허용하지 않음 (NULL 에 대해서는 중복 체크 하지 않는다.)

              PRIMARY KEY : NULL, 중복값 저장을 허용하지 않음 (NOT NULL + UNIQUE 결합), 기본키 라고 함

              FOREIGN KEY : 참조하는 테이블의 컬럼의 값이 존재하는 경우에만 허용 (다른 테이블의 값을 참조)

                                          외래키 라고 함

              CHECK : 지정된 값만 저장할 수 있게 만드는 용도

              DEFAULT : (제약 조건이 아니나 제약 조건이 작성되는 부분에 사용되니 여기에 작성)

                                 기본값을 설정하여 데이터 추가 작업에 누락이 되어 있어도 기본값이 저장되도록 함

 

          #위의 제약 조건을 위반하는 데이터의 추가/수정/삭제 작업이 이루어지는 경우 "제약조건 위반"이라는 에러발생

 

        - 제약 조건 작성 방법

              컬럼 레벨 : 컬럼명, 데이터 타입 옆에 작성하는 것

                                기본키, 유니크키, 외래키, NOT NULL, CHECK, DEFAULT 가 해당

              테이블 레벨 : 컬럼명, 데이터 타입 처럼 쉼표 이후에 작성하는 것. 단, 모든 컬럼정보 작성 후 제약조건을 작성한다

                                    기본키, 유니크키, 외래키, CHECK 가 해당

 

          # 추가 내용

             - 참조하는 키에는 유니크 또는 기본키 설정이 되어 있어야 한다.

             - 자식 레코드에서 부모 레코드를 참조하는게 있으면 부모 레코드는 삭제가 안된다

             - ON DELETE SET NULL 을 사용하면 참조값이 있어도 삭제 가능. 삭제하면 NULL 값이 반환된다.

             - ON DELETE CASCADE 을 사용하면 부모 레코드를 지우면 그를 참조하는 자식 레코드도 제거된다.

             - 외래키 참조할 때는 자식 테이블 먼저 지우고 부모 테이블을 지워야 오류가 나지 않는다