데이터 조작어 (Data Manipulation Language)

INSERT INTO, VALUES()

테이블 안에 데이터를 삽입하는 역할을 한다.

모든 필드에 값을 추가할때와 원하는 필드에만 추가할때랑 형태가 조금 다르다.

INSERT INTO emp VALUES(2222, 'JANE', 'PLANNER', 7499, SYSDATE, 1000, 500, 40);

테이블의 모든 행에 데이터를 삽입하려면 행의 순서에 따라 올바른 형태의 데이터를 나열하면 된다. 행의 순서는 SELECT로 확인한다.

emp 테이블에 이름이 사번 3333, 급여 2000, 이름 DAVID인 데이터를 삽입하자.

INSERT INTO emp(empno, sal, ename) VALUES(3333, 2000, 'DAVID');

특정 데이터만 삽입하려면 어느 행에 추가할 것인지 정확히 범위를 정해주어야 한다. 테이블 뒤 괄호에 필드명, VALUES 뒤 괄호에는 데이터값.

CREATE

정확히는 데이터 조작어가 아닌 데이터 정의언어이지만, 필드를 만들려면 테이블을 먼저 만들어야 하므로 간단하게 알아보자.

새로운 테이블을 생성하는 역할이다.

테이블을 생성할때 필요한 요소는 테이블 이름, 그리고 필드이다. 필드를 구성하는건 필드명, 자료형과 특성이다.

우리가 처음에 emp를 만들때 사용했던 demo.sql을 살펴보자.

CREATE TABLE EMP
       (EMPNO NUMBER(4) NOT NULL,
        ENAME VARCHAR2(10),
        JOB VARCHAR2(9),
        MGR NUMBER(4),
        HIREDATE DATE,
        SAL NUMBER(7, 2),
        COMM NUMBER(7, 2),
        DEPTNO NUMBER(2));

자료형에 대해서는 추후에 다뤄보도록 하자.

기존의 테이블 형태를 복사하여 가져오는 방법도 있다.

CREATE TABLE emp2 AS SELECT * FROM emp;

AS 뒤에 원하는 테이블의 원하는 필드를 선택해서 동일하게 만드는 방식도 있다.

이렇게 하면 필드 뿐만 아니라 데이터도 가져오게 되는데, 그럴땐 뒤에 항상 false인 조건식을 붙이면 데이터는 제외시키고 필드만 가져올 수 있다.

CREATE TABLE emp3
AS SELECT empno, ename, job FROM emp WHERE 1=2;

SELECT 명령어는 INSERT INTO와도 사용이 가능하다. 다른 테이블의 필드를 가져와서 추가하고 싶을때는 이렇게 하자.

INSERT INTO emp3
SELECT deptno, sal, comm FROM emp;

UPDATE, SET

테이블 내 데이터를 1개 이상 수정하는 역할이다.

앞서 추가했던 DAVID사원의 업무를 인사부(Human Resources)로 수정하자.

UPDATE emp SET job='HR'
WHERE ename='DAVID';

또한 기존의 데이터를 수정하는 것도 가능하다. 예를 들어 업무가 MANAGER인 사원들의 급여를 10% 인상해보자.

UPDATE emp SET sal=sal*1.1 WHERE job='MANAGER';

DELETE

데이터를 삭제하는 역할이다.

DELETE FROM emp WHERE comm<200;

 

여기까지 데이터를 관리하는 데이터 조작어 (DML)에 대해 알아보았다.

+ Recent posts