코딩공부/DataBase 7

Mysql에서 Oracle에서 사용하는 TO_CHAR 사용하기

Oracle에서는 TO_CHAR(SYSDATE, 'YYYY-MM-DD')를 사용하여 DATE 형식을 바꿀 수 있다. 해당 함수 그대로 Mysql에서 사용 하면 SQL Error [1305] [42000]: FUNCTION mysql.TO_CHAR does not exist 해당 에러가 발생 하며 TO_CHAR 함수는 없다고 말해준다. DATE형식을 원하는 형식으로 바꾸려면 DATE_FORMAT(SYSDATE(), '%Y-%m-%d')를 사용하면 된다. SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d') FROM DUAL;

oracle 시퀀스(sequence) 사용

오늘은 업무를 보며 무결성 제약조건이 나왔다. 쿼리문을 통해 insert를 하며 pk값인 id를 뽑아 +1을 해주어 고유의 값을 만들어 주었으나 api를 동시에 50건 이상이 호출되다 보니 무결성 제약조건이 나오게 되었다. 이를 해결하기 위해 시퀀스를 사용한다. -- 시퀀스란 숫자를 설정한 순차적으로 순번을 반환하는 데이터베이스의 객체이다. CREATE SEQUENCE EX_SEQ --시퀀스이름 EX_SEQ INCREMENT BY 1 --증감숫자 1 START WITH 1 --시작숫자 1 MINVALUE 1 --최소값 1 MAXVALUE 1000 --최대값 1000 NOCYCLE --순한하지않음 CACHE; --메모리에 시퀀스값 미리할당 출처 : coding-factory.tistory.com/420 시..

oracle 테이블 백업 / 삭제 / 복사

테이블 백업 create table "새로운 테이블 명" AS SELECT * FROM "복사할 테이블 명"; ex) create table PROJECT_TABLE_20200813 AS SELECT * FROM PROJECT_TABLE; 저는 헷갈리지 않게 백업한 날짜를 뒤에 추가해 줍니다. 테이블 삭제 DELETE FROM "삭제할 테이블 명" 테이블 안에 있는 데이터를 삭제합니다. 테이블 복사 INSERT INTO "복사하여 붙여넣을 테이블" SELECT * FROM "복사할 테이블" ex) create table PROJECT_TABLE AS SELECT * FROM PROJECT_TABLE_20200813; 테이블의 백업, 삭제, 복사를 사용하는 이유는 batch 시스템을 돌리며 기존 PROJE..

oracle insert for문 (WHILE LOOP를 이용한 100만건 데이터 insert 하기)

http://www.gurubee.net/lecture/1057 LOOP문, WHILE문 LOOP문 문법 - EXIT 문이 사용되었을 경우, 무조건 LOOP문을 빠져나간다. - EXITH WHEN 이 사용될 경우 WHEN 절에 LOOP를 빠져.. www.gurubee.net 목적 : 대량데이터를 SELECT 할때 시간을 단축하기 위해 샘플 데이터를 넣습니다. declare v_cnt number := 1; -- 시작 begin DBMS_OUTPUT.enable;WHILE v_cnt < 1000000 LOOP -- 1000000 미만까지 LOOP insert into -- INSERT문 TEST_TABLE ( TEST_ID, TEST_TITLE, TEST_DATE ) values ( v_cnt, -- PK..

oracle 데이터 합치기

https://gent.tistory.com/15 [Oracle|오라클] 여러 행(ROW)을 하나의 컬럼(COLUMN)으로 합치기 (WM_CONCAT) WM_CONCAT 함수를 이용하여 손쉽게 여러행의 데이터를 한 컬럼으로 합칠 수 있다. □ 방법 1. (WM_CONCAT 이용) --가상 테이블 WITH TEST_TABLE AS ( SELECT '고구려' COUNTRY, '1대' ST, '동명성왕' KING_NM FROM.. gent.tistory.com 일하면서 중복된 데이터를 하나로 묶어 컬럼으로 나타내 주고 싶었습니다.. 현재 테이블 상황 select PRO_TITLE,PRO_BODY from system.TB_PROJECT order by PRO_ID 테이블 상황은 이렇게 되어있으며 여기서 중복된..

자주쓰는 오라클 함수

distinct - 중복 제거 decode - decode(내가 선택한 값, '중의 선택', '선택한걸 이걸로', '짝수만맞추면', '여러개까지 가능', '마지막 값은 예외처리( 아무것도 아닐때 )') case when '내가 선택한 값' = '~면' then '이걸로바꾼다' when '내가 선택한 값' = '~면' then '이걸로바꾼다' when '내가 선택한 값' = '~면' then '이걸로바꾼다' else '다 아니면 이거' end (꼭 해줘야함) ++ ( 2020-07-18 ) ctrl + shift + f를 누르면 쿼리문 정렬이 된다.