The Debugging Chronicles : "코드의 미학"

10 데이터 처리를 추가, 수정, 삭제하는 데이터 조작어 본문

DBMS/Do it! 오라클로 배우는 데이터 베이스 입문

10 데이터 처리를 추가, 수정, 삭제하는 데이터 조작어

sweetseonah1004 2024. 7. 30. 17:02

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

테이블 생성하기

특정 테이블에 데이터를 새로 추가할 때 INSERT 문을 사용

 CREATE TABLE DEPT_TEMP
	AS SELECT * FROM DEPT;

 

INSERT 문 실습 전 유의점

 

테이블을 잘못 만들었거나 지워야 할 경우에는 'DROP TABLE' 문을 사용하여 테이블을 제거한다.

DROP TABLE 테이블명;

 

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

테이블에 데이터를 추가하는데 사용하는 문법이다.

INSERT INTO 뒤에 데이터를 추가할 테이블의 이름을 명시하고 해당 테이블의 열을 소괄호로 묶어서 지정한 후

VALUES절에 지정한 열에 입력한 데이터를 작성한다.

 

INSERT INTO 테이블명 (열1, 열2, ... , 열N) --1
VALUES (열1에 들어갈 데이터, 열2에 들어갈 데이터, ..., 열N에 들어갈 데이터); --2
번호
키워드
필수 요소
선택 요소
설명
1
INSERT INTO
테이블 이름
테이블의 열
새로운 데이터를 입력할 대상 테이블과 열을 입력한다.
2
VALUES
입력할 데이터
-
INSERT INTO에 지정한 테이블의 열 순서와 자료형에 맞는 입력 데이터를 지정한다.

 

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

INSERT문으로 새로운 데이터를 추가할 때 특정 열에 들어갈 데이터가 확정되지 않았거나 굳이 넣을 필요가 없는 데이터인 경우에

NULL을 사용한다.

 

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

INSERT INTO EMP_TEMP (EMPNO, ENAME, JOB, MGR, HIREATE, SAL, COMM, DEPNO)
              VALUES (999, '홍길동', 'PRESIDENT', NULL, '2001/01/01',
                      5000, 1000, 10);
SELECT * FROM EMP_TEMP;

 

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

INSERT INTO EMP_TEMP (EMPNO, ENAME, JOB, MGR, HIREATE, SAL, COMM, DEPNO)
     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
        ADN S.GRADE = 1;

SELECT * FROM EMP_TEMP;

 

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

UPDTAE문의 기본 사용법

UPDATE [변경할 테이블]--1
SET [변경할 열1] = [데이터], [변경할 열2] = [데이터], ..., [변경할 열n] = [데이터]--2
[WHERE 데이터를 변경할 대상 행을 선별하기 위한 조건];--3
번호
키워드
필수 요소
선택 요소
설명
1
UPDATE
테이블 이름
-
데이터를 수정할 테이블을 지정한다.
2
SET
변경할 열의
이름과 데이터
-
변경할 열을 선택하고 변경할 데이터를 입력한다.
3
WHERE
-
변경 데이터를 선별하기 위한 조건식
테이블의 변경할 데이터 선별 조건식을 지정한다.
생략할 경우 테이블 내 지정된 모든 열의 데이터가 변경된다

 

데이터 전체 수정하기

UPDATE DEPT_TEMP2
   SET LOC = 'SEOUL';    // LOC 열의 데이터를 모두 SEOUL로 수정해라

SELECT * FROM DEPT_TEMP2;

 

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

ROLLBACK;

 

데이터 일부분만 수정하기

UPDATE DEPT_TEMP2
   SET DNAME = 'DATABASE'
   SET LOC = 'SEOUL'
 WHERE DEPTNO = 40;
--DEPTNO가 40인 데이터만 DNAME을 'DATABASE', LOC를 'SEOUL'로 바꿔라

SELECT * FROM DEPT_TEMP2;

 

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

UPDATE DEPT_TEMP2
   SET LOC = 'SEOUL'
 WHERE DEPTNO = (SELECT DEPTNO
                   FROM DEPT_TEMP2
                  WHERE DNAME = 'OPERATIONS')
--DEPT_TEMP2 테이블에 DEPTNO가 DEPT_TEMP2에 DANME이 'OPERATIONS'인 데이터의 DEPTNO와 같다면 LOC를 'SEOUL'로 바꿔라

SELECT * FROM DEPT_TEMP2;

 

UPDATE문 사용할 때 유의점

· 이미 존재하는 데이터를 수정하거나 삭제하는 기능을 수행하므로 SELECT문이나 INSERT문에 비해 위험성이 큰 명령어다.

· UPDATE문을 실행하기 전에 UPDATE문의 WHERE절을 검증하는 작업이 반드시 필요하다.

해당 WHERE절을 UPDATE문에 넣어 실행하기 전에 SELECT문에서 먼저 사용해 보는 것만으로도 간단히 확인할 수 있다.

-- 완성된 UPDATE문
UPDATE DEPT_TEMP2
   SET DNAME = 'DATABASE',
       LOC = 'SEOUL'
WHETE DEPTNO = 40;

-- 검증문
SELECT *
  FROM DEPT_TEMP2
WHETE DEPTNO = 40;

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

데이터 일부분만 삭제하기

DELETE [FROM] [테이블 이름]--1
[WHERE 삭제할 대상 행을 선별하기 위한 조건식]; -- 2
번호
키워드
필수 요소
선택 요소
설명
1
DELETE
테이블 이름
FROM
데이터를 삭제할 테이블을 지정한다.
2
WHERE
삭제 데이터를 선별하려는 조건식
테이블의 삭제할 데이터를 선별하는 조건식을 지정한다.
생략할 경우 테이블의 모든 데이터가 지워진다.

 

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

DELETE FROM EMP_TEMP2
 WHERE JOB = 'MANAGER';

SELECT * FROM DEPT_TEMP2;

 

데이터 전체 삭제하기

DELETE FROM EMP_TEMP2

SELECT * FROM DEPT_TEMP2;