* MERGE


 : 테이블에서 데이터를 다룰때 SELECT와 UPDATE를 조건에 따라 한번에 진행가능한 함수


MERGE INTO table_name alias
	USING (table | view | subquery) alias
		ON (join condition)
	WHEN MATCHED THEN
		UPDATE SET col1 = val1[, ...]	
	WHEN NOT MATCHED THEN
		INSERT (column lists) VALUES (values);


ex)


1. 테이블 2개를 사용할 경우


MERGE INTO COPY_MEMBER A
	USING MEMBER B
	ON A.MEMBER_NO = B.MEMBER_NO
WHEN MATCHED THEN					/* 조건에 해당할 경우에는 update 진행 */
	UPDATE SET 
		A.MEMBER_ID = B.MEMBER_ID
		,A.MEMBER_PHONE = B.MEMBER_PHONE
		, ...
WHEN NOT MATCHED THEN				/* 조건에 해당하지 않을 경우에는 insert 진행 */
	INSERT(A.MEMBER_ID, A.MEMBER_PHONE, ...)
      VALUES(B.MEMBER_ID, B.MEMBER_PHONE, ...);



2. 테이블 1개만 사용할 경우


MERGE INTO COPY_MEMBER
	USING DUAL					/* DUAL을 이용 */
	ON MEMBER_NO = '20180712_0001'
WHEN MATCHED THEN					/* 조건에 해당할 경우에는 update 진행 */
	UPDATE SET 
		MEMBER_ID = 'testId'
		,MEMBER_PHONE = '010-1234-5678'
		, ...
WHEN NOT MATCHED THEN				/* 조건에 해당하지 않을 경우에는 insert 진행 */
	INSERT(MEMBER_ID, MEMBER_PHONE, ...)
      VALUES('testId', '010-1234-5678' ...);


'Oracle' 카테고리의 다른 글

[Oracle] DECODE 함수  (0) 2018.05.09
[Oracle] 기본 명령어 정리  (0) 2018.04.16
[Oracle] Database 11g Express Edition 설치 후 셋팅  (0) 2018.04.16

* DECODE

ORACLE에서만 지원하며 비교연산이 가능하다.


     사용방법

DECODE(컬럼명, '조건', '조건인 경우', '조건이 아닌경우')


ex) codeId가 001 인 경우 서울, 아닌경우에는 부산을 가져와라


SELECT
	DECODE(codeId, '001', '서울', '부산') AS CITY
FROM KOREA



DECODE(컬럼명, '조건1', '값1', '조건2', '값2', '조건3', '값3' ...)


ex) codeId가 '001' 인 경우 서울 

'002' 인 경우 경기 

'003' 인 경우 부산을 가져와라


SELECT
	DECODE(codeId, '001', '서울', '002', '경기', '003', '부산') AS CITY
FROM KOREA



'Oracle' 카테고리의 다른 글

[oracle] MERGE 함수 사용법  (0) 2018.07.12
[Oracle] 기본 명령어 정리  (0) 2018.04.16
[Oracle] Database 11g Express Edition 설치 후 셋팅  (0) 2018.04.16


1. 테이블


 *생성


CREATE TABLE 테이블이름(형식...);


CREATE TABLE BOARD(
	SEQ NUMBER,
	TITLE VARCHAR2(200),
	CONTENT VARCHAR2(2000),
	CREATE_NAME VARCHAR2(100),
	CREATE_DATE DATE
);


 *계정 내 테이블 확인


SELECT * FROM TAB;


 *삭제


DROP TABLE 테이블이름;


DROP TABLE BOARD;



2. 데이터(기본적인 CRUD 명령어)


 *INSERT(Create)

INSERT INTO
	BOARD
VALUES(
	(nvl((SELECT MAX(seq) FROM BOARD) + 1, 1)),
	'testTitle',
	'testContent',
	'testCreateName',
	TO_DATE('20180416', 'yyyymmdd')
);


* (nvl((SELECT MAX(seq) FROM BOARD) + 1, 1))

: seq의 값이 null이면 1을 입력, null이 아니라면 board 테이블의 가장 큰 seq + 1 


 *SELECT(Read)


SELECT
	SEQ
	,TITLE
	,CONTENT
	,CREATE_NAME
	,CREATE_DATE
FROM
	BOARD
ORDER BY SEQ ASC;


 *UPDATE(Update)


UPDATE BOARD SET
	TITLE = 'updateTitle'
	,CONTENT = 'updateContent'
WHERE
	SEQ = 1;


 *DELETE(Delete)


DELETE FROM BOARD 
WHERE SEQ = 1;



3. 저장


승인 / commit;

취소 / rollback;

'Oracle' 카테고리의 다른 글

[oracle] MERGE 함수 사용법  (0) 2018.07.12
[Oracle] DECODE 함수  (0) 2018.05.09
[Oracle] Database 11g Express Edition 설치 후 셋팅  (0) 2018.04.16

1. Oracle 설치


Oracle Datebase 11g Express Edition은 상용 목적이 아니라면 무료이므로 자유롭게 사용하면 된다.


아래 링크에서 자신의 환경에 맞는 database 설치

 http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html


2. Run SQL Command Lind 실행


*로그인

본인(local) conn 아이디/비밀번호; conn system/oracle;    (system 비밀번호는 설치 시 입력한 비밀번호임) 원격접속 conn 아이디/비밀번호@아이피:포트/SID; conn system/oracle@192.168.0.100:1521/xe;

*아이디 생성 create user 아이디 identified by 비밀번호; create user testId identified by test1234;

*확인 select username from dba_users;

*삭제 drop user 아이디;

*권한부여 grant 권한이름 to 아이디; grant dba to testId;


3. 환경설정


oracle을 설치하게 되면 기본 port가 8080 으로 설정되어 있다.

tomcat도 기본 port가 8080이므로 port 충돌이 발생하게 된다.


따라서 oracle의 port를 변경해주어야 한다.

*포트확인 select dbms_xdb.gethttpport() from dual;

 *포트변경 exec dbms_xdb.sethttpport(포트번호); exec dbms_xdb.sethttpport(9090);

모든 설정을 마치면 commit을 하고

tomcat을 재기동하여 포트에러가 해결되었는지 확인한다.



'Oracle' 카테고리의 다른 글

[oracle] MERGE 함수 사용법  (0) 2018.07.12
[Oracle] DECODE 함수  (0) 2018.05.09
[Oracle] 기본 명령어 정리  (0) 2018.04.16

+ Recent posts