728x90

 

10년 넘게 MS-SQL만 사용하다가 최근에 Oracle을 사용해야하는 상황이 됐다. 

간단한 구문 차이부터 MS-SQL에 길들여진 나는 Oracle 사용에 어려움이 많은 상태인데 그 중에 제일 어려운게 JOIN해서 UPDATE, DELETE 하는 방법이다. 

 

MS-SQL 경우 JOIN 을 응용하여 UPDATE 를 간편하게 사용할 수 있다. 

UPDATE A
SET A.UPDATEDATE = 'Change Value'
FROM A 
INNER JOIN B 
	ON (A.PK = B.PK)

 

Oracle은 아래와 같이 사용해야한다. 

UPDATE (SELECT UPDATEDATE
		FROM A
        INNER JOIN B
        	ON (A.PK = B.PK)
SET A.UPDATEDATE = 'Change Value'

워낙 간단한 구문이라 별 차이 없어보이지만 JOIN이 많아지면 생각보다 아직 적응이 안돼서 그런지 복잡하게 느껴진다.

MS-SQL의 경우 SELECT 구문을 가지고 편하게 작업할 수 있었는데 Oracle은 별도로 작업을 해야하는게 ㅠㅠ

그리고 Oracle의 경우 UPDATE 안의 SELECT 구문의 반드시 키가 연결 되어야 했다. (찾아본 정보는 아니고 작업 중에 키 없이 임시테이블 만들어서 업데이트 하려고 했더니 안 됐다. )

 

MS-SQL의 경우 DELETE도 같은 방식으로 하면 된다. 

DELETE A
FROM A
INNER JOIN B
	ON (B.PK = A.PK)
WHERE B.DELETEDATE = 'DELETE VALUE'

위와 같이 구문을 사용하면 B테이블과 조인 된 A 테이블 데이터만 지워진다. 

 

728x90

+ Recent posts