Oracle DB - Query 구문 (WHERE ~ JOIN)

▣ Where 절(구)에 사용되는 쿼리 구문

◎ 관계 연산자 (NOT / AND / OR)
  - NOT : 가독성이 더 좋은 부정 연산자 !=, <>, ^= 등을 이용하는 것이 좋다.
  - AND : 주로 사용되는 조건절
  - OR : 사용할 수는 있지만, 왠만하면 AND를 사용한다.
  ※ AND와 OR의 혼용 시 괄호 ' ( ) ' 를 사용하여 구분해주어야 한다.
   → 연산자 우선순위 때문 : AND > OR

◎ LIKE
  - %, _, # 과 같은 와일드 카드 문자 / ESCAPE 문자를 함께 사용하여 원하는 문자열 검색

◎ BETWEEN ... AND
  - AND의 앞과 AND 뒤 값의 사잇 값을 출력해준다.
  - 앞의 값은 뒤의 값보다 작아야한다. (유의)
  - 날짜를 검색하는 경우 유의한다.
   → 날짜 데이터는 시리얼 넘버로 저장되기 때문에 시, 분, 초 값도 역시 존재한다.
   → 정확한 데이터를 출력시키려면 날짜 데이터의 포맷을 자유롭게 조절할 수 있어야 함.
   → ALTER SESSION SET nls_date_format='YYYY/MM/DD:HH24:MI:SS'

◎ IN
  - 지정된 값 중 일치하는 값이 하나라도 있으면 출력해주는 조건
  - 가독성이 우수
  - OR 이나 = 연산자를 대체한다.

▣ Join
  - 복수의 테이블을 묶어서 연관된 칼럼 값을 참조하는 기법
  - 테이블을 join하기 위해서는 join 조건이 필요하다
  - join 조건은 묶는 테이블의 개수가 n개일때 최소 n-1개가 필요하다.

◎ 등가 join 과 비등가 join
  ▷ 등가 join : 칼럼의 내용이 정확히 일치하는 레코드 만을 추려 join한다.
     → 조인 조건에 '=' 등호를 사용한다.
        ex) WHERE dept.dno = emp.dno; (두 테이블의 부서번호가 같은 것만 묶음)
  ▷ 비등가 join : 칼럼의 내용이 특정 값 구간에 존재하는 경우
     → 조인 조건에 '<', '>' 등등 부등호가 포함된 조건을 사용한다.
        ex) WHERE sal * 1.1 BETWEEN losal AND hisal; (+조인조건이 2개이다!)

◎ 자기 참조 조인 (inner join)과 외부 조인 (outer join)

  ▷ 자기 참조 조인
     - 동일한 테이블을 자기 참조에 의해 join 한다.
     - 하나의 테이블을 여러 테이블인 것처럼 사용한다.
     - 구분을 위해 무조건 테이블에 별명을 지어주어야 한다.

    ex) select s1.sno 학번, s1.sname 학생이름
         from student s1, student s2
         where s1.name = s2.name and s1.sno != s2.sno;
    : 같은 테이블을 사용하여 별명을 각각 지정. 동명이인을 찾는 쿼리문이다.

  ▷ 외부 조인
     - 조인 조건에 미처 일치하지 못한 나머지 데이터를 출력해준다.
     - 조인 된 테이블의 결과를 해석할 때 오인을 방지하기 위해 사용한다.
     - 데이터가 부족한 테이블 쪽의 조인 조건에 (+)를 추가해준다.

    ex) select d.dno 부서번호, dname 부서명, ename 사원명
         from dept d, emp e
         where d.dno = e.dno (+)
         order by 1;
    : +가 붙은 e 테이블은 d테이블에서는 존재하지만, e 테이블엔 존재하지 않는 데이터를 조인하도록 한다.

댓글

이 블로그의 인기 게시물

Linux Server - FTP 실습 (2 / 2) : 사용자 제한 ( ftpuser / user_list )

전자서명 개념

3.27 (화) - Network (패킷 통신 - 4가지 지연)