SQL 활용

(2017-12-21)

Select 쿼리

1. SELECT 쿼리 구문

  ㅇ FROM 절
     - 대상 테이블의 지정
     - 주로, 다중 테이블에 대한 질의 JOIN 조건
        . (레코드 집합집합 간의 집합 연산은, ☞ SQL 조인 참조)
     - JOIN에 대한 추가적인 조건절 
        . ON 조건절
           .. 칼럼명이 다르더라도, JOIN 조건을 구사 가능하게 하며,
           .. 명시적으로 칼럼에 대한 JOIN 조건을 주어 명확하게 해줄 수 있음
        . USING 조건절 
           .. NATURAL JOIN의 경우에, 모든 일치되는 칼럼들에 대해 JOIN이 이루어지나,
           .. USING 뒤에 칼럼명을 주어 원하는 칼럼에 대해서 만 선택적으로 JOIN 수행

  ㅇ WHERE 조건절
     - 개별 행에 대한 조건 만 가능 (그룹핑/집계 함수는 허용 안됨)
        . 즉, 결과 집합을 내기 전에 각 레코드에 조건을 적용
        . 따라서, WHERE 절에는 필드(칼럼)명 만 가능하여, 별칭(alias)을 쓸 수 없음

     - 다중 테이블인 경우에, FROM 절의 JOIN 조건에 해당되는 질의도 가능
        . 이때, 두 테이블에 속한 필드들에 연산자(=,>,<,>=,<=,BETWEEN 등)들을 적용하여,
                JOIN을 구사할 수 있음

  ㅇ HAVING 조건절 
     - 결과 집합에 대해서 만 행별 조건을 적용
        . 즉, 집합 결과에 추가적으로 제한하는 조건을 주는 것
        . 따라서, HAVING 절에는 필드(칼럼)명 대신에 별칭(alias)을 쓸 수 있음

  ㅇ GROUP BY 절
     - WHERE 절 조건이 먼저 적용되고, GROUP BY는 그 결과 만을 그룹핑 함
        . GROUP BY : 결과 집합 대상에 대한 기준

  ㅇ ORDER BY 절
     - 먼저 데이터들이 추출된 후에, 그 결과 집합을 만들면서 정렬 작업이 일어남
        . 즉, 먼저 데이터들이 정렬되는 것이 아님


2. SQL 활용 例)

  ㅇ SELECT 결과 집합의 행 번호 매기기
     - ORACLE : rownum
     - MySQL  : @rownum (세션 변수 활용)
        . (SET @rownum:=0; SELECT (@rownum:=@rownum+1) ... )

  ㅇ Top N 쿼리
     - ORACLE     :  SELECT colnames FROM tablename WHERE ROWNUM <= N
     - SQL Server :  SELECT TOP(N) colnames FROM tablename
     - MySQL      :  SELECT colnames FROM tablename LIMIT N


3. SQL 함수 

  ㅇ 구분
     - 내장 함수
        . 단일 행 함수 : 숫자형 함수, 문자열 함수, 날짜형 함수, 형변환 함수 등
           .. 입력이 단일 행인 경우
        . 다중 행 함수 : 집계 함수, 그룹 함수, 윈도우 함수
           .. 입력이 다중 행인 경우
     - 사용자 정의 함수

  ㅇ 데이터 분석을 위한 그룹핑 기능 관련 함수
     - Aggregate 기능 : COUNT(), SUM(), AVG(), MAX(), MIN() 등 집계 함수
        . 다중 행을 입력 대상으로하나, 그룹 당 단 하나의 결과 만을 주는 집계 함수
     - Group 기능      : 例) ROLLUP, CUBE, GROUPING SETS
     - Window 기능


4. SQL 조건식 구현

  ㅇ (조건 분기)  CASE 식 
     - 조건 분기를 하며, 함수와 같은 성격을 갖음
        . 조건 식에 따라 분기
     - 구문 형식
       
CASE WHEN <평가식> THEN <식>
     WHEN <평가식> THEN <식>
      ...
     ELSE <기타식>
END
- 적용 가능 위치 . SELECT, WHERE, GROUP BY, HAVING, ORDER BY 내 적용 가능 - 표현 방법 구분 . Simple Case Expression (단순 CASE 식) . Searched Case Expression (검색 CASE 식) ㅇ (조건 술어) 쿼리 추출 조건을 기술하는 술어(Predicate) - 술어 종류 . LIKE : 문자열 부분 일치의 검색 (전방 일치, 중간 일치, 후방 일치) . BETWEEN . IS NULL(IS NOT NULL) . IN . EXISTS 5. 테이블 생성 및 갱신 ㅇ 테이블 생성 - 현존 테이블로부터 새로운 테이블 생성 . CREATE TABLE 새테이블명 AS (SELECT * FROM 현테이블명); - 제약조건 (Constraint) . NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK, DEFAULT ㅇ 테이블 갱신 - JOIN 활용 . UPDATE 테이블A a INNER JOIN 테이블B b ON a.i = b.i SET a.갱신컬럼 = (갱신식) 6. [참고사항] ㅇ 다중 테이블에 대한 SQL JOINsSQL JOINs 참조


[SQL] 1. SQL 2. SQL 기초 활용 3. SQL 조인 4. RQBE 5. SAG

 
        최근수정     참고문헌