TIL

230227 [SQL] (조인)

하차모 2023. 2. 27. 17:16

1. JOIN(조인)  : 여러 테이블의 정보를 한 번에 조회

  +) 테이블명 지정 : 특정 테이블을 조회할 때 컬럼명 앞에는 테이블명.이 생략되어 있다. 테이블명의 별칭으로도 지정할 수 있다.

SELECT EMP.EMPNO, EMP.ENAME, EMP.SAL
FROM EMP;

SELECT E.EMPNO, E.ENAME, E.SAL
FROM EMP E;

 

두 개 이상의 테이블으로부터 각각 다른 테이블명을 지정하여 컬럼을 조회할 수 있다.

-- 사원들의 사번, 사원명, 부서번호, 부서명, 부서지역
-- 공통으로 가진 컬럼의 값이 같은 데이터만 조회
SELECT EMPNO
    , ENAME
    , EMP.DEPTNO
    , DNAME
    , LOC
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO -- 조인
ORDER BY ENAME;

 

-- 1. 20번 부서를 제외한 사원들의 사번, 부서 번호, 부서명, 부서 지역을 조회
SELECT EMPNO
    , E.DEPTNO
    , DNAME
    , LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND E.DEPTNO != 20;

-- 2. 이문세 사원이 속한 부서의 부서명을 조회
SELECT DNAME
FROM EMP E, DEPT D
WHERE ENAME = '이문세'
AND E.DEPTNO = D.DEPTNO;
-- 1. 게시글 제목에 'java'라는 글자가 포함된 게시글의 글 번호, 제목, 작성자 id, 작성일, 작성자명을 조회
SELECT BOARD_NUM, TITLE, WRITER, CREATE_DATE, MEM_NAME
FROM BOARD_MEMBER M, BOARD B
WHERE LOWER(TITLE) LIKE '%java%'
AND B.WRITER = M.MEM_ID;

-- 2. 글 번호가 3번인 게시글에 달린 댓글의 내용, 댓글 작성자, 댓글이 달린 게시글의 제목을 조회
SELECT R.CONTENT, R.WRITER, TITLE
FROM BOARD B, BOARD_REPLY R
WHERE B.BOARD_NUM = R.BOARD_NUM
AND B.BOARD_NUM = 3;

-- 3. EMP 테이블의 MGR 컬럼은 해당 사원의 직속 상관 사번이다.
-- 이를 참고하여 사원 번호, 사원명, 직속 상관 사번, 직속 상관명을 조회
SELECT E1.EMPNO, E1.ENAME, E1.MGR, E2.ENAME MGR_NAME
FROM EMP E1, EMP E2
WHERE E1.MGR = E2.EMPNO;