728x90
반응형

[Oracle] INNER JOIN이란? 

 

INNER(내부) JOIN 이란, 두 테이블간 조인 조건을 만족하는 행을 반환할 때 사용하는 구문이다.

 

쉽게 조인하려는 두 테이블의 교집합이라고 생각하면 될 듯 하다.

 

 

사용 방법

 

SELECT *                                    조회할 컬럼을 선택한다 (모든 컬럼 조회)
  FROM TABLE1  T1                             
  INNER JOIN 
TABLE2  T2              INNER 는 생략가능
  ON (
T1.KEY = T2.KEY)                두 테이블을 연결할 조건을 명시한다

 

실제 어떻게 사용되는지 살펴보자

KEY 컬럼이 TIMESTAMP와 NUM인 같은 구조의 테이블 A와 B가 있다.

 

 

두 테이블의 TIMESTAMP와 NUM의 값이 같은 데이터를 조회하고 싶다.

여기서 INNER JOIN의 INNER는 생략 가능하다.

 

SELECT A.TIMESTAMP
     , A.NUM
     , A.VERSION
     , A.MSG_ID
     , A.GRADE
     , B.TIMESTAMP
     , B.NUM
     , B.VERSION
     , B.MSG_ID
     , B.GRADE 
  FROM A
  INNER JOIN B ON(B.TIMESTAMP = A.TIMESTAMP AND B.NUM = A.NUM)

 

 

 

 


출처: https://haenny.tistory.com/35 [Haenny]

728x90
반응형
728x90
반응형

조인 (JOIN)

 

 - JOIN은 각 테이블간에 공통된 걸럼(조건)으로 데이터를 합쳐 표현하는 것이다.

 - JOIN에는 크게 INNER JOIN, OUTER JOIN이 있다.

 

▶ 예제 테이블을 통해 이해해보자.

TABLE 1) MEM : 회원테이블 (회원번호, 이름, 이메일, 부서번호)

 

TABLE 2) DEPART : 부서테이블 (부서번호, 부서명)

 

 

▶ 1. SELECT FROM을 이용한 조인

 

1.1) 회원 테이블과 부서 테이블의 조인

 => DEPART_ID가 공통 컬럼

 => MEM테이블의 DEPART_ID DEPART테이블의 DEPART_ID를 연결하여 준다.

 

ex)

SELECT  MEM.MEM_ID, MEM.NAME, MEM.DEPART_ID, DEPART.DEPART_NAME

FROM     MEM

               , DEPART

WHERE MEM.DEPART_ID = DEPART.DEPART_ID;

 

 

1.2) 이때 테이블명이 긴 경우 일일이 그 테이블 명을 다 써주지 않고 별칭을 쓸 수 있다.

 

ex)

SELECT A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME

FROM   MEM A

             , DEPART B

WHERE A.DEPART_ID = B.DEPART_ID;

 결과는 동일

 

 

▶ 2. ANSI 표준 조인 (JOIN절을 이용한 명시적 조인)

 

문법 =>

JOIN절을 명시적으로 선언하여 질의문을 작성할 수 도 있다.

 

SELECT 컬럼이름1, 컬럼이름2, ㆍㆍㆍ

FROM    테이블명1

JOIN    테이블명2

ON        테이블명1.컬럼명 = 테이블명2.컬럼명;

 

위의 쿼리를 이렇게 바꿔 작성할 수 있다.

SELECT A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME

FROM    MEM A

JOIN    DEPART B

ON     A.DEPART_ID = B.DEPART_ID

 

 

 

▶ 3. 질의문 사용한 JOIN 

 

 

3.1) 회원 테이블과 부서 테이블의 조인 (특정 회원 조회 EX) NAME 갓동수 인 회원)

 

3.1.1) SELECT FROM을 이용한 조인에 AND로 조건을 추가하여 조회 가능하다.

 

ex)

SELECT A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME

FROM    MEM A

             , DEPART B

WHERE A.DEPART_ID = B.DEPART_ID

AND A.NAME = '갓동수'

 

 

 

 

3.1.2) ANSI 표준 쿼리에서는 WHERE 문을 추가하여 조건 조회가 가능하다.

 

