ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (4) - WHERE & GROUP
    자격증/SQLD (SQL 개발자) 2021. 5. 3. 13:28
    728x90
    반응형

     

     

    SQLD 요약 / SQL Developer 요약

    🔑 WHERE/ 연산자/ LIKE/ 와일드카드/ BETWEEN/ IN/ NULL/ GROUP BY/ HAVING/ 집계함수

     

     

    II. SQL 기본 및 활용

       01. SQL 기본

              [1] 관계형 데이터베이스

              [2] SQL 종류

              [3] DDL (Data Definition Language)

              [4] DML (Data Manipulation Language)

              [5] WHERE문 사용

              [6] GROUP 연산

              [7] SELECT문 실행 순서

     

     



     

    01. SQL 기본

     

    [5] WHERE문 

    (1) WHERE문 | 조건을 지정하기 위함

    • WHERE문이 사용하는 연산자: 비교/ 부정비교/ 논리/ SQL/ 부정SQL 연산자
    비교 연산자 부정 비교 연산자
    = 같은 것을 조회 ! = 같지 않은 것을 조회
    < 작은 것 ^ = 같지 않은 것
    < = 작거나 같은 것 < > 같지 않은 것
    > 큰 것 NOT 칼럼명 = 같지 않은 것
    > = 크거나 같은 것 NOT 칼럼명 > 같지 않은 것

     

    논리 연산자
    AND 조건을 모두 만족해야 TRUE
    OR 조건중 하나만 만족해도 TRUE
    NOT 반대로 바꿈: TRUE → FALSE / TRUE → FALSE

     

    SQL 연산자 부정 SQL 연산자
    LIKE '%비교문자열%' 비교문자열 조회 NOT BETWEEN A AND B A와 B 사이에 해댱되지 않는 값
    BETWEEN A AND B A와 B 사이의 값 조회 NOT IN (list) list 값과 불일치한 값 조회
    IN (list) list 값 중 하나만 일치해도 조회 IS NOT NULL NULL값 아닌 것 조회
    IS NULL NULL값 조회    

     


     

     

    (2) LIKE, BETWEEN, IN

    • LIKE문: 와일드카드(%, _)를 사용하여 데이터 조회
    와일드카드 예시 조회하는 데이터
    % WHERE stdname LIKE 'Lee%'; 'Lee'로 시작하는 모든 데이터를 조회
    WHERE stdname LIKE '%Yoon'; 'Yoon'으로 나는 모든 데이터를 조회
    WHERE stdname LIKE '%Seo%'; 중간에 'Seo'가 있는 모든 데이터를 조회
    WHERE stdname LIKE 'Lee'; 와일드카드%를 사용하지 않으면 '='와 같음
    _ (underscore) WHERE stdno LIKE '1_'; '1'로 시작하고, 그 뒤에 문자 1개만 더 있는 데이터를 조회 

     

     

    • BETWEEN문: 지정된 범위에 있는 값을 조회
    BETWEEN문 예시 조회하는 데이터
    BETWEEN A AND B WHERE stdno BETWEEN 10 AND 20; 10이상 20이하 사이의 값을 조회
    NOT BETWEEN A AND B WHERE stdno NOT BETWEEN 10 AND 20; 10미만 20초과인 값을 조회

     

     

    • IN문: OR의 의미를 가짐 → 리스트 내에서 1개의 조건만 만족해도 조회
    예시 조회하는 데이터
    SELECT * FROM STUDENT
    WHERE stdname IN ('Lee', 'Kim');
    stdname이 'Lee'이거나, 'Kim'인 데이터를 조회
    SELECT * FROM STUDENT
    WHERE (stdname, stdgrade) IN (('Lee', 3), ('Kim', 4));
    여러 칼럼에 대한 조건 지정: 칼럼명에 대응되도록 입력함
    stdname, stdgrade 칼럼 2개에 대한 조건을 지정함

     


     

     

    (3) NULL값 | 모르는 값 or 없는 값

    • NULL값 조회
    NULL 특징 NULL값 조회
    - 모르는 값 & 값의 부재를 의미함 - IS NULL : NULL인 데이터를 조회
    - NULL에 숫자 or 날짜를 더하면 → NULL - IS NOT NULL : NULL이 아닌 데이터를 조회
    - NULL과 어떤 값을 비교하면 → '알 수 없음' 반환  

     

     

    • NULL 관련 함수: NVL, NVL2, NULLIF, COALESCE
    NULL 함수 예시 조회하는 데이터
    NVL : NULL이면 다른 값으로 바꿈 NVL(stdno, 0) stdno칼럼이 NULL이면 0으로 바꿈
    NVL2 : NVL + DECODE 합친 기능 NVL2(stdno, 1, 0) stdno칼럼이 NULL이면 0, 아니면 1
    NULLIF : 두개의 값이 같으면 NULL NULLIF(stdno, deptno) stdno, deptno 같으면 NULL, 다르면 stdno
    COALESCE : NULL이 아닌 최초의 값 COALESCE(exp1, exp2, exp3, ...) exp1이 NULL이 아니면 exp1, 그렇지 않으면 뒤로..
    # (1) NULL값과 산술연산하면 결과는 NULL
    SELELCT (13/null)*2 FROM DUAL;
    
    # (2) COALESCE 예시: 결과값 2
    SELECT COALESCE(NULL, '2', '1') FROM DUAL;

     

     


     

    [6] GROUP 연산

    (1) GROUP | 테이블에서 일부만 그룹화하여 집계함

    • GROUP BY: 테이블에서 소규모 행을 그룹화 → 합계, 평균, 최댓값, 최솟값 등을 계산

    • HAVING: GROUP BY에서 사용하는 조건절
    • 조건절 주의: HAVING은 GROUP BY 내에서 조건 적용함
      - 만약 WHERE절로 사용하면, GROUP BY 밖에서 조건을 적용
        → 조건을 충족하지 못하는 데이터는 GROUP BY 대상에서 제외됨

     

     

    (2) 집계함수

    • 집계함수 종류: COUNT, SUM, AVG, MAX, MIN, STDDEV, VARIAN

    • COUNT(*) : NULL값을 포함한 모든 행의 수
    • COUNT(col) : 해당 칼럼에서 NULL값을 제외한 행의 수
    집계함수 기능 집계함수 기능
    COUNT() 행 수 MAX(), MIN() 최댓값, 최솟값
    SUM() 합계 STDDEV() 표준편차
    AVG() 평균 VARIAN() 분산

     

     

    [7] SELECT문 실행 순서 | FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY

    • 사용 예제들
    # (1) 학과별, 학년별 장학금 평균 계산
    SELECT deptno, stdgrade, AVG(stdschol)
      FROM STUDENT
      GROUP BY deptno, stdgrade;
        
    
    # (2) 학과별 장학금 합계가 1000 이상인 학과
    SELECT deptno, SUM(stdscol)
      FROM STUDENT
      GROUP BY deptno
      HAVING SUM(stdschol) >= 1000;
        
        
    # (3) 학번 1000 ~ 1500 번의 학과별 장학금 합계
    SELECT deptno, SUM(stdschol)
      FROM STUDENT
      WHERE stdno BETWEEN 1000 AND 1500
      GROUP BY deptno;

     


     

    참고도서: SQL 개발자 이론서+기출문제_이기적, 2020

     

     

    728x90
    반응형