일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 문제풀이
- 코딩
- 파이썬
- 빅데이터
- 메시지시스템
- 내일배움카드
- 리스트
- 썸머스쿨예약
- 자바스크립트
- 딥러닝
- ux
- jsp
- 패스트캠퍼스
- 덴디컨설팅
- iOS개발강의
- 전주독서실
- 광주직업학교
- ui
- 서블릿
- 스프링
- 머신러닝
- 코린이
- 자바
- K디지털크레딧
- 자바페스티벌
- java
- 전주스터디카페
- 바이트디그리
- Python
- 스마트인재개발원
- Today
- Total
멀리 보는 연습
DATABASE_조인 본문
1. 조인이란?
- 조인은 각 테이블 간에 공통된 칼럼(조건)으로 데이터를 합쳐 표현하는 것
- 조인시킬 테이블들의 data(행) 연결을 할 때 무결성이 보장되어야 함
1) n-1 규칙
n-1 = 조인 대상 테이블의 개수 = 조인 조건 개수, where 절에 명시
2) 조인 테이블에 똑같은 이름의 column 명시할 때 반드시 소유주인 테이블 이름을 접두어로 명시(ex. e.last_name)
*예시01
우리 회사에 근무하는 사원의 이름과 그 사원이 근무하는 부서 이름을 출력하시오.
select last_name, department_name from employees, departments where employees.department_id=departments.department_id |
'employees e, departments d'로 알리야스 변형해서 쉽게 사용 가능
select e.last_name, d.department_name, e.department_id from employees e, departments d where e.department_id=d.department_id |
2. 조인 유형
1) 등가 조인 ( 동등 조인, EQUI 조인,내부 조인, 단순 조인)
>> equi (같은 데이터 존재시, 실무의 99% 차지)
데이터 타입만 같으면 된다.
* 예시01
90번 부서에 근무하는 사원의 이름과 급여, 근무하는 부서 이름을 출력하시오.
select e.last_name, e.salary, d.department_name, l.city from employees e, departments d, locations l where e.department_id=d.department_id and d.location_id = l.location_id |
2) non equi
between A and B 와 같은
3) 포괄조인 (아우터 조인)
>> 한쪽에 null 값이 존재할 경우 모두 표기하기 위해서 (+)를 삽입
1 select e.last_name, e.salary, d.department_name 2 from employees e, departments d 3* where e.department_id=d.department_id(+) |
4) 셀프조인
테이블에 자기 자신을 조인 시키는 것
select F.empno, F.ename, S.empno, S.ename, S.job from emp F inner join Emp S on F.job = S.job where F.empno < S.empno order by F.empno, S.empno; |
우리 회사에 근무하는 사원의 번호와 이름, 그 사원을 관리하는 관리자 번호와 관리자 이름을 출력하시오.
1 select e.employee_id, e.last_name, e.manager_id, m.last_name 2 from employees e, employees m 3* where e.manager_id=m.employee_id |
3. AVG 및 SUM 함수 사용
SQL> select avg(salary), sum(salary) 2 from employees; |
AVG와 SUM은 숫자 데이터에 대해서만 연산 가능
1 select min(hire_date), max(hire_date) 2* from employees |
최초 입사일, 최후 입사일
1 select min(last_name), max(last_name) 2* from employees |
알파벳 순으로 이름 처음과 끝
1 select count(*) 2* from employees |
출력이 되는 행의 총 개수
1 select count(*) 2 from employees 3* where department_id=50 |
50번 부서에서 근무하는 사원 수
1 select count(distinct department_id) 2* from employees |
count 함수 다음에는 all, distinct 두가지가 놓일 수 있음
'Study > DATABASE' 카테고리의 다른 글
DATABASE_서브쿼리 (0) | 2021.05.31 |
---|---|
DATABASE_group by, SQL 구문 실행 순서, having (0) | 2021.05.31 |
DATABASE_연산자, where, order by, 비교 조건 예제 (0) | 2021.05.23 |
DATABASE_명령문 (0) | 2021.05.23 |
DATABASE_용어 (0) | 2021.05.23 |