SQLD 자격증 SQL 기본 및 활용 기출문제 / SQL시험 32회 시행

2020. 8. 13. 11:42SQL/SQLD - SQL 기본 및 활용

# SQL 네 번째 : 기출문제 오답 및 개념 정리

 

#2019년 3월 16일 시행 시험 개념및 오답 정리 - SQL 기본 및 활용

 

1. ALTER문 구성

-ALTER TABLE 테이블명 ADD COLUMN(칼럼 추가)

-ALTER TABLE 테이블명 DROP COLUMN(칼럼 삭제)

  테이블에서 필요 없는 칼럼을 삭제, 데이터가 있으나 없으나 삭제가능

  한 번에 하나의 칼럼만 삭제 가능하며 칼럼 삭제 후 최소 하나 이상의 칼럼이 테이블에 존재해야한다.

-ALTER TABLE 테이블명 MODIFY COLUMN(칼럼 수정)

  테이블에 존재하는 칼럼의 데이터 유형, 디폴트 값 NOT NULL 제약조건에 대한 변경을 한다.

-ALTER TABLE 테이블명 RENAME COLUMN TO(칼럼명 수정)

-ALTER TABLE 테이블명 ADD CONSTRAINT(제약 조건 추가)

-ALTER TABLE 테이블명 DROP CONSTRAINT(제약 조건 삭제)

 

2. SQL문 종류

   

   1) DDL : Data Definition Language (테이터 정의어)

       테이블과 같은 데이터 구조, 데이터 틀을 정의하는데 사용되는 명령어, 구조를 생성, 변경, 삭제

       명령어 : CREATE, ALTER, DROP, RENAME, TRUNCATE

 

   2) DML : Data Manipulation Lan-guage(데이터 조작어)

        데이터를 조회, 검색, 입력, 수정, 삭제를 수행하는 명령어

        명령어 : SELECT, INSERT, UPDATE, DELETE

 

    3) DCL : Data Control Language (데이터 제어어)

         데이터베이스에 접근, 객체들을 사용하도록 권한을 주고 회수하는 명령어

         명령어 : GRANT, REVOKE

 

    4) TCL : Transaction Control Lan-guage(트렌젝션 제어어)

         논리적인 작업 단위를 묶어서 데이터들을 제어하는 명령어

         명령어 : COMMIT, ROLLBACK, SAVEPOINT

 

3. RANGE BETWEEN start_point AND end_point

- start_point는 end_ponint와 같거나 작은값이 들어간다.

- Default 값은 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW이다.

- UNBOUNDED PRECEDING : star_point만 들어갈 수 있으면, 파티션의 첫 번째 로우이다.

- UNBOUNDED FOLLOWING : end_point만 들어갈 수 있으며, 파티션의 last row가 된다.

- CURRENT ROW : star, end_point 둘 다 가능, 윈도우는 CURRENT ROW에서 start하거나 end 한다.

 

4. key의 개념

key는 데이터 베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성이다.

 

key의 종류

1) 기본키(Primary key)

-후보키 중에서 선택한 Main key로 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성값이다.

-Null 값을 가질 수 없다(개체 무결성의 첫 번째 조건)

-기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.(개체 무결성의 두 번째 조건)

 

2)후보키(Candidate key)

-릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분 집합이다.

-모든 릴레이션은 반드시 하나 이상의 후보키를 가져야 한다.

-릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족한다.

 

3)대체키(Alternate key)

-후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 의미한다.

-보조키라고도 불린다.

 

4)슈퍼키(Super Key)

-한 릴레이션 내에 존재하는 속성들의 집합으로 구성된 키이다.

-릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합에서는 동일한 값이 나타나지 않는다.

  즉, 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만 최소성은 만족하지 않는다.

 

5)외래키(Foreign key)

-관계를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의

  기본키와 같은 값을 가지는 R1 릴레이션의 속성을 의미

-외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는 데 사용된다.

-외래키로 지정되면 참조 테이블의 기본키에서 없는 값은 입력할 수 없다(참조 무결성 조건)

 

5.계층형 조회(Connect by) 

-Connect by는 트리(Tree) 형태의 구조롤 질의를 수행하는 것으로

  START WITH구는 시작 조건을 의미하고 CONNECT BY PRIOR는 조인 조건이다.

-Root 노드로부터 하위 노드의 질의를 실행한다.

-계층형 조회에서 MAX(LEVEL)을 사용하여 최대 계층 수를 구할 수 있다.

  즉, 계층형 구조에서 마지막 Leaf Node의 계층값을 구한다.

 

 

 

 

-위의 예를 보면 4*LEVEL-1이 있다. LEVEL 값이 Root이면 1이 된다. 따라서 4*(1-1)=0이 된다.

-즉, Root일 때는 LPAD(',',0)이므로 아무런 의미가 없다.

-하지만, LEVEL 값이 2가 되면 4*(2-1)=4가 된다. LPAD('',4)이므로 왼쪽 공백 4칸을 화면에 찍는다.

-결과적으로 LPAD는 트리 형태로 보기 위해서 사용한 것이다.

-왜냐하면 LEVEL 값은 Root에 1을 되돌리고 그다음 자식은 2, 그리고 그다음 자식은 3이 나오기 때문이다.

 

6.CONNECTY BY 키워드

-LEVEL : 검색 항목의 깊이를 의미한다. 즉,계층구조에서 가장 상위 레벨이 1이 된다.

-CONNECT_BY_ROOT : 계층구조에서 가장 최상위 값을 표시한다.

-CONNECT_BY_ISLEAF : 계층구조에서 가장 최하위를 표시한다.

-SYS_CONNECT_BY_PATH : 계층구조의 전체 전개 경로를 표시한다.

-NOCYCLE : 순환구조가 발생지점까지만 전개된다.

-CONNECT_BY_ISCYCLE : 순환구조 발생 지점을 표시한다.

 

 

7.그룹 함수 (Group Function)

1)ROLLUP : GROUP BY 칼럼에 대해서 Subtotal을 만들어 준다. (전체 합계)

  ex) GROUP BY ROLLUP(부서번호) -> 부서별 전체 합계 계산

        (컬럼의 순서가 바뀌면 결과도 바뀐다.)

 

2)GROUPING SETS : GROUP BY에 나오는 칼럼의 순서와 관계없이 다양한 소계를 만들 수 있다.

GROUPING SETS : GROUP BY에 나오는 칼럼의 순서와 관계없이 개별적으로 모두 처리한다.

ex) GROUP BY GROUPING SESTS(부서번호, 직업);

      -> 부서번호별 합계와 직업별 합계가 개별적으로 조회됨.

     (전체합계 안나옴, 컬럼 순서 상관 없음)

 

3)CUBE : CUBE 함수에 제시한 칼럼에 대해서 결합 가능한 모든 집계를 계산한다.

다차원 집계를 제공하여 다양하게 데이터를 분석할 수 있게 한다

ex)  GROUP BY CUBE(부서번호, 직업);

      -> 부서별 합계, 직업별 합계, 부서별 직업별 합계, 전체합계 조회됨.