본문 바로가기

DBMS/Oracle17

[ORACLE] CASE 함수 / CASE WHEN 오라클에는 if문과 비슷한 기능을 하는 DECODE 함수가 있다. (DECODE : 여러가지 경우에 대해서 선택할 수 있도록 하는 기능) https://sungeune97.tistory.com/75 [Oracle] NVL , NVL2, DECODE 1. NVL함수 : NULL일경우 (Oracle 함수 NVL (value,0) -- value가 null 일경우 0을 반환 / 그렇지 않을경우 value값을 반환 ex ) NVL(컬럼, 'SYSDATE') -> 컬럼 값이 없을 경우 SYSDATE를 반환 2. NVL2 함수 : NULL이 아닐경우 sungeune97.tistory.com DECODE는 조건이 많아지면 가독성이 떨어지기 때문에 조건이 복잡한 경우 CASE WHEN을 사용하는게 좋다. DECODE .. 2021. 6. 4.
[Oracle] 전년도 현재 년도에 복사, INSERT - SELECT문 , SELECT한 결과를 INSERT INSERT INTO TRACK_MAS (CURR_YEAR, BS_POINT, BE_POINT, KS_POINT, KE_POINT, DS_POINT, DE_POINT , DUPL_RATE, UDATE, UUSER)-- 아래 SELECT구문을 INSERT하겠다SELECT '2021' AS CURR_YEAR -- 하드코딩 값 , BS_POINT , BE_POINT , KS_POINT , KE_POINT , DS_POINT , DE_POINT , DUPL_RATE , SYSDATE AS UDATE , 'se.shin' AS UUSER FROM TRACK_MASWHERE CURR_YEAR = '2020' --.. 2021. 5. 27.
[Oracle] 중복 데이터 찾기 / 중복 데이터 개수 찾기 GROUP BY / HAVING / COUNT 중복 데이터 건수 찾기 아래 쿼리를 통해 두가지를 할 수 있다.1. 중복되고 있는 데이터 조회2. 중복된 데이터의 개수 조회(* 활용시 부가적 기능 : 중복 제거) 중복체크를 원하는 컬럼을 그룹핑해서, 그룹핑 조건(HAVING 절) 에 COUNT' 로 '1건 이상(초과)'을 조회하면 중복 되고 있는 데이터를 알 수 있다. 해당 데이터가 몇건 중복되는지 확인하려면 COUNT(COLUM_NAME) 로 찾을 수 있다.  Tip* HAVING 절에 그룹핑한 조건의 raw가 1건 초과인 경우를 조회하고 있기 때문에, 조회된 결과는 모두 중복데이터이며 COUNT를 통해 몇건의 중복이 발생하는지 확인할 수 있다.SELECT 컬럼1, 컬럼2, ... , 컬럼n , COUNT(컬럼1) -- 중복 갯수 FROM .. 2021. 3. 5.
[Oracle] 조회한 가상 컬럼의 연산 조회한 컬럼끼리 연산한 결과를 가상 컬럼으로 사용할 수 있다. ( = 테이블에 저장되는 것이 아니라는 의미) SELECT A.POINT + B.POINT AS ALLPOINT FROM STUD_TABLE; 컬럼끼리의 연산은 WHERE, ORDER BY 절에서도 가능하다. 단! SQL은 내부적으로 WHERE 구문을 먼저 처리하고 SELECT 하기 때문에 SELECT 절에서 지정한 Alias를 WHERE절에서는 사용할 수 없다. 해결 => SELECT절이 아닌 WHERE 절에서 컬럼끼리 연산해서 사용하면 된다. 에러 구문 SELECT A.POINT + B.POINT AS ALLPOINT FROM STUD_TABLE WHERE ALLPOINT != 1 ; -- ORA-00904: "ALLPOINT": 부적합한.. 2021. 2. 10.
[Oracle] UNION, UNION ALL, 집합 연산 * 집합 연산 : 레코드끼리 더하거나 빼는 레코드 사칙연산 * 집합 연산자 : UNION(합), INTERSECT(교차) EXCEPT(차) - 집합 연산자는 중복 행을 제외한다. - 집합 연산자에서 중복 행을 포함하려면 ALL 옵션을 사용한다. 예제 테이블 id name 0001 티셔츠 0002 블라우스 0003 도마 0004 식칼 id name 0001 티셔츠 0002 블라우스 0005 장갑 구문 SELECT id, name FROM goods_1 UNION SELECT id, name FROM goods_2 결과 id name 0001 티셔츠 0002 블라우스 0003 도마 0004 식칼 0005 장갑 결과는 두개의 테이블에 포함되어 있는 레코드가 모두 합쳐진(UNION)형태가 된다. =합집합 모양 .. 2021. 1. 13.
[Oracle] INSERT / SELECT 결과 INSERT / INSERT INTO SELECT INSERT : 테이블에 데이터(행) 등록 원칙적으로 INSERT문은 1회 실행에 1회 삽입 처리 구문 INSERT INTO 테이블명 (열1,열2, 열3 .... ) VALUES (값1, 값2, 값3 .... ) ; 구문사용시 주의점 - 열 리스트와 값 리스트의 수, 타입이 일치해야 한다. (예시 : date타입에 String형을 넣으려 하거나, date형과 String형을 삽입할 수 없습니다. 'ORA-01861 리터럴이 형식 문자열과 일치하지 않음' 에러가 발생함) - 테이블의 모든 열에대해 INSERT 하는 경우, 열리스트는 생략 가능 하다. - 값에 대한 입력이 문자형이면 ' ' (작은 따옴표) 사용 - INSERT 문에서 열명을 생략하면 기본값이 할당 된다. (기본값 설정 안되어 있을시 NULL.. 2020. 12. 18.