2022-01-26(수요일) [DB,join]

복습) 12. 이름에 a 및 e자가 있는 직원의 이름을 조회하시오.

13. 급여는 2500, 3500, 7000가 아니라 직업이 SA_REP나 ST_CLERK 인사원의 이름, 급여, 직업을 출력하시오.

  1. 여러 테이블의 데이터 표시(join)
  • 당사에 근무하는 직원의 이름과 그 직원이 근무하는 부서명을 출력하시오 – join 기능 : 여러 테이블에서 데이터를 검색, 시스템 내부적으로 조인대상 테이블을 한 테이블에 조합 -> 칼럼과 행을 한 줄로 조합 -> 한 줄로 조합할 때 조합된 행은 반드시 무결성이 보장되어야 한다 -> 완전성을 보장하기 위한 조건 필요 (did=did) -> 조인조건은 반드시 where절에 n-1가지만 명시되어야 한다 -> 조인조건이 생략되거나 잘못 작성된 경우 커티션성이 발생하지 않아야 한다 -> 조건을 명시해야 한다.
  • – 조인 유형 (오라클 전용) 1. 등가 조인 (equi) : 데이터가 같을 때 2. 끓는 가 조인 (non-equi) : 데이터가 다를 때 3. 포괄 조인 (outer) : 한 테이블에 데이터가 많을 때 4. 독자 조인 (self) : 테이블 하나를 가지고 수행하는 조인

※ 주의!!

-> 두 테이블에 department_id가 포함되어 있으므로 고유값이 아닌 오류가 발생함 -> n-1에 해당하는 조인조건 where 명시 -> 같은 이름의 컬럼을 명시할 때는 반드시 테이블 이름을 명시하여야 함!

※ 코딩 편하게 하는 방법!! (alias 사용)

  1. from 절에서 테이블 이름을 alias를 이용하여 변경하면 코딩을 간소화할 수 있다.

*등가 조인이란?: 참조 키와 기본 키가 연결되어 있는 상태

1-1) AND 연산자를 사용한 추가 검색 조건

  • > 조인 후 조건식을 작성하고자 하면 AND 연산자를 이용하여 조건식을 작성
  • ※ 주의!!

-> e.department_id와 d.department_id가 조인되고 d.department_id와

*employees 테이블의 NULL 값은 departments 테이블에 없으므로 아우터 조인트를 사용

  • >outer 연산자는 부족한 쪽 테이블에 null 값을 삽입해 준다.->outer 연산자를 반대로 employees 테이블에 사용할 경우 departments 테이블에 없는 사람이 없는 부서가 빈다?

문제)

16. 급여가 15000 이상인 직원의 이름과 급여, 그 직원이 근무하는 부서명을 출력하시오.

17. 연봉이 150,000 이상인 사원의 이름과 연봉, 그 사원이 근무하는 부서명과 부서가 위치한 지역 번호를 출력하시오. 다만 연봉은 AnnSal로 출력하세요

18. IT라는 부서에 근무하는 직원의 이름과 급여, 부서의 지역 번호를 출력하시오.

19. 커미션을 받는 모든 사람의 이름, 부서명, 지역 ID, 도시명을 출력하시오.

1-2) 비등가 조인: 데이터가 동일하지 않을 때 수행하는 조인

  • > 이런 경우에 사용
  • >이렇게 조인(비등가조인)
  • 1-3) self 조인 : 한 테이블을 from절에 alias를 이용하여 여러 테이블인 것처럼 사용할 것

-> from employeese, employeesm

1-4) 예제 문제 19. 회사에 근무하는 직원 중 급여 등급이 4명인 직원의 이름과 급여와 사원별 급여를 차례로 정렬하여 출력하시오.

20. 당사에 근무하는 사원의 번호와 그 사원을 관리하는 매니저 번호와 매니저명을 출력하시오.

1-5) 그룹 함수: 그룹 함수는 행집압에 작용하여 그룹마다 하나의 결과를 생성합니다.

  • 함수 순서 1.1개 또는 다수의 값을 받는다 2. 계산식을 통해 결과 리턴 3. 결과 1개를 return 한다.
  • – 그룹 함수의 종류 1.AVG : 평균 2. COUNT : 출력되는 행의 개수 3. MAX : 최대치 4. MIN : 최소치 5. SUM : 합계
  • – AVG, SUM함수

->사원 급여 평균, 사원 급여 합계

  • MIN,MAX함수
  • >사원의 첫 번째 이름, 사찰의 마지막 이름.
  • – COUNT 함수

->직원번호가 50번인 직원 인원수

※ 주의 – ‘avg’와 ‘sum’이라는 함수는 숫자 데이터로만 가능!! – ‘min’과 ‘max’라는 함수는 날짜, 문자도 가능!!

error: Content is protected !!