Database

[Oracle Database] 8. 데이터 조작어에 대해 알아보자.

myeongju 2024. 7. 14. 18:59
반응형

INSERT문

기본 형태

INSERT INTO 테이블 이름[(열1, 열2, ..., 열N)]
VALUES(열1에 들어갈 데이터, 열2에 들어갈 데이터, ..., 열N에 들어갈 데이터);
  • INSERT문에 지정하는 열은 생략할 수 있다.
  • 열을 생략하면 해당 테이블을 만들 때 설정한 열 순서대로 모두 나열되어 있다고 가정하고 데이터를 작성해야 한다.
  • 열 개수나 자료형 및 길이는 반드시 맞춰 줘야 한다.

 

NULL 데이터 입력하기

데이터를 추가할 때 특정 열에 들어갈 데이터가 확정되지 않았거나 굳이 넣을 필요가 없는 데이터인 경우에는 NULL을 사용한다.

 

NULL을 INSERT문에 지정하는 방법

  1. NULL을 직접 명시적으로 입력해주는 방법
  2. 대상 열을 생략하여 암시적으로 NULL이 입력되도록 유도하는 방식

 

NULL을 지정 입력

INSERT INTO DEPT_TEMP
 VALUES(70, 'WEB', NULL);

 

해당 열의 자료형이 문자열 또는 날짜형일 경우 빈공백 문자열도 NULL을 입력할 수 있다

INSERT INTO DEPT_TEMP
 VALUES(80, 'MOBILE', '');

 

날짜 데이터 입력하기

YYYY/MM/DD 형식

INSERT INTO EMP_TEMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
        VALUES (9999, '홍길동', 'PRESIDENT', NULL, '2001/01/01',
                5000, 1000, 10);

 

YYYY-MM-DD 형식

INSERT INTO EMP_TEMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
    VALUES( 1111, '성춘향', 'MANAGER', 9999, '2001-01-05', 4000, NULL, 20);

 

TO_DATE 함수를 사용하여 날짜 데이터 입력하기

INSERT INTO EMP_TEMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
    VALUES( 2111, '이순신', 'MANAGER', 9999, TO_DATE('07/01/2001', 'DD/MM/YYYY'), 4000, NULL, 20);

 

SYSDATE를 사용하여 날짜 데이터 입력하기

  • 현재 시점으로 날짜를 입력할 경우에는 SYSDATE를 지정하여 처리
  • SYSDATE 방식 : 데이터 입력 시점을 정확히 입력할 수 있어 자주 사용

 

SYSDATE를 사용하여 날짜 데이터 입력하기

INSERT INTO EMP_TEMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
    VALUES( 3111, '심청이', 'MANAGER', 9999, SYSDATE, 4000, NULL, 30);

 

 

UPDATE문

기본 형식

UPDATE [변경할 테이블]
SET [변경할 열1]=[데이터], [변경할 열2]=[데이터], ..., [변경할 열N]=[데이터]
[WHERE 데이터를 변경할 대상 행을 선별하기 위한 조건];

 

데이터 전체 수정

UPDATE DEPT_TEMP2
    SET LOC = 'SEOUL';

 

수정한 내용을 되돌리고 싶을 때는 아래 명령어를 치면 된다.

ROLLBACK;

 

데이터 일부분만 수정하기

Ex) 40번 부서의 부서 이름을 DATABASE로 수정하고 지역을 SEOUL로 수정

UPDATE DEPT_TEMP2
    SET DNAME = 'DATABASE',
        LOC = 'SEOUL'
    WHERE DEPTNO = 40;
SELECT * FROM DEPT_TEMP2;

 

여러 열을 한 번에 수정하는 경우

UPDATE DEPT_TEMP2
    SET(DNAME, LOC) = (SELECT DNAME, LOC FROM DEPT WHERE DEPTNO=40)
    WHERE DEPTNO=40;

 

열 하나하나를 수정하는 경우

서브쿼리에 나열한 열과 UPDATE문으로 변경할 열 개수나 자료형은 일치해야한다.

UPDATE DEPT_TEMP2
    SET DNAME = (SELECT DNAME FROM DEPT WHERE DEPTNO=40),
        LOC = (SELECT LOC FROM DEPT WHERE DEPTNO=40)
WHERE DEPTNO=40;

 

WHERE절에 서브쿼리를 사용하기

UPDATE DEPT_TEMP2
    SET LOC = 'SEOUL'
    WHERE DEPTNO = (SELECT DEPTNO FROM DEPT_TEMP2 WHERE DNAME='OPERATIONS');
SELECT * FROM DEPT_TEMP2;

 

 

DELETE 문

기본 형식

DELETE [FROM] [테이블 이름]
[WHERE 삭제할 대상 행을 선별하기 위한 조건식];

 

WHERE절 사용

DELETE EMP_TEMP3
WHERE JOB = 'MANAGER';
SELECT * FROM EMP_TEMP3;

 

서브쿼리를 사용하여 데이터 삭제

DELETE FROM EMP_TEMP3
WHERE EMPNO
IN (SELECT E.EMPNO
        FROM EMP_TEMP2 E, SALGRADE S
        WHERE E.SAL BETWEEN S.LOSAL
                AND S.HISAL
                AND S.GRADE=3
                AND DEPTNO=30
        );

 

반응형