CS - 강의, 서적/[SQLD] 홍쌤의 데이터랩

[SQLD] 2-2~6. SQL (Alias, DUAL Table, SELECT, FROM, WHERE, GROUP/ORDER BY, HAVING)

SH3542 2024. 9. 16. 19:36

[홍쌤의 데이터랩, SQLD n과목 완벽 정리] 영상를 개인이 정리하여 [원작자의 허가 이후] 올린 글이며,

[개인이 추가로 정리한 내용]이 포함되어 있습니다.

 

 

 
 

홍쌤의 데이터랩

[개정판] SQLD n과목 완벽 정리

https://www.youtube.com/watch?v=rdfHFnqVoRw

 

 


 

 

목차

 

    SQL의 순서

    작성 순서

    SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY

    => GROUP BY와 HAVING은 바꿀 수 있지만 잘 사용하지 않음

     

    실행 순서

    FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY

     

    별칭 (Alias)

    테이블이나 컬럼에 임시적인 이름을 부여하여, 쿼리의 가독성을 높이거나 작업을 단순화하는데 사용

     

    -  SELECT절 별칭 선언 시, 실행 순서가 후순위인 ORDER BY절에서만 사용 가능

    - 대소문자를 구분하지 않아도 인식

    - 예약어 사용 불가

     

    별칭을 쌍따옴표로 감싸야 할 경우

    1. 별칭에 공백 포함

    2. 별칭에 특수문자 포함 (_ 제외)

    3. 별칭의 대소문자를 그대로 출력

     

    DUAL 테이블

    - Oracle에서 기본 제공

    - 테이블을 생성할 필요 없이, 연산의 결과를 간략하게 표시하기 위한 가상/더미 테이블

    - DUMMY라는 이름의 단일 행/열 테이블 반환, 기본 값은 문자 "X"

     

     

    e.g.

     

    1)  사용 예시 - 연산 결과

    SELECT 1+1

    FROM DUAL;

     

    2) 사용 예시 - 현재시간

    SELECT SYSDATE

    FROM DUAL;

    SQL 쿼리 구성 요소

    1. SELECT절

    - 연산 및 집계의 결과, 이를 표현할 컬럼명 등 정의

    - 단일행(집계 등)과 복수행 혼재 사용 불가 유의 => GROUP BY 사용

     

    2. FROM

    - 테이블 여러개 전달 가능

    - 조인 조건 없이 테이블명 나열 시, 카타시안 곱 발생 주의

    -  생략 가능 여부 상이 (SQL Server는 생략 가능, ORACLE은 23c부터/이전 버전은 DUAL 테이블 활용)

     

    3. WHERE

    - NULL 조회 시 IS NULL / IS NOT NULL 연산자 사용 ( '=' 연산자 활용 불가)

    - 호환되는 타입끼리 자동 형변환 수행, 그러나 성능 및 안정성 문제로 권장하지 않음

     

    4. GROUP BY

    - 각 행을 특정 조건에 따라 그룹화하는 구문식

    - WHERE절에서 비대상 컬럼 미리 제외 (WHERE절 먼저 실행되므로)

    - 그룹에 대한 조건은 WHERE절에서 사용 불가 (HAVING 사용)

    - 그룹화한 데이터를 그룹화 이전 데이터와 혼재 출력 불가

    - 사용 시 SELECT문에 그룹화한 컬럼, 집계 함수 외 컬럼 사용 불가

     

    5. HAVING

    - 그룹 함수 결과를 조건으로 사용할 때 사용하는 구문식

    - 집계함수 조건식을 주로 사용 (일반 조건식도 사용 가능하나 WHERE절에서 수행 권장)

    - SELECT절 별칭 사용 불가

     

    6. ORDER BY

    - 기본 ASC(오름차순), 이 외 DESC(내림차순)

    - 유일하게 SELECT절 별칭 사용 가능

    - SELECT절에 선언된 순서대로의 숫자로 표시 가능(컬럼명이나 별칭 없이)

    - 정렬 시, ORACLE은 NULL을 마지막에 배치, SQL Server는 처음에 배치

    => 추가로, ORACLE은 ORDER BY절에 NULLS LASH | NULLS FIRST 지정 가능

     

    e.g.

     

    1) 컬럼 명을 숫자로 치환하여 사용

    SELECT id, name, salary
    FROM employees
    ORDER BY 3; -- salary 컬럼을 기준으로 오름차순 정렬