본문 바로가기

IT/오라클

MERGE INTO 테이블에 데이터가 이미 존재하면 업데이트 하고, 존재하지 않으면 입력을 해야 하는 경우가 종종 있습니다. 오라클에서 이런 작업을 한번에 할 수 있는 쿼리가 MERGE INTO 문 입니다. 현실적인 예는 아니지만 간단하게 성적 테이블을 생각해 보겠습니다. 과정코드과 학생코드가 주키이고, 성적 필드를 가지고 있습니다. CREATE TABLE TB_SCORE ( COURSE_ID VARCHAR2(10) NOT NULL, STUDENT_ID VARCHAR2(10) NOT NULL, SCORE NUMBER(5, 2) NULL, CONSTRAINT PK_SCORE PRIMARY KEY (COURSE_ID, STUDENT_ID) ); 1. 동일한 테이블 구조를 가지고 있는 TMP_SCORE 테이블로부터 데이터를 옮기.. 더보기
Group by, Rollup, Cube ◈ ROLLUP operator - ROLLUP구문은 GROUP BY절과 같이 사용 되며, GROUP BY절에 의해서 그룹 지어진 집합결과에 대해서 좀 더 상세한 정보를 반환하는 기능을 수행합니다. - SELECT절에 ROLLUP을 사용함으로써 보통의 select된 데이터와 그 데이터의 총계를 구할 수 있습니다. ※ 우선 아주 간단한 예제부터 살펴 보겠습니다. (scott유저의 emp테이블을 가지고 테스트 했습니다.) -- Group By를 사용해서 직업별로 급여 합계를 구하는 예제 입니다. SELECT job, SUM(sal) FROM emp GROUP BY job JOB SUM(SAL) ---------- ---------- ANALYST 600 CLERK 3200 MANAGER 33925 PRESI.. 더보기
[ORACLE] 테이블과 데이터 복사하기 (테이블 백업) 테이블 복사하기 스키마 데이터CREATE TABLE 새로만들테이블명 ASSELECT * FROM 복사할테이블명 [WHERE 절] 테이블 구조만 복사하기CREATE TABLE 새로만들테이블명 ASSELECT * FROM 복사할테이블명 WHERE 1=2 [where에다가 참이 아닌 조건을 넣어줌] 테이블은 이미 생성되어 있고 데이터만 복사INSERT INTO 복사할테이블명 SELECT * FROM 복사할테이블명 [WHERE 절] 테이블 이름 변경ALTER TABLE 구테이블명 RENAME TO 신테이블명 주의할 점은, Primary Key 나 Index 등 Constraint 는 복제되지 않습니다. 당연한 것이, 복제된다면 동일한 이름의 Object 가 이미 존재한다는 에러를 만나게 되겠죠. 데이터를 잠시 .. 더보기
[ORACLE] Group by GROUP BY문은 동일한 값을 가진 데이터를 집계해서 조회하고자 할 때 사용하는 문장이다.조회, 분석용 SQL에서 가장 많이 사용되는 구문이다.초급 개발자들을 보면, GROUP BY문을 사용할 때, 이렇게 쓰는건가, 저렇게 쓰는건가 하면서 머뭇거리면서 사용하는 경우가 종종 있다. 절대 그런일이 없도록 심도있게 공부하고 익히기를 바란다. 작성방법SELECT T1.REGION_GD FROM SQL_TEST.CD_REGION T1 GROUP BY T1.REGION_GD - 집계할 컬럼을 GROUP BY절 뒤에 적어준다.- SELECT절에는 GROUP BY에 명시된 컬럼만 사용할 수 있다.- GROUP BY는 WHERE절과 ORDER BY절 사이에 위치한다. 기초이해-- 일반 SELECT문장 SELECT T1.. 더보기
[ORACLE]무결성 제약조건이 위배되었습니다. ORA-02291: 무결성 제약조건(KUTSBANK.SYS_C008885)이 위배되었습니다- 부모 키가 없습니다 SYS_C008885이걸로 아래와 같이 조회를 한다. SELECT CONSTRAINT_NAME ,CONSTRAINT_TYPE ,TABLE_NAME ,R_CONSTRAINT_NAME -- 부모 테이블 FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME = 'SYS_C008885' R_CONSTRAINT_NAME 값으로 다시 아래와 같이 조회한다. SELECT TABLE_NAME ,CONSTRAINT_NAME ,STATUS FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME = 'SYS_C008495' TABLE_NAME이 부모 테이블이다. p.. 더보기