1) Having절 서브쿼리 : Having절에서 사용

 

 ※문제) 부서별 월급합계의 평균보다 높은 월급합계를 가지는 부서의 부서명과 월급합계를 출력

① From절 서브쿼리와, Where절 서브쿼리를 사용

 

 

 

>> 부서별 급여합계의 평균인 57618 보다 큰 부서명과 월급합계가 출력된다.

 

 

② Having절 서브쿼리 사용

 

 

>> Group by의 조건절인 Having절에 서브쿼리를 사용한 결과와

    From절, Where절 서브쿼리를 사용한 결과가 같다.

 

 

 

2) 계층형 쿼리

 

① 계층형 쿼리 >> Hierarchy (계층구조)
    Root(뿌리) -> 제일 꼭대기

Branch(가지) -> 말단이 아닌 Node

leaf(잎) -> 말단인 Node

 

② Connect By

 

 

 

 

 

 

 

블로그 이미지

모데스티

,

1) 복수컬럼 서브쿼리 : Where절에서 사용

복수컬럼 서브쿼리

 

 

>> salary와 hire_date가 같은 사람이 없기 때문에 결과가 나오지 않는다. 

 

2) 상관 서브쿼리 : Select 절에서 사용

① 상관 서브쿼리 >> join을 쓰지 않거나, 못 쓰는 경우

ex) group by를 쓰는 경우

 

>> Select절에서 다른 Select절을 사용한다.

 

② 상관 서브쿼리 예제 

 

>> select절에서 다른 select절을 써서 출력할 수 있다.

 

 

 

블로그 이미지

모데스티

,

1) 복수행 서브쿼리 : Where절에서 사용

 

※ 복수행 서브쿼리의 연산자

   ⓐ all : 모두

   ⓑ any : 어떤 것 중에 하나

   ⓒ in : 중에 하나라도 같다 (= any)

   ⓓ exists : 존재유무

 

① all 

 

>> 첫 번째 실행결과 : 하나의 salary의 값과 부서번호가 60인 모든 사람들의 salary를 비교할 수 없다.

 

>> 두 번째 실행결과: all을 써줄경우 정상적으로 실행된다.

 

② in

>> 실행결과 : 부서번호가 80번인 사원을 제외한 나머지 사원들 중 80번 부서 사원과 같은 월급을 받는 사람들이 출력된다.

 

③ not in

>> 실행결과 : 80번 부서 사원들과 다른 월급을 받는 사원들 모두가 출력된다.

 

④ exists 

>> 실행결과 : 월급이 20000이 초과되는 사원의 모든 내용이 출력된다.

 

 

 

 

블로그 이미지

모데스티

,

1) 단일행 서브쿼리 : Where절에서 사용

 

① 단일행 서브쿼리

 

 

2) 예제

 

예제1)

 

예제2)

>> 첫 번째 실행결과 : 사원들의 이름과 직업아이디가 출력이된다.

 

>> 두 번째 실행결과 : 사원들의 이름과 employees에 jobs를 left join하여 직업명이 출력되도록 하였다.

 

예제3)   

 

>> 첫 번째 실행결과 : 같은 부서에 근무하는 사람들의 이름과 부서번호를 출력

 

>> 두 번째 실행결과 : Diana를 제외한 같은 부서에 근무하는 사람들의 이름과 부서번호 그리고 employees에 departments를 left join하여 부서명까지 출력하도록 하였다

 

블로그 이미지

모데스티

,

※ Non-equi Join

 

Non-equi Join

>> 조인의 조건이 = 이 아닌 것 

 

 

 

 

 

 

블로그 이미지

모데스티

,

 

※ scott계정 unlock

 

① cmd에서 관리자로 접속

 

② scott계정 만들기

>> 계정이 잠겨있기 때문에 접속할 수 없다.

 

③ 관리자로 접속하여 계정을 unlock하고 비밀번호 설정

 

④ 접속결과

 

블로그 이미지

모데스티

,

1) 셀프조인

 

SELF JOIN

 

 

 

2) 문제

 

 

 

블로그 이미지

모데스티

,

1) 외부조인(Outer Join)

 

① SQL 1992 CODE

 

 

 

 

② ANSI JOIN  

ⓐ outer앞에는 left, right를 써줘야한다. outer도 생략이 가능하다.
ⓑ left >> 왼쪽의 테이블의 내용을 더 볼 수 있다. >> 1992코드의 e.department_id = d.department_id(+)
ⓒ right >> 오른쪽의 테이블의 내용을 더 볼 수 있다. >> 1992코드의 e.department_id(+) =     d.department_id

 

③ Left Outer Join 

 

 

④ Right Outer Join 

 

 

⑤ Full Outer Join 

 

 

 

2) 문제풀이

 

① 문제1

 

 

② 문제2 

 

 

③ 문제3 

 

 

④ 문제4 

 

 

 

 

 

 

 

블로그 이미지

모데스티

,

1) Cartesian Product 

 

* Cartesian product

 

>> A와 B를 조인할 때, 조인의 조건을 생략하고 A의 모든 행이 B의 모든 행들과 조인되는 경우

>> 모든 행들의 조합이 출력되어 많은 결과를 출력할 수 있지만 과부화의 위험이 있다.

 

* Cartesian product의 결과

 

① Employees Table >> 107개의 행

 

 

② Departments Table >> 27개의 행

 

 

 

③ Employees Table과 Department Table의 조인결과 >> 2889개의 행 

 

 

2) 내부조인(Inner Join)

 

>> 정확하게 일치하는 데이터만 가지고 오기때문에 Null값이 제외된다.

>> Null값을 포함하여 보고싶으면 외부조인을 사용한다.

 

 

 

3) 예제 >> Steven King 씨의 부서명을 출력하세요.

 

① SQL 1992 CODE방식  

 

>> Steven King의 부서명을 알 수 있다.

 

② ANSI JOIN

>> SQL 1992 CODE와 같은 결과를 얻을 수 있다.

 

③ USING

>> 조인하려는 두 테이블의 컬럼이름이 동일할 경우에만 사용가능하다. 

 

>> Steven King의 부서명을 알 수 있다.

 

3) Natural Join

>> Primary key와 Foreign key가 한 가지로 연관되어있어야 한다. 

 

 

 

 

 

 

 

 

 

 

 

블로그 이미지

모데스티

,

1) DB의 모델링

 

EX)쇼핑몰

① 판매테이블의 구성

   
>> 데이터의 중복은 최대한 없애는것이 좋다 why?) 효율적인 관리를 위하여
>> DB모델링의 탄생배경

 

② 판매자테이블의 구성 >> 판매자아이디(PK:Primary Key)
>>

 

③ 판매테이블의 구성 >> 판매자아이디(FK: Foreign Key)
                    >> FK는 다른 테이블의 PK를 참조하게 된다
>>

 

④ DB의 관계 >> 1:1관계, 1:n관계, n:m관계

 

⑤ DB의 모델링과정 : 요구분석 >> 개념적 모델링 >> 논리적 모델링(정규화과정)

 

 

 

2) 제약조건 (Constraint)

 

PK(Primary Key) : 테이블의 데이터를 식별하는 식별자, 되도록이면 1개로 해야한다.
FK(Foreign Key) : 다른 테이블에 있는 Pk를 참조하는 조건

 

① HR스키마의 관계파악

 

>> 10개의 테이블(table)과 1개의 뷰(view)로 구성

 

 

 

② DB참고사전(Dictionary)

 

>> DB에 있는 모든 테이블에 대한 설명

ⓐ ALL_XXX : DB전체에 걸쳐서 사용되는 정보들
ⓑ USER_XXX : 현재 스키마(유저)에 속해있는 객체들의 정보
ⓒ DBA__XXX : DB관리자가 조회할 수 있는 정보들
ⓓ V$xxx : 성능 관리를 위해 존재하는 view

 

③ 제약조건(Constraint)

 

>> comment에 constraint라는 단어가 들어간 테이블을 검색

 

④ 제약조건확인

 

>> HR스키마안의 각각의 테이블안에 정의된 제약조건의 이름과 타입등이 나온다.

>>contstaint_type의 의미
    ⓐ P : Primary Key
    ⓑ C : Check
    ⓒ U : Unique
    ⓓ R : Foreign Key

 

 

 

⑤ 테이블의 컬럼조건을 확인

 

>> HR스키마에 속한 컬럼들이 속한 테이블과 컬럼명, 제약조건명을 알 수 있다.

블로그 이미지

모데스티

,