SELECT A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME

FROM MEM A

JOIN DEPART B

ON A.DEPART_ID = B.DEPART_ID

WHERE A.NAME = '갓동수';

 

  

 

▶ 4. 3개 이상(다중) 테이블 조인

 

ex TABLE Name  =  MOD_MEM_LOG : 회원정보 변경로그 (회원번호, 변경시간)

 

 

4.1) 회원 테이블과 부서 테이블의 조인 후 그 회원의 회원 수정 기록을 알고 싶다.

MEM_MOD_LOG 테이블을 추가하고, 공통 컬럼을 연결 시켜준다.

 

첫번째 방법) SELECT, FROM 

SELECT  A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME, C.LOG_TIME

FROM     MEM A

               , DEPART B

          , MEM_MOD_LOG C

WHERE   A.DEPART_ID = B.DEPART_ID

AND     A.MEM_ID = C.MEM_ID

AND        A.NAME = '갓동수';

 

 

두번째 방법) ANSI 표준쿼리

SELECT  A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME, C.LOG_TIME

FROM     MEM A

JOIN     DEPART B

ON         A.DEPART_ID = B.DEPART_ID

JOIN   MEM_MOD_LOG C

ON      A.MEM_ID = C.MEM_ID

WHERE  A.NAME = '갓동수';

 

 

 

 

▶ 5. 아우터 조인 (LEFT, RIGHT, FULL OUTER JOIN)


EQUI JOIN 문장들의 한 가지 제약점은 그것들이 조인을 생성하려 하는 두개의 테이블의 

두개 컬럼에서 공통된 값이 없다면 테이블로부터 데이터를 반환하지 못한다는 것이다.

 

 

- 정상적으로 저인 조건을 만족하지 못하는 행들을 보기위해 OUTER JOIN을 사용한다. 

OUTER JOIN 연산자는 "(+)"이다.

 

 

- 조인시킬 값이 없는 조인측에 "(+)"를 위치 시킨다.

 

 

- OUTER JOIN 연산자는 표현식의 한 편에만 올 수 있다.

 

EX1 ) 사자님의 회원 정보를 조회해보겠다. (부서명 까지 조인)

SELECT  A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME

FROM     MEM A

               , DEPART B

WHER    A.DEPART_ID = B.DEPART_ID

AND       A.NAME = '사자';

위와 같은 정보가 나오는 것을 알 수 있다.

 

 

EX2그럼 '사자'님의 회원정보 수정 기록을 알기 위해 조인을 해보자.

SELECT  A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME, C.LOG_TIME

FROM    MEM A

              , DEPART B

         , MEM_MOD_LOG C

WHERE A.DEPART_ID = B.DEPART_ID

AND    A.MEM_ID = C.MEM_ID

AND      A.NAME = '사자';

아무런 결과가 나오지 않는다.

 

그 이유를 살펴보면 사자님은 한번도 회원정보를 수정한 적이 없기 때문이다.

회원 정보 수정 로그 (사자 MEM_ID : 0000000003)

 

회원 정보 수정 로그가 없더라도 회원 기본 정보를 보고 싶다면 이때 OUTER 조인을 사용하면 된다.

 

 

▶ 5.1) ORACLE에서의 OUTER조인

 

간단하게 말하여 데이터가 없을 수도 있는 쪽 JOIN 컬럼에 (+)를 추가하여 OUTER JOIN이 가능하다.

 

SELECT  A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME, C.LOG_TIME

FROM     MEM A

               , DEPART B

          , MEM_MOD_LOG C

WHERE   A.DEPART_ID = B.DEPART_ID

AND     A.MEM_ID = C.MEM_ID (+)

AND       A.NAME = '사자';

 

위와 같이 회원정보 변경 이력이 없더라도 나머지 조인에 의한 결과행은 보여지도록 된다.

 

▶ 5.2) ANSI 표준 쿼리의 OUTER JOIN

 

 - ANSI 표준에서의 OUTER JOIN LEFT, RIGHT OUTER 조인 2가지가 있다.

 

 5.2.1) LEFT OUTER JOIN

이전의 JOIN ON 절에서 JOIN 앞에 LEFT OUTER를 붙여주면 된다.

 

ex) 

SELECT  A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME, C.LOG_TIME

FROM     MEM A

JOIN     DEPART B

ON         A.DEPART_ID = B.DEPART_ID

LEFT    OUTER JOIN MEM_MOD_LOG C

ON         A.MEM_ID = C.MEM_ID

WHERE  A.NAME = '사자';

 

▶ 5.3) FULL OUTER JOIN

양쪽 테이블에 다 Outer Join을 거는 것을 TWO-WAY OUTER JOIN 또는 FULL OUTER JOIN 이라 한다.

 



출처: https://goddaehee.tistory.com/62 [갓대희의 작은공간]

728x90
반응형

'Web Programming > database' 카테고리의 다른 글

[Oracle] LISTAGG WITHIN GROUP  (0) 2021.04.20
오라클 조인 이너조인 내부조인  (0) 2021.03.27
ORA-ROWSCN  (0) 2018.09.13
오라클 GRANT SYNONYM 권한주기  (0) 2018.09.06
org.apache.ibatis.exceptions.PersistenceException  (0) 2018.09.04
728x90
반응형

이클립스에서 변수를 더블클릭해서 선택하면 동일한 변수들이 모두 반전되어 표시됩니다.

혹시 java 개발을 하다가 변수를 선택했는데 사용되어 지고 있는 동일한 변수명들이 반전표시가 되지 않을 경우

아래와 같이 2가지 방법을 이용하여 토글 마크 기능을 켭니다.

1. Eclispe 툴바에서 Toggle Mark Occurrences (Alt+Shift+O) 아이콘을 눌러 기능을 켭니다.

 

 

2. 메뉴에서 Window -> Preferences 를 선택합니다. Preferences 창에서 Java -> Editor -> Mark Occurrences 를 선택합니다. 필요한 항목에 체크를 하고, "Apply" 버튼을 누른후 "OK" 버튼을 누릅니다.

 

728x90
반응형
728x90
반응형

인스턴스는 아래와 같이 생성 한다.

 

new Vue();

 

 

인스턴스의 속성들은 key:value 형태로 정의된다.

new Vue({ 
	el: , 
    template: , 
    data: , 
    methods: , 
    created: , 
    watch: , 
 });
  • el : 인스턴스가 그려지는 화면의 시작점 (특정 HTML 태그)
  • template : 화면에 표시할 요소 (HTML, CSS 등)
  • data : 뷰의 반응성(Reactivity)이 반영된 데이터 속성
  • methods : 화면의 동작과 이벤트 로직을 제어하는 메서드
  • created : 뷰의 라이프 사이클과 관련된 속성
  • watch : data에서 정의한 속성이 변화했을 때 추가 동작을 수행할 수 있게 정의하는 속성
728x90
반응형

'Web Programming > Vue.js' 카테고리의 다른 글

Hello Vue.js  (0) 2021.02.22
Vue.js 개발 툴  (0) 2021.02.21
Vue 는 무엇인가 ?  (0) 2021.02.21
Visual Studio Code 에디터 한글 전환  (0) 2021.02.21
Vue.js 참고  (0) 2021.02.21
728x90
반응형
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Getting Started</title>
  </head>
  <body>
    <div id="app">
      {{ message }}
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
      new Vue({
        el: '#app',
        data: {
          message: 'Hello Vue.js2prince'
        }
      })
    </script>
  </body>
</html>

Visual Studio Code 를 실행

CDN 으로 vue.js 코드를 땡겨오고, 

Vue 인스턴스를 생성하여 간단한 메시지를 출력하는 페이지를 만들어본다.

728x90
반응형

'Web Programming > Vue.js' 카테고리의 다른 글

Vue 인스턴스 생성  (0) 2021.02.25
Vue.js 개발 툴  (0) 2021.02.21
Vue 는 무엇인가 ?  (0) 2021.02.21
Visual Studio Code 에디터 한글 전환  (0) 2021.02.21
Vue.js 참고  (0) 2021.02.21

+ Recent posts