앞에서 테이블과 시퀀스를 만들었다면, 해당으로 데이터를 등록및 수정해보자.
1. INSERT - 테이블에 데이터 등록하기
1). 1건씩 데이터 등록하는 방식.
//임직원 테이블에 데이터 등록하기
INSERT INTO TEST_EMP (EMP_NO, EMP_ID, NAME, DEPT_NO) VALUES (SEQ_TEST_EMP.NEXTVAL, 'first','첫번째사원',1);
INSERT INTO TEST_EMP (EMP_NO, EMP_ID, NAME, DEPT_NO) VALUES (SEQ_TEST_EMP.NEXTVAL, 'secont','두번째사원',1);
INSERT INTO TEST_EMP (EMP_NO, EMP_ID, NAME, DEPT_NO) VALUES (SEQ_TEST_EMP.NEXTVAL, 'third','세번째사원',2);
INSERT INTO TEST_EMP (EMP_NO, EMP_ID, NAME, DEPT_NO) VALUES (SEQ_TEST_EMP.NEXTVAL, 'fourth','네번째사원',2);
INSERT INTO TEST_EMP (EMP_NO, EMP_ID, NAME, DEPT_NO) VALUES (SEQ_TEST_EMP.NEXTVAL, 'fifth','다섯번째사원',3);
INSERT INTO TEST_EMP (EMP_NO, EMP_ID, NAME, DEPT_NO) VALUES (SEQ_TEST_EMP.NEXTVAL, 'sixth','여섯번째사원',4);
INSERT INTO TEST_EMP (EMP_NO, EMP_ID, NAME, DEPT_NO) VALUES (SEQ_TEST_EMP.NEXTVAL, 'seventh','일곱번째사원',4);
//부서 테이블에 데이터 등록하기
INSERT INTO TEST_DEPT (DEPT_NO, DEPT_NM, TEAM_NM) VALUES (1, '경리부서','경리1팀');
INSERT INTO TEST_DEPT (DEPT_NO, DEPT_NM, TEAM_NM) VALUES (2, '경리부서','경리2팀');
INSERT INTO TEST_DEPT (DEPT_NO, DEPT_NM, TEAM_NM) VALUES (3, '구매부서','구매1팀');
INSERT INTO TEST_DEPT (DEPT_NO, DEPT_NM, TEAM_NM) VALUES (4, '구매부서','구매2팀');
INSERT INTO TEST_DEPT (DEPT_NO, DEPT_NM, TEAM_NM) VALUES (5, '인사부서','인사팀');
2). 테이블의 데이터를 읽어서 데이터를 입력할수 있는 SELECT INSERT 방식도 있다.
INSERT INTO TEST_EMP (EMP_NO, EMP_ID, NAME, DEPT_NO)
SELECT SEQ_TEST_EMP.NEXTVAL , 'etc' AS EMP_ID , NAME , DEPT_NO
FROM TEST_EMP
WHERE DEPT_NO = '2';
2. UPDATE - JOIN_DATE 에 입사일 데이터 등록하기.
UPDATE TEST_EMP SET JOIN_DATE = TO_DATE('20220101090000','YYYYMMDDHH24MISS')
WHERE EMP_NO = 3;
3. MERGE 문 - 조건이 맞을경우, 아닐경우 분기 처리를 할수 있다.
1). 구매부서인경우 입사일자를 현재시간으로 업데이트처리
MERGE INTO TEST_EMP A
USING (
SELECT DEPT_NO FROM TEST_DEPT
WHERE DEPT_NM = '구매부서'
) B
ON (A.DEPT_NO = B.DEPT_NO AND A.EMP_NO > 10)
WHEN MATCHED THEN
UPDATE SET A.JOIN_DATE = SYSDATE;
1). 인사부서인경우는 입사일자 현재로 업데이트, 아닌경우는 임직원으로 등록하기
MERGE INTO TEST_EMP A
USING (
SELECT DEPT_NO FROM TEST_DEPT
WHERE DEPT_NM = '인사부서'
) B
ON (A.DEPT_NO = B.DEPT_NO AND A.EMP_NO > 10)
WHEN MATCHED THEN
UPDATE SET A.JOIN_DATE = SYSDATE
WHEN NOT MATCHED THEN
INSERT (EMP_NO, EMP_ID, NAME, DEPT_NO)
VALUES(SEQ_TEST_EMP.NEXTVAL, 'vip','인사팀장',B.DEPT_NO);
4. DELETE 문 - 해당하는 조건에 대한 데이터 삭제.
DELETE FROM TEST_EMP
WHERE EMP_ID = 'etc';
'K'some 정보들 > 자료정리' 카테고리의 다른 글
오라클 SQL - 인덱스, 시퀀스 ( CREATE,ALTER,DROP) (2) | 2022.09.30 |
---|---|
오라클 SQL- 테이블 DDL (CREATE, ALTER, DROP, RENAME, TRUNCATE 사용) (1) | 2022.09.30 |