티스토리 뷰
테이블(TABLE) 조인
테이블 간 Primary Key - Foreign Key 로 연결하여 관련된 정보들을 가져온다.
실습1 - DEPARTMENTS의 PK인 DEPARTMENT_ID와 EMPLOYEES의 DEPARTMENT_ID로 관계가 형성되어 있다.
이를 이용하여 전체 사원들의 사원 번호, LAST_NAME, 부서명, 부서 번호를 조회한다.
1
2
3
4
5
6
7
8
9 |
-- 전체 사원들의 사원 번호, LAST_NAME, 부서명, 부서 번호를 조회한다.
SELECT EMPLOYEE_ID
, LAST_NAME
, DEPARTMENT_NAME
, D.DEPARTMENT_ID -- 두 개의 테이블에 존재한다면, 어떤 테이블에서 가져오는지 정확히 명시해야한다. (보통 PK로 존재하는 데이터를 가져온다.)
FROM EMPLOYEES E
, DEPARTMENTS D
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID
; |
cs |
실습2 - 커미션을 버는 모든 사람들의 LAST_NAME, 부서 명, 지역 ID 및 도시 명을 조회한다. + 도시명이 Seattle인 것만 조회
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
SELECT LAST_NAME
, DEPARTMENT_NAME -- DEPARTMENTS에 있는 DEPARTMENT_ID와 EMPLOYEES에 있는 DEPARTMENT_ID를 조인
, L.LOCATION_ID -- LOCAIONS에 있는 LOCATION_ID와 DEPARTMENTS에 있는 LOCATION_ID를 조인, 조회할땐 PK인 LOCATIONS에 있는 것으로 조회
, CITY
FROM DEPARTMENTS D
, EMPLOYEES E
, LOCATIONS L
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID -- 빨간줄
AND D.LOCATION_ID = L.LOCATION_ID -- 하늘색줄
AND L.LOCATION_ID = ( -- PK로 찾는 것이 더 빠르다.(성능차이) 그러므로 실무에서는 531줄의 방법을 사용하는 것 보다 더 선호된다.
SELECT LOCATION_ID
FROM LOCATIONS
WHERE CITY = 'Seattle'
)
--AND CITY = 'Seattle'
; |
cs |
실습3 - 부서 명, 위치 ID, 각 부서 별 사원 총 수, 각 부서 별 평균 연봉을 조회한다.평균 연봉은 소수점 2 자리까지만 표현한다.
1
2
3
4
5
6
7
8
9
10 |
SELECT DEPARTMENT_NAME
, LOCATION_ID
, COUNT(EMPLOYEE_ID) "사원수" -- DEPARTMENTS의 DEPARTMENT_ID 와 EMPLOYEES의 DEPARTMENT_ID를 조인하여 EMPLOYEE_ID카운트
, ROUND(AVG(SALARY),2) "평균 연봉"-- 위와 같이 조인하여 SALARY의 평균
FROM DEPARTMENTS D
, EMPLOYEES E
WHERE D.DEPARTMENT_ID = E.DEPARTMENT_ID
GROUP BY DEPARTMENT_NAME
, LOCATION_ID -- 집계 함수 제외한 나머지 것들을 다 적어야한다.
; |
cs |
ROUND - 반올림 함수
ROUND(값, n) : 값을 소수점 n번째 까지 표시한다.
'Database > Oracle' 카테고리의 다른 글
[Oracle] EXISTS (0) | 2016.02.18 |
---|---|
[Oracle] VIEW (0) | 2016.02.18 |
[Oracle] 테이블(Table) 설계 (0) | 2016.02.17 |
[Oracle] 서브쿼리 (0) | 2016.02.16 |
[Oracle] IS NULL, IS NOT NULL, DISTINCT, GROUP BY, HAVING, NVL (0) | 2016.02.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- BFS
- RequestMapping
- jsp
- Spring
- algorithm
- mybatis
- DP
- list
- restfb
- order by
- AlertDialog.Builder
- java
- Baekjoon Online Judege
- sort
- 자바
- onPostExecute
- servlet
- 안드로이드 스튜디오
- maven
- DFS
- 예외처리
- boj
- 이클립스
- REDIRECT
- table
- onBackPressed
- 안드로이드 비콘
- controller
- indexOf
- INSERT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함