SQL

241114 SQL 02 - 단일/다중 행 함수, 그룹별 쿼리, Join

suerte10 2024. 11. 14. 18:21

1. 오라클 함수(function)

1) 단일 행 함수 : 행(row)이 하나씩 함수의 아규먼트로 전달되고, 행 마다 하나씩 결과가 리턴되는 함수.
  * (예) to_date, to_char, lower, upper, nvl, ...

2) 다중 행 함수 : 여러 개의 행들이 함수의 아규먼트로 전달되고, 하나의 결과가 리턴되는 함수.
  * (예) 통계 관련 함수: count, sum, avg, max, min, variance(분산), stddev(표준편차), ...

*** 함수가 단일 행 함수인지 다중 행 함수인지 꼭 구분할 수 있어야함!!

 

 

 

2. 단일 행 함수 실습

1) lower

lower 함수 사용 예시

 

2) to_char

to_char 함수 사용 예시

 

3) nvl

nvl 함수 사용 예시

 

 

 

3. 다중 행 함수 실습

1) count

 

2) 통계

 

3) 단일 행 함수와 다중 행 함수는 함께 사용할 수 없음!

  (1) select sal, sum(sal) from emp; --> 에러 발생
  (2) select nvl(comm, 0), sum(comm) from emp; --> 에러 발생

 

 

 

4. 그룹별 쿼리

*** group by에 없는 칼럼은 select에 입력할 수 없음!! ***

 

빨간색 숫자는 실행 순서

 

빨간색 숫자는 실행 순서

 

[m] where절은 테이블에서 조건식에 해당하는 레코드들을 리턴해주고, having절은 group by로 나눠진 그룹들에서 조건식에 해당하는 그룹을 리턴해준다.

 

 

 

5. Join

1) 조인이란 : 2개 이상의 테이블에서 데이터를 검색하는 방법.

EMP 테이블과 DEPT 테이블에 deptno 이라는 공통된 컬럼이 있는 상황을 가정하고 표현한 join 예시
EMP 테이블
DEPT 테이블

 

2) 조인의 종류

  (1) inner join
  (2) outer join : left outer join, right outer join, full outer join

    * inner와 outer 글자는 생략가능

 

3) 조인 문법

  (1) ANSI 표준 문법

select 컬럼, ...
from 테이블1 join종류 테이블2 on 조건


  (2) Oracle 문법

select 컬럼, ...
from 테이블1, 테이블2, ...
where 조건식;

 

 

 

6. Inner Join

1) Inner Join을 실행하면 테이블이 새로 만들어진다.

inner join 실행 결과 테이블 예시

 

2) 새로 만들어진 테이블에서 select절에 입력한 컬럼들이 검색된 결과를 볼 수 있다.

select절에 컬럼을 입력했을 때 결과 예시
Oracle 문법으로 동일한 작업을 작성한 예시

 

3) 컬럼 이름이 겹치지 않을 경우 컬럼 앞에 테이블 명을 명시하지 않아도 된다.

4) alias를 쓰지 않고 테이블 이름 전체를 입력해도 된다.

 

 

 

7. Outer Join

1) left outer join

 

2) right outer join

3) full outer join

ANSI 문법으로 작성한 full join 구문
Oracle 문법으로 작성한 outer join 구문

 

 

 

8. equi-join / non-equi join

1) equi-join : join의 조건식이 = 연산자를 사용해서 만들어진 경우.
2) non-equi join : join의 조건식이 부등호를 사용해서 만들어진 경우.

non-equi join 예시(1)(inner join)
non-equi join 예시(2)(left join)

 

 

 

9. self join

self join 예시(1)(inner join)

 

self join 예시(2)(left join)

 

 

※ 함수 > 메서드 : 클래스 안에 있는 함수가 메서드

(Java는 함수가 클래스 안에서만 실행될 수 있기 때문에 메서드라고 부르는거)

 

union : 합집합, intersect : 교집합