Oracel database 에서 조건 별로 그룹을 묶는 방법과 그룹별 조건을 주는 방법은
GROUP BY와 HAVING을 사용하면 된다.
그룹별로 묶고 싶을 때는 GROUP BY
구문: group by 칼럼명
급여별 정보 확인하고 싶을 때
group by sal
그룹별로 조건을 주고 싶을 때 HAVING
구문: having 칼럼명
부서별 평균 급여가 1000 이상인 부서만 출력 시,
having avg(sal) >= 1000;
avg()는 값의 평균을 계산해 주고 sal은 급여를 나타내는 칼럼명
JOIN
: 하나의 테이블로 원하는 칼럼 정보를 찾을 수 없을 경우 관련 테이블을 결합하여
정보를 참조하는 방법
구문:
select 칼럼명1, 칼럼명2
from 테이블명1, 테이블명2
where join 조건 and 다른 조건
Q. 급여가 1000에서 2000 사이의 사원 이름(ename), 부서명(dname)을 출력하세요
// 찾고자 하는 부서명이 emp 테이블에 없는 경우, dept 테이블을 Join 해준다.
select ename, dname
from emp, dept
where emp.deptno = dept.deptno and //각 테이블에 동일하게 존재하는 deptno을 연결하여 중복제거
sal between 1000 and 2000;
ANSI JOIN
: 위의 Join과 비슷하지만 이 경우 조인하는 조건의 칼럼명이 같을 때 사용한다.
구문:
select 칼럼명1, 칼럼명2
from 테이블명1
inner join 테이블명2 using(동일하게 존재하는 칼럼명)
where 조건
Q. 직업이 'PROGRAMMER'인 사원의 이름, 입사일, 부서번호, 부서명을 출력하세요
select ename, hiredate, deptno, dname // 차례대로 이름,입사일,부서번호,부서명 출력
from emp // emp테이블에서
inner join dept using(deptno) //emp테이블과 dept테이블 모두 deptno 칼럼을 동일하게 갖고 있어서 ansi join방법 사용
where job = 'PROGRAMMER'; // 조건은 직업이 프로그래머
OUTER JOIN
: 한쪽 테이블에는 해당하는 데이터가 존재하지만 다른 테이블에는 데이터가 존재하지 않을 때에도
모든 데이터가 출력될 수 있도록 하는 방법
구문:
select 칼럼명1, 칼럼명2
from 테이블명1, 테이블명2
where 칼럼명1(+) = 칼럼명2 // 아우터조인 대상 칼럼에 (+) 기호를 추가해 주면 된다.
Q. 사원의 이름, 부서번호, 급여를 출력하세요 (단, emp테이블에 없는 부서도 출력하세요)
select e.ename, d.deptno, e.sal
from emp e, dept d // alias (별칭) 을 각 e와 d로 붙여줬다.
where e.deptno(+) = d.deptno; //emp 테이블 별칭이 있는 e.deptno에 아우터조인(+) 추가
'IT' 카테고리의 다른 글
[GIT & GITHUB] git 이전으로 돌아가기 (add, commit 취소) (0) | 2021.05.04 |
---|---|
[GIT & GITHUB] Git 저장소 생성과 필수 명령어, commit 연습하기 (0) | 2021.05.01 |
[GIT & GITHUB] Git 알고 사용하자! 분산버전관리시스템에 대한 이해 (0) | 2021.05.01 |
[Oracle DB] 실행 순서와 연산자 종류를 모두 알아보기 (0) | 2021.04.24 |
[Oracle DB] 계정 생성부터 테이블 만들기까지 총정리 (0) | 2021.04.22 |