본문 바로가기
SQL(Oracle)/Oracle기초정리(오라클로 배우는 데이터베이스 입문)

[Oracle기초정리] 06. 데이터를 추가, 수정, 삭제하는 데이터 조작어

by ssunooo 2024. 7. 30.

 

 

06-1. 테이블에 데이터 추가하기

 

  • 테이블 생성하기

    CREATE TABLE DEPT_TEMP
    AS SELECT * FROM TEMP;

    CREATE문은 오라클의 구성 요소, 즉 오브젝트를 만드는 데 사용하는 명령어이다.
    AS SELECT를 통하여 기존 TEMP 테이블의 모든 열과 데이터를 복사해서 생성했다.


  • INSERT문 실습 전 유이점

    DROP TABLE 테이블 이름;

    테이블을 잘못 만들었을 때 삭제하는 명령어이다.

    만약 실습 중 프로그램을 종료한다면 경고 창이 뜨는데 [Commit] 버튼을 클릭하고 끝내면 된다.


  • 테이블에 데이터를 추가하는 INSERT문

    INSERT INTO 테이블이름 [(열1, 열2, ... , 열N)]
    VALUES(열1에 들어갈 데이터, 열2에 들어갈 데이터, ... , 열N에 들어갈 데이터);

    < INSERT INTO와 VALUES의 정의 >
    키워드 필수 요소 선택 요소 설명
    INSERT INTO 테이블 이름 테이블의 열 새로운 데이터를 입력할 대상 테이블과 열을 입력한다.
    VALUES 입력할 데이터 - INSERT INTO에서 지정한 테이블의 열 순서와 자료형에 맞는 입력 데이터를 지정한다.

    만약 INSERT문에서 지정한 열 개수와 각 열에 입력할 데이터 개수가 일치하지 않거나 자료형이 맞지 않는 경우
    또는 열 길이를 초과하는 데이터를 지정하는 경우에는 INSERT문에 오류가 발생하여 실행되지 않는다.


  • 테이블에 NULL 데이터 입력하기

    INSERT문으로 새로운 데이터를 추가할 때 특정 열에 들어갈 데이터가 확정되지 않았거나
    굳이 넣을 필요가 없을 때 NULL을 사용한다.

    공백 문자열을 사용해도 NULL값을 입력할 수 있다.

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

    그러므로 위 두 코드는 같은 값이 입력된다.


  • 테이블에 날짜 데이터 입력하기

    INSERT문에서는 YYYY / MM / DD 또는 YYYY-MM-DD형식으로 날짜데이터를 입력할 수 있다.

    INSERT INTO EMP_TEMP(EMPNO, ENAME, HIREDATE)
    VALUES(1111, 홍길동, '2001/01/05');
    
    INSERT INTO EMP_TEMP(EMPNO, ENAME, HIREDATE)
    VALUES(1111, 홍길동, '2001-01-05');

    이 또한 두 코드는 같은 값이 입력된다.

    TO_DATE 함수를 사용하면 일/월/연도 순으로 넣을 수 있고,
    SYSDATE를 사용한다면 현재 날짜와 시간을 함께 출력할 수 있다.


  • 서브 쿼리를 사용하여 한번에 여러 데이터 추가하기

    INSERT INTO EMP_TEMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
    SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM, E.DEPTNO
    FROM EMP E, SALGRADE S
    WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL
    AND S.GRADE=1;

    EMP테이블에서 SALGRADE 테이블을 참조하여 S.GRADE가 1인 데이터만 테이블에 넣고 싶다면
    다음과 같이 사용하면 된다.


06-2. 테이블에 있는 데이터 수정하기

 

  • UPDATE문의 기본 사용법

    UPDATE문은 키워드 이후에 변경할 테이블 이름을 지정하고 SET절에 '변경할 열이름=변경할 데이터'를 지정한다.

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


    < UPDATE문의 정의 >

    키워드 필수 요소 선택 요소 설명
    UPDATE 테이블 이름 - 데이터를 수정할 테이블을 지정합니다.
    SET 변경할 열의 이름과 데이터 - 변경할 열을 선택하고 변경할 데이터를 입력합니다.
    WHERE - 변경 데이터를 선별하기 위한 조건식 테이블의 변경할 데이터 선별 조건식을 지정한다.
    생략할 경우 테이블 내 지정된 모든열의 데이터가 변경된다.


  • 데이터 전체 수정하기

    UPDATE DEPT_TEMP2
    SET LOC='SEOUL';
     
    위 코드를 통해 DEPT_TEMP2 테이블의 LOC열을 모두 'SEOUL'로 바꿀 수 있다.


  • 수정한 내용을 되돌리고 싶을 때

    ROLLBACK;

    ROLLBACK 명령문을 사용한다면 실수로 UPDATE문을 실행했을 때
    UPDATE 명령어를 실행한 이전 상태로 돌아간다.


  • 데이터 일부분만 수정하기

    UPDATE DEPT_TEMP2
    SET DNAME = 'DATABASE',
    LOC='SEOUL'
    WERE DEPTNO=40;

    수정 대상 행을 선별하기 위해 WHERE절과 조건식을 사용해서
    DEPTNO열이 40인 값들만 SET 이후의 값으로 변경할 수 있다.


  • 서브쿼리를 사용하여 데이터 수정하기

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

    위 코드를 통해 DEPT테이블의 DEPTNO가 40인 행들을 조회하고 DEPT_TEMP2에 반영시킨다.


  • UPDATE를 사용할 때 유의점

    UPDATE문과 DELETE문은 테이블에 이미 존재하는 데이터를 수정하거나 삭제하는 기능을 수행한다.
    그러므로 수정 혹은 삭제되면 안되는 데이터가 처할 위험성이 크다고 볼 수 있다.

    따라서 실행전에 UPDATE문의 WHERE절을 검증하는 작업이 반드시 필요하다.
    이를 위해 해당 WHERE절을 SELECT문에서 먼저 사용해 보는 것으로 방지한다.


06-3. 테이블에 있는 데이터 삭제하기

 

DELETE문은 테이블에 있는 데이터를 삭제할 때 사용한다.

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

 

< DELETE문의 정의 >

키워드 필수 요소 선택 요소 설명
DELETE 테이블 이름 FROM 데이터를 삭제할 테이블을 지정한다.
WHERE - 삭제 데이터를 선별하는 조건식 테이블의 삭제할 데이터를 선별하는 조건식을 지정한다.
생략할 경우 테이블의 모든 데이터를 삭제한다.

 

 

  • 데이터 일부분만 삭제하기

    DELETE FROM EMP_TEMP2
    WHERE JOB='MANAGER';

    위 코드를 통해 JOB열이 'MANAGER'인 행만 삭제할 수 있다.


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

    DELETE FROM EMP_TEMP2
    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);

    S.GRADE가 3등급이고 DEPTNO가 30인 행들만 삭제해야한다면 위 서브쿼리를 사용한 코드를 통해
    일부만 삭제할 수 있다.


  • 데이터 전체 삭제하기

    DELETE FROM EMP_TEMP2;

    위 코드처럼 삭제 대상 데이터를 특정 짓지 않게 되면 해당 테이블의 모든 데이터를 지울 수 있다.
    DELETE문 또한 WHERE절을 먼저 SELECT문에서 사용하여 검증을 거친 후에 실행하는 것이 좋다.

 

 

2024.07.30