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
'개발및업무 > SQL' 카테고리의 다른 글
[MS-SQL / ORACLE] 함수 조회 (0) | 2022.05.03 |
---|---|
DB 백업 테이블 생성 방법 (0) | 2022.04.27 |
[MS-SQL] DB LOCK - "KILLED/ROLLBACK" 상태 관련 (0) | 2021.11.04 |
[SQLite] SQLite DB의 Table 데이터 CSV 파일 생성 방법 (0) | 2021.09.27 |
[MS-SQL] ID 사양 초기화 방법 (IDENTITY 값 초기화) (0) | 2021.09.13 |