Database
-
Oracle - MERGE INTODatabase/Oracle 2022. 4. 26. 11:37
MERGE INTO MERGE 문이란? MERGE 문은 테이블에 원하는 데이터가 있으면, 그 데이터를 UPDATE 하고 없으면 INSERT 하는 구문이다. 이러한 MERGE 문을 사용해서 PK 중복 문제 해결 등 다양한 문제를 해결할 수 있다. MERGE 문의 사용법 MERGE INTO 테이블명 USING 타겟 테이블 ON 타겟 데이터 WHEN MATHCED THEN SET 칼럼01 = 값01, 칼럼02 = 값02, ... WHERE 조건 WHEN NOT MATHCED THEN INSERT (칼럼01, 칼럼02, ...) VALUES (값01, 값02, ...) WHERE 조건; MERGE 문의 사용법은 위와 같다. 다른 DML 보다 문법이 복잡한 편이기 때문에, 처음 접하게 되면 사용하기 힘들다. 아래..
-
Oracle - 반복문(LOOP, WHILE, FOR)Database/Oracle 2022. 4. 25. 18:01
Oracle 반복문 LOOP 문 1. 사용법 LOOP 처리문; EXIT[조건]; END LOOP; LOOP 문의 사용방법은 위와 같다. 2. 예제 DECLARE NUM01 NUMBER := 1; BEGIN LOOP DBMS_OUTPUT.PUT_LINE(NUM01); -- 변수 출력 NUM01 := NUM01 + 1; -- 변수 1씩 증가 EXIT WHEN NUM01 > 10; -- NUM01이 10보다 크면 반복문 종료 END LOOP; END; 반복문은 특정 조건까지만 반복하며 로직을 수행하는데, LOOP 문의 반복문은 EXIT[WHEN 조건];이라는 구절에서 종료된다. 따라서, EXIT를 누락하면 해당 LOOP는 무한루프에 빠지게 되니 사용할 때 주의해야 한다. 1 2 3 4 5 6 7 8 9 10 ..
-
Oracle - 변수 및 상수 선언Database/Oracle 2022. 4. 25. 17:36
Oracle 변수 및 상수 선언 PL / SQL이란? PL / SQL은 상용 관계형 데이터베이스 시스템인 Oracle DBMS에서 SQL 언어를 확장하기 위해 사용하는 컴퓨터 프로그래밍 언어 중 하나이다. Oracle에서 변수를 선언한 후 해당 변수를 사용하기 위해서는 이 PL / SQL을 사용하면 된다. 변수 및 상수 선언 1. 변수 선언 변수명 데이터타입 := 초기값; NUM01 NUMBER := 1; STR01 VARCHAR2(10) := 'STR01'; 변수의 선언 방법은 위 예제와 같다. PL / SQL에서는 일반적인 프로그래밍 언어에서 사용하는 '='이 아니라 ':='을 사용한다. 특정 변수에 ':='을 기준으로 오른쪽 값을 왼쪽에 할당한다는 뜻을 가지고 있다. 변수는 선언과 동시에 초기값을 ..
-
Oracle - MySQL의 LIMIT & Oracle의 ROWNUMDatabase/Oracle 2022. 4. 4. 18:02
MySQL의 LIMIT & Oracle의 ROWNUM LIMIT과 ROWNUM MySQL이나 PostgreSQL에서 사용하는 LIMIT 절을 Oracle에서 사용하고 싶은 경우가 있다. 하지만, Oracle에서는 LIMIT 절을 사용할 수 없다. Oracle에서는 LIMIT 대신 ROWNUM을 사용할 수 있는데, LIMIT과 ROWNUM은 사용법과 용도가 다르기 때문에 사용 시 주의해야 한다. LIMIT은 쿼리가 ORDER BY 절까지 모두 실행이 된 후 해당 쿼리에서 원하는 행의 데이터를 가져오는 반면에, ROWNUM은 쿼리가 완전히 수행되지 않은 원 데이터의 정렬순서대로 번호를 매기기 때문에 전혀 다른 결과가 출력된다. 처음 구간에서부터의 행 출력 1. MySQL의 LIMIT SELECT * FROM..
-
MyBatis - 대소문자 구분 없이 데이터 조회하기Database/MyBatis 2022. 3. 24. 17:06
대소문자 구분 없이 데이터 조회 기존의 코드 SELECT FROM TBL_XBR_IDX_CALC WHERE (INDX_NM LIKE '%' || #{indexNameKeyword} || '%' ${searchType} TRGT_ELMT_ID LIKE '%' || #{elementIdKeyword} || '%') ORDER BY INDX_SEQ, CACL_ORD 사용자로부터 검색어를 입력받아 해당 검색어를 포함하고 있는 데이터를 출력하는 쿼리문이다. 테스트 결과 대소문자를 구분하여 데이터를 조회한다는 문제점을 파악하고, 위 쿼리문을 대소문자 구분 없이 데이터를 조회할 수 있는 쿼리문으로 변경하기 위한 작업을 시작했다. lower, upper의 이용 LOWER(column_name) LIKE ('%' || ..
-
MyBatis - ${}와 #{}의 차이Database/MyBatis 2022. 3. 22. 12:39
검색 유형에 따른 코드의 구성 #{}를 사용한 기존 코드 SELECT FROM TBL_XBR_IDX_CALC WHERE INDX_SEQ LIKE '%' || #{searchKeyword} || '%' ORDER BY INDX_SEQ, CACL_ORD SELECT FROM TBL_XBR_IDX_CALC WHERE INDX_NM LIKE '%' || #{searchKeyword} || '%' ORDER BY INDX_SEQ, CACL_ORD SELECT FROM TBL_XBR_IDX_CALC WHERE CACL_ORD LIKE '%' || #{searchKeyword} || '%' ORDER BY INDX_SEQ, CACL_ORD SELECT FROM TBL_XBR_IDX_CALC WHERE TRGT_ELM..