SQL 조인(JOIN)

    --Join(조인)
    -- 테이블을 2개 이상 합쳐서 작업 
    -- 각 테이블 마다 레코드(행) 수가 다르다.
    
    select * from emp;
    select * from dept;
    
    -- 사원명, 부서명
    select ename, dname
    from emp, dept
    where emp.deptno = dept.deptno -- join 조건(Equi Join)
    order by emp.deptno;
    
    --테이블이 조인 되면 조인조건이 필요함 -> 조인한 테이블 갯수 = 1개
    
    --컬럼 모호성
    --사원명, 부서명, 부서번호
    select ename, dname, deptno  -- deptno 컬럼이 emp에도 존재하고, dept에도 존재함(모호)
    from emp, dept
    where emp.deptno = dept.deptno;
    
    select ename, dname, emp.deptno -- 어느 테이블의 deptno인지 명확히 지정
    from emp, dept
    where emp.deptno = dept.deptno;
    
    select emp.ename, dept.dname, emp.deptno
    from emp, dept
    where emp.deptno = dept.deptno;
    
    -- 테이블에 별칭 부여
    select e.ename, d.dname, e.deptno
    from emp e, dept d
    where e.deptno = d.deptno;
    
    -- Non-Equi Join (=을 쓰지 않음) : 범위
    
    -- 급여등급(salgrade)
    select * from salgrade;
    
    -- 사원명, 급여, 급여등급
    select e.ename, e.sal, s.grade, s.losal, s.hisal
    from emp e, salgrade s
    where e.sal >= s.losal and e.sal <= s.hisal; 
    
    select e.ename, e.sal, s.grade, s.losal, s.hisal
    from emp e, salgrade s
    where e.sal between s.losal and s.hisal;
    
    
    -- 테이블 3개 조인 (조인 조건 2개)
    -- 사원명(emp), 부서명(dept), 급여(emp) 급여등급(salgrade)
    select e.ename, d.dname, e.sal, s.grade 
    from emp e, dept d, salgrade s
    where e.deptno = d.deptno
    and e.sal between s.losal and s.hisal;
    
    
    select * 
    from tbl_board b, tbl_user u
    where b.user_id = u.user_id;
    
    -- Self Join (자가 조인)
    -- 같은 테이블끼리 조인
    -- 별칭이 반드시 필요
    
    select *
    from emp e, emp e2;
    
    -- 해당 부서(부서 번호)의 부서명 -> emp(deptno) -> dept(deptno) - > dept(dname)
    
    -- 상사의 이름 -> emp(mgr)
    
    select * from emp;
    
    select e1.empno 본인사번, e1.ename 본인이름, e2.empno 상사사번, e2.ename 상사이름
    from emp e1, emp e2
    where e1.mgr = e2.empno;
    ​

     

    'DATABASE > SQL, PL-SQL' 카테고리의 다른 글

    익명 PL/SQL 예제  (0) 2021.01.16
    오라클 scott 예제 스키마  (0) 2021.01.16
    윈도우 10에서 Oracle 11g 설치(express버젼)  (0) 2021.01.16
    SQL 서브쿼리 예제  (0) 2020.11.14
    SQL 숫자함수, 그룹함수 정리  (0) 2020.11.14

    댓글