본문 바로가기

자바 웹 개발자가 될거야/DB

[Oracle] GROUP BY절 / HAVING절 / SQL Developer / JOIN절

 

 

< GROUP BY절 >

 

- 테이블안에서 그룹별로 나눠 출력시키고 싶을 때 사용

- SELECT - FROM - [WHERE] - [GROUP BY]

- 그룹함수에 포함되지 않은 컬럼과 포함된 컬럼을 같이 보고 싶을 때

   select절에 있는 컬럼 중 그룹함수에 포함되어있지 않은 컬럼이 GROUP BY절에 포함되어 있어야함

- GROUP BY절 순서에 따라 

 

-- 부서별 평균 급여 조회
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id
SELECT department_id, job_id, sum(salary)
FROM employees
WHERE department_id > 40
GROUP BY department_id, job_id
ORDER BY department_id

 

< Having 절 >

 

- 행 그룹을 제한하는 조건문

- WHERE절은 행을 제한하는 조건문

- SELECT - FROM - [WHERE] - [GROUP BY] - [HAVING]

 

SELECT job_id, SUM(salary)
FROM employees
WHERE jo_id NOT LIKE '%REP%'
GROUP BY job_id
HAVING SUM(salary) > 13000

 

ㅡ실행결과

 

< SQL Developer >

 

 

- 왼쪽 프로그램 탭 - 개발에 SQL Developer로 들어감

 

- 왼쪽 위 초록색 플러스 모양 클릭

 

- 형광펜 친대로 입력하고 접속 클릭

 

- DB 접속 완료

- 만약 접속이 안된다면 터미널창에서 리스너 껐다 켜보시길

  · conn sys/비밀번호 as sysdba

  · shutdown immediate

  · startup

  · lsnrctl start

 

 

① 행번호 삽입하기

 

 

- 도구탭 - 환경설정 클릭

 

- 코드 편집기 하위메뉴 열어서 행여백으로 들어가서 행 번호 표시에 체크

 

 

 

 

< JOIN 절 >

 

 

- 다수의 테이블을 공통된 컬럼을 통해서 연결시켜주기 위한 구문

- 공통으로 존재하는 컬럼을 ON절을 통해서 연결시켜줘야함

- 공통 컬럼은 이름이 같으니까 어떤 테이블에 속하는지 구분하기 위해서 컬러명 앞에 테이블 이름 써줘야함

 

SELECT col1, col2, ... 
FROM 왼쪽 테이블 JOIN 오른쪽 테이블 
ON 왼쪽테이블.동일컬럼=오른쪽테이블.동일컬럼

 

SELECT employee_id, last_name, salary, department_name
FROM employees e JOIN departments d
ON e.department_id=d.department_id;

  · FROM절과 JOIN절 테이블 뒤에 as 생략해서 사용가능함

 

 

table 수 조인조건 수
2 1
3 2
N N-1
SELECT e.employee_id, e.last_name, d.department_name, l.city
FROM employees e JOIN departments d
ON e.department_id = d.department_id
JOIN locations l 
ON d.location_id = l.location_id
WHERE e.employee_id <= 10;

  · ON절 뒤에 where절 올 수 있고 Group By, Order By 알아서 쓰면 됨