[오라클] 두 테이블 조인 삽입에 대해서... 0 3 3,752

by 김카멜 조인 삽입 조인 삭제 조인 update join delete merge into [2015.12.15 14:41:38]


김카멜.txt (4,780Bytes)

 

안녕하세요 DB를 배우고 있는 취준생입니다.

오라클 DB로 금융정보 관련 JDBC를 만들고 있습니다.

테이블 구성은 2가지로

finance 테이블이 client 테이블을 상속받아

조인으로 전체 출력하고

조인으로 삽입과 삭제, 갱신을 하려고 했으나

조인 삽입 갱신이 안되는 관게로

각각 하나씩 테이블에 입력하게 되었습니다.

삭제는 제약 조건을 걸어 on delete cascade로

연쇄 삭제를 하게 끔 했습니다

 

여기서 제가 궁금한 점은 공통점이 num과 name 뿐인 두 테이블을

조인 삽입이

가능한지 궁금 합니다.

 

DB고수 여러분 한번 봐주시겠습니까?

 

drop table Client;
create table Client(
num number primary key,
name varchar2(13) not null,
age number not null,
company varchar2(22) not null,
bank varchar2(9) default '국민'
);

 

drop table Finance;
create table Finance(
num number primary key,
name varchar2(13) not null,
salary number  default 0,
deposit number default 0,
rating varchar2(21) default 'NORMAL'
);

 

구글링으로 조인된 테이블 삽입 갱신이 가능한

merge into를 써보려고 했지만

제 생각에는 두테이블의 이름만 다를뿐

칼럼은 모두 동일해야 되는거 같습니다.

안되네요... 

 

MERGE INTO 테이블명
USING (SELECT 구문)
ON (조건) 
WHEN METCHED THEN
  UPDATE/INSERT/DELETE 구문(ex UPTATE SET ..WHERE..)
WHEN NOT MATCHED THEN
  UPDATE/INSERT/DELETE 구문(ex INSERT VALUES(..) WHERE..)

 

merge into finance f
    using
    client c 
    on ( c.name = f.name )
    when matched then
        
        update set
        f.num=c.num,
        f.name = '김카멜',
        f.age = 26,
        f.company= '경북대',
        f.salary= 0,
        f.deposit= 30,
        f.rating= 'NOMARL'


    when not matched then
        
    insert(c.num,c.name,c.age,c.company,c.bank,f.salary,f.deposit,f.rating) 
        into finance f, clinet c
            values(c.num = ?,c.name =? ,c.age=?, c.bank=?, f.salary=?, f.rating=?);

by swlee710 [2015.12.15 14:48:41]

문법이 틀리셨네요

finance 테이블에 update와 insert가 이루어 지는거에요


by 마농 [2015.12.15 15:05:19]

사용하시는 용어들(조인 삽입, 갱신)이 뭘 의미하는지 잘 모르겠네요.
그냥 두테이블을 이용해 어떤 작업을 하고자 하는지 일상 용어로 쉽게 풀어 설명해 주세요.


by 김카멜 [2015.12.15 17:03:44]

너무 제 입장에서만 서술하다보니 이해가 질문의 요지가 산으로 갔네요

현재 이클립스자바로 간단한 DB관리 프로그램을 만들고 있습니다.

그래서 메인 클래스에서 실행을 시키면

]======메뉴 선택하기======[
1.모든 금융정보 조회
2.금융 정보 조건 검색
3.범위 조건 검색
4.금융 정보 삭제
5.금융 정보 수정
6.금융 정보 추가
7.금융 정보 정렬
8.금융 프로그램 종료
====================[>

이런식으로  뜨고 번호를 입력하면 DB에 입력한 값을 가져오는 방식의 프로그램입니다.

제가 질문 드린 요점은 

고객테이블 칼럼들 과 금융테이블 칼럼들이 완전 일치하지 않는 상황

그리고

두 테이블을 조인한 상태에서  삽입이 가능하는지가 궁금했던건데요

조인 삽입이 제 생각엔 하나의 임시 테이블이 생겨서

temp 테이블

num ,name,age,company,bank,salary,deposit,rating으로 순서대로 들어갈줄 알았습니다.

 

다시 곰곰히 생각해보니 그렇게 만들 필요가 없더군요... 효율도 떨어지구요

단순히 되는지 궁금해서 질문드렸습니다

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입