NOW OR NEVER

[DataBase] 데이터조작어(DML) - Join 본문

Back-End/Database

[DataBase] 데이터조작어(DML) - Join

LAURA 2022. 4. 21. 09:01
반응형

Select 문

  • where : 집계 함수를 적용할 조건식, 어떤 대상에 대하여 총 개수를 구하고, 총합을 구할 것인지에 대한 조건을 where에 작성
  • having : where의 결과에 대하여 조건식을 주는 것, 즉 group by 절에 나타난 결과에 대하여 조건식을 표현할 때 사용하는 것
  • 컬럼 연산 가능, 연산된 컬럼을 group by, order by 등에 활용 가능 : 칼럼연산 별칭 ex) salary * 0.1 인상액

join

  • 관계형 데이터베이스에서 검색하고자 하는 컬럼이 두 개 이상의 테이블에 있을 때 사용
  • 두 개 이상의 테이블을 합치는 것

조인식

  • 조인을 할 때에는 두 개의 테이블에 공통으로 들어가는 칼럼으로 조건식(where 절) 표현(테이블1.공통칼럼 = 테이블2.공통칼럼)
  • ex) customer.custid = orders.custid
  • 이 때 select 문 작성시 from 테이블1 1별칭, 테이블2, 별칭 ... 테이블 별칭을 사용하면 별칭을 통해 조인식을 작성할 수 있다. : 테이블1별칭.공통칼럼 = 테이블2별칭.공통칼럼
  • 조인을 할 때 양쪽 테이블에 모두 있는 칼럼(공통 칼럼)을 select 절에 표현할 때는 테이블이름(or 테이블 별칭)을 명시해야 한다.outer join

outer join

  • 조인할때에 왼쪽 테이블이나 오른쪽 테이블의 레코드는 조건을 만족하지 않더라도 무조건 포함시키고자 할 때에 사용
  • where 대신 on에 의해서 조건식 작성
  • left outer join
    • select 컬럼1, 컬럼2,... from 테이블1 left outer join 테이블2 on 조건식
    • from 절을 기준으로 왼쪽에 있는 테이블은 조건을 만족하지 않더라도 모두 포함.
    • from 절의 왼쪽에 있는 테이블1의 내용은 조건을 만족하지 않더라도 모두 출력
    • 3개의 테이블에 대한 outer join : select 컬럼1, 컬럼2,... from 테이블1 left outer join 테이블2 on 조건식 left outer join 테이블3 on 조건식;
    • 3개의 테이블에 대한 outer join과 다른 조건식 : select 컬럼1, 컬럼2,... from 테이블1 left outer join 테이블2 on 조건식 left outer join 테이블3 on 조건식 where 조건식;
  • right outer join
    • select 컬럼1, 컬럼2,... from 테이블1 right outer join 테이블2 on 조건식
    • from 절을 기준으로 오른쪽에 있는 테이블은 조건을 만족하지 않더라도 모두 포함
    • from절을 기준으로 오른쪽에 있는 테이블2의 내용은 조건을 만족하지 않더라도 모두 출력
  • full outer join
    • select 컬럼1, 컬럼2,... from 테이블1 full outer join 테이블2 on 조건식
    • 양쪽의 테이블을 모두 포함

self join

  • 테이블 하나에서 어떤 컬럼이 자신의 또 다른 컬럼의 값을 참조하는 경우 실제로 물리적으로는 테이블이 하나인데 마치 두 개인 것 처럼 별칭을 주어 조인하는 것을 말한다.
  • 동일한 테이블에서 참조되는 경우에는 self join을 해야 함
  • ex) select 사원.ename ename, 관리자.ename mname from emp 사원, emp 관리자 where 사원.mgr = 관리자.eno;

Tips

  • insert로 데이터 입력 후 commit; 해줘야 함
  • 먼저하는 연산의 경우 () 해주기(and, or 도 포함)
  • eclipse 에 서버 패키지 안뜰 경우 이클립스 홈페이지 - other tools - java and we
  • NVL 함수
    • 특정 칼럼의 값이 null인 경우 다른 값으로 대체하는 함수
    • nvl(컬럼이름, 대체할 값)
  • sysdate 함수 : 오늘 날짜 출력
Comments