Acorn Academy 11-16

Bae Seong Jun·2023년 11월 16일

Acorn academy

목록 보기
3/70

여기서 구문보고 교재의 예제로 각 구문 사용법 익히기

구문들이 반환하는 결과값의 타입(형)은 확실히 인지해두기.
기능
주로 사용되는 위치
문법이 좀 특이하면 기억 더 해두기

DECODE(비교할 데이터들이 있는 컬럼명,
비교값1, 결과값1.
비교값2, 결과값2
...)
동등비교
컬럼의 각 데이터들이 비교값과 같은지 순서대로 확인하며 같은 값이 있다면 남은 비교값이 있어도 멈추고 해당하는 결과값을 반환함

CASE()
범위비교
조건문

그룹함수
COUNT 함수 : 레코드(행)(해당 열의 데이터들)의 갯수를 구하는 함수

SUM(DISTINCT | ALL | Column)
Column 데이터들의 합을 구하는 함수
NULL 은 제외하고 계산
DISTINCT 기입시 중복된 값은 제외하고 계산

AVG()
MAX(), MIN()

COUNT 함수 * * * * *

칼럼의 행의 개수 반환 (NULL값 제외)
DISTINCT를 앞에 넣으면 중복되는 값들은 제외하고 개수를 반환함
COUNT(*) : 전체 행의 개수 반환 (중요)

GROUP BY
WHERE -> GROUP BY ->ORDER BY 순서로 작동함
WHERE 절에는 그룹함수를 사용할 수 없다고함.

SELECT [ 단순 컬럼 ,] 그룹함수 , 그룹함수2
FROM 테이블명
[WHERE 조건식][GROUP BY 단순 컬럼]
[ORDER BY 표현식];

다중 그룹핑
SELECT TO_CHAR(HIREDATE, 'YYYY') 년, TO_CHAR(HIREDATE, 'MM') 월, SUM(SAL)
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY'), TO_CHAR(HIREDATE, 'MM')
ORDER BY 년 ASC;

HAVING
WHERE 를 거치고 그룹된 것들을 한번 더 정제하는 구문

SELECT DEPTNO, COUNT() FROM EMP
GROUP BY DEPTNO
HAVING COUNT()>5; --

SELECT DEPTNO, SUM(SAL) FROM EMP
GROUP BY DEPTNO
HAVING SUM(SAL) >= 8000
ORDER BY 1;

조인

참조 당하는 departments 테이블을 부모 테이블 또는 master 테이블이라고 부르고
참조하는 employees 테이블을 자식 테이블 또는 slave 테이블이라고 부른다.

외래키 : 자식에있는 부모를 참조하고있는 COLUMN
EX) EMP에 있는 DEPTNO

조인의 종류
오라클 조인과 오라클 이외의 DBMS에서도 사용 가능한 ANSI 조인 2가지 방법이 있다. 2가지 방법은 문법만 다르고 동작 방식은 비슷하다.

오라클 조인
eq 조인
별칭사용시 -> 별칭만 사용 필수
중복컬럼시 지정 필수
non-eq조인
조인 테이블 2개이상 where 1조인 and 2조인 and 검색조건

ANSI 조인

Natural 조인

  • 공통컬럼이 필수 (오라클 조인의 Equi처럼)
  • 문제가 있어서 잘 안씀 (동등컬럼이 2개면 어떤걸 기준으로 조인될지 모르는 문제)

CROSS 조인

  • 행의 갯수를 곱한 수만큼 행이 나오는 무식한 조인법이라서 잘 쓰지 않는다.

USING 절을 사용한 조인

  • select * from a join b using(c);
  • a 와 b 테이블을 조인. 단, 공통된 컬럼 c가 명시될 수 있어야함.
  • 동등컬럼이 있을 때
  • using 사용시에는 중복컬럼이 생기지 않음
  • 그래서 지정해주면 에러가 남 (e.depno 이런거 에러)

ON 절을 사용한 조인

  • select * from a join b on 조건문;
  • a 와 b 테이블을 조인. on절 뒤에 조건문을 이용하여 조인의 방식이 정해진다.
  • 동등 조인이 아닐때 사용할 수 있다.
  • 하지만 동등 컬럼끼리의 조인이여도 사용이 가능하다.
  • using보다 넓은 개념의 조인이라고 생각이 된다.

그냥 JOIN은 공통 컬럼에 NULL값이 있으면 그 데이터는 표시가 안된다.

LEFT OUTER JOIN : 왼쪽 테이블에 NULL값이 있는 행까지 다 나오게 해달라
DEPTNO 가 NULL인 EMP테이블이 DEPT테이블과 조인할때 해당 조인으로 조인하면 NULL인 DEPTNO를 가진 값들도 나머지 값이 NULL로 채워져서 출력된다.

  • select * from a lefr outer join b {on절|using절}
  • a 와 b 테이블을 조인. 왼쪽에 있는 a 테이블의 조인조건 일치되는 값이 없어도 NULL로 채워서 모두 출력해준다.

RIGHT OUTER JOIN : 오른쪽 테이블의 조인조건 일치 여부와 상관없이 모두 출력되게 한다.

FULL OUTER JOIN : 양쪽 테이블의 조인조건 일치 여부와 상관없이 모두 출력되게 한다.

profile
코딩 프로?

0개의 댓글