Kosta 클라우드 네이티브 애플리케이션 개발 (CNA) 교육 4일차

2024. 11. 20. 17:26Kosta 클라우드 네이티브 어플리케이션 개발(CNA) 교육

Inner Join

  • Default join = Inner join
SELECT d.deptno, d.dname, e.empno, e.ename, e.sal, s.grade 
FROM dept d LEFT (생략가능 inner) 
JOIN emp e ON d.deptno = e.deptno 
LEFT (생략가능 inner) JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal;

Outer Join

  • 조인 후 참조되는 데이터가 없이도 데이터 출력
select d.deptno, d.dname, e.ename 
from emp e, dept d 
where e.deptno(+) = d.deptno order by d.deptno asc; 
(+) 는 뒤에 NULl 값이라도 출력

Non - equal join

  • 범위값으로 참조 연결
select e.ename, e.sal, s.grade, s.losal, s.hisal 
from emp e, salgrade s 
where e.sal > s.losal and e.sal < s.hisal;

NULL 값을 포함하여 emp, deptno, salgrade 테이블 연결

SELECT d.deptno, d.dname, e.empno, e.ename, e.sal, s.grade
from emp e, dept d, salgrade s
where d.deptno = e.deptno(+)
and e.sal between s.losal(+) 
AND s.hisal(+)
ORDER BY d.deptno asc;

SELECT d.deptno, d.dname, e.empno, e.ename, e.sal, s.grade
FROM dept d
LEFT OUTER JOIN emp e ON d.deptno = e.deptno
LEFT OUTER JOIN salgrade s 
ON e.sal BETWEEN s.losal AND s.hisal;

GROUP BY

  • 조건 : HAVING
    • Group의 조건은 Having에 넣어야 한다
    • Where에는 Group 함수를 사용할 수 없다
  • 그룹함수는 group by 없이도 사용할 수 있다.
  • 테이블 전체를 대상으로 그룹짓는다

ORA-00979: not a GROUP BY expression

  • 그룹함수와 일반컬럼을 동시에 출력할 경우 반드시 group by (일반컬럼)

ORA-00937: not a single-group group function

  • Group by 사용할 것

 

GROUP 함수

  • 결측 데이터는 무시
  • COUNT
  • AVG
  • MAX
  • MIN
  • SUM

ROUND : 반올림

  • round(값, 자릿수)
  • select round(10.567, 2) from dual; --> 10.57

CEIL : 올림

  • CELL(값)
  • select ceIl(10.567, 2) from dual; --> 11

FLOOR : 내림

  • FLOOR(값)
  • select FLOOR(10.567) from dual; --> 10

TRUNC : 버림

  • TRUNC(값, 자릿수)
  • select TRUNC(10.567, 2) from dual; --> 10.56

SubQuery

  • 다른 SQL 쿼리 내부에 포함된 쿼리
  • 괄호로 둘러싸여 있음

주요 유형

  1. 스칼라 서브쿼리: 단일 값 반환
  2. 행 서브쿼리: 단일 행 반환
  3. 열 서브쿼리: 단일 열의 여러 행 반환
  4. 테이블 서브쿼리: 여러 열과 행 반환

사용 위치

  • SELECT 절
  • FROM 절
  • WHERE 절
  • HAVING 절

특징

  • 중첩 가능
  • 대부분 독립적으로 실행 가능
  • 성능에 영향을 줄 수 있음

장단점

장점:

  • 복잡한 쿼리 단순화
  • 가독성 향상
  • 유연한 데이터 조작

단점:

  • 과도한 사용 시 성능 저하
  • 복잡성 증가 가능

ANY 연산자

  • 서브쿼리 결과의 어떤 값이라도 조건을 만족하면 TRUE를 반환
  • 하나라도 만족하면 된다
  • 주로 >, <, >=, <=, <> 등의 비교 연산자와 함께 사용

ALL 연산자

  • 서브쿼리 결과의 모든 값이 조건을 만족해야 TRUE를 반환
  • 모두 만족 해야한다
  • 주로 // >, <, >=, <=, <> 등의 비교 연산자와 함께 사용