개발 1도 모르는 사람

[ Oracle & SQL ] DQL 명령어 정리 (2) 본문

Oracle & SQL/SQL

[ Oracle & SQL ] DQL 명령어 정리 (2)

지구젤리귀여워 2023. 10. 13. 12:09
728x90

DQL (Data Query Language) 명령어 설명  [ 안에서 세부적으로 조건을 지정해줄 때 사용하는 명령어 ]

  [검색], [조회] 명령어. EX) SELECT ( SELECT와 관련된 검색, 조회 명령어 = DQL )

  데이터베이스에서 [검색] 하고 [조회] 하는데 사용
  DQL SELECT 문을 사용해서 데이터를 검색하고 필터링 하며 원하는 정보를 추출하는데 사용

 

 

DQL에 대해 두번째 정리를 하려고 한다. 오늘은 JOIN 과  CASE 를 정리할 것이다.

JOIN 같은 경우는 생각보다 유용하다 같은 계정안에 존재하는 다른 테이블에 있는 값

공통으로 존재하는 PRIMARY KEY (고정 키) 를 기준으로 값을 정렬한다.

보통 테이블마다 역할이 있는데 그 역할을 나누고 그걸 합쳐서 출력할 때 쓰인다.

 

============================================================================================
      ┌ㅡㅡㅡㅡ┐
       |  JOIN    ㅣ
      └ㅡㅡㅡㅡ┘

    JOIN     : 다수의 테이블을 연결하여 데이터를 결합하는데 사용
             INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 등, 결합유형이 다양함
      예제코드 ) SELECT o.OrderID, c.CName
                FROM Order o
                INNDER JOIN Customers ON o.CID (o.C_ID가 있다면) = c.C_ID;

  JOIN 내 다양한 JOIN 문 설명 작성


    INNER JOIN : 데이터베이스에서 여러 테이블 간의 관계를 설정하고        
                            데이터를 결합하는데 사용 두 개 이상의 테이블을 연결하여 공통된 값을 기준으로 행을 결합


    LEFT JOIN  : 왼쪽 테이블 (첫 테이블)의 모든 행을 포함
                          오른쪽 테이블에서 일치하는 행을 선택
                          왼쪽 테이블에 있는 모든 행이 결과 집합에 포함되고
                          오른쪽 테이블과 일치하는 행이 없으면 NULL 값 포함

    RIGHT JOIN : 오른쪽 테이블의 모든 행을 포함
                            왼쪽 테이블에서 일치하는 행을 선택
                            오른쪽 테이블에 있는 모든 행이 결과 집합 포함
                            왼쪽 테이블과 일치하는 행이 없으면 NULL 값 포함

    FULL JOIN (FULL OUTER JOIN)  : 
                 왼쪽 테이블과 오른쪽 테이블의 모든 행을 포함 
                 양쪽 테이블의 데이터를 모두 가져옴,
                 일치하는 행이 있는 경우에는 해당 데이터를 포함
                 왼쪽 테이블 또는 오른쪽 테이블의 한쪽에만 있는 데이터는 NULL 값이 포함됨 
                 (주로 양쪽 테이블의 모든 데이터를 가져와야할 때 사용)


    JOIN (= INNER JOIN) : 일치하는 행만 반환
    LEFT JOIN : 왼쪽 테이블의 모든 행을 반환
    RIGHT JOIN : 오른쪽 테이블의 모든 행 반환
    FULL JOIN : 양쪽 테이블의 모든 행을 반환

============================================================================================

 

============================================================================================
      ┌ㅡㅡㅡㅡ┐
       |  CASE  ㅣ
      └ㅡㅡㅡㅡ┘

CASE는 유용하긴 하나 설명하기가 애매해다. 대체로 SELECT 문에서 쓰이는데

( WHEN 조건에 해당하는 값 THEN 변경할 값 ) 으로  쓰이는데 이는 생각보다 유용하다.

Java 를 배웠다면 이해하기가 좀더 수월할 것 이다. Java의 for문 과 같이 else도 쓰이고

END 로 닫아줘야 한다.


    CASE 문 : 
            조건에 따라 다른 결과를 반환하는데 사용 
            CASE 문은 주로 SELECT 문에서 사용
            다양한 조건에 따라 다른 값을 출력하거나 계산하는데 유용
      예제코드)
      SELECT 컬럼명, 컬럼명,
            CASE
                WHEN 조건1 THEN 결과1 (조건에 따라 표현하고자 하는 결과작성)
                WHEN 조건2 THEN 결과2
                WHEN 조건N THEN 결과N
                ELSE '나머지결과'
            END AS 'CASE문의 결과를 반환할 컬럼명'
      FROM '테이블명'

      코드설명 : 
          CASE 다음에 WHEN 절을 사용해서 조건을 지정
          조건이 만족되는 경우 해당 조건의 결과를 반환
          THEN : 조건을 만족했을 때 반환할 결과 값을 지정
          여러 WHEN을 사용해서 여러 조건을 처리할 수 있으며, 각 조건에 해당하는 결과를 정의
          ELSE 모든 조건이 만족되지 않을 때 반환할 기본값을 정의하는데 사용 (선택사항)
          END  CASE문을 종료함을 나타내는 절
============================================================================================