여기서 구문보고 교재의 예제로 각 구문 사용법 익히기
구문들이 반환하는 결과값의 타입(형)은 확실히 인지해두기.
기능
주로 사용되는 위치
문법이 좀 특이하면 기억 더 해두기
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 조인
CROSS 조인
USING 절을 사용한 조인
ON 절을 사용한 조인
그냥 JOIN은 공통 컬럼에 NULL값이 있으면 그 데이터는 표시가 안된다.
LEFT OUTER JOIN : 왼쪽 테이블에 NULL값이 있는 행까지 다 나오게 해달라
DEPTNO 가 NULL인 EMP테이블이 DEPT테이블과 조인할때 해당 조인으로 조인하면 NULL인 DEPTNO를 가진 값들도 나머지 값이 NULL로 채워져서 출력된다.
RIGHT OUTER JOIN : 오른쪽 테이블의 조인조건 일치 여부와 상관없이 모두 출력되게 한다.
FULL OUTER JOIN : 양쪽 테이블의 조인조건 일치 여부와 상관없이 모두 출력되게 한다.