본문 바로가기

IT/Oracle

오라클 8탄 [데이터 조작어 DML]

데이터 조작(DML)


데이터

입력 : INSERT

      수정 : UPDATE

      삭제 : DELETE

중요) 트랜젝션(COMMIT, ROLLBACK)과 연결된다.



PK MEM_ID VARCHAR2(10 BYTE)

MEM_NAME VARCHAR2(20 BYTE)

AGE NUMBER(3)

BIRTH_DATE DATE

EMAIL VARCHAR2(50 BYTE)


1. INSERT (데이터 입력)

형식)

  INSERT INTO 테이블이름(컬럼1, 컬럼2, ...) 

                    VALUES(값1,  값2, ...);

  예)


;

  INSERT INTO MEMBER (MEM_ID

      , MEM_NAME

                        , AGE

                        , BIRTH_DATE

                        , EMAIL)

      VALUES('1001'

                  , 'LEE'

                        , 29

                        , TO_DATE('20141218','YYYYMMDD')

                        , 'HPPY@GMAIL.COM');

--                벨류 값은(VARCHAR 문자열 또 DATE등에 맞춰서 선언한다.

SELECT * FROM MEMBER;


DELETE MEMBER WHERE MEM_NAME = 'HIM' ; :멤버삭제

;


-- 전체 컬럼에 입력을 할 경우 컬럼을 제외할 수 있다.

-- 단, VALUES에 들어가는 순서가 일치해야 한다.

; INSERT INTO MEMBER

      VALUES('1021'

                  , 'L5E'

                        , 86

                        , TO_DATE('20141218','YYYYMMDD')

                        , 'HPPY2@GMAIL.COM'

                        , DEFAULT);

                        

일부 컬럼 입력시)

  1) MAM_NAME 제외하고 입력시 -> 오류 발생, 멤버 NAME은 NOT NULL로 처리되어 있어서 

            값이 들어가 있어야한다.  

  ;

  INSERT INTO MEMBER (MEM_ID

--       , MEM_NAME

                        , AGE

                        , BIRTH_DATE

                        , EMAIL)

      VALUES('1003'

--                     , 'LEE'

                        , 78

                        , TO_DATE('20141218','YYYYMMDD')

                        , 'HP4PY@GMAIL.COM');

                        

2) NULL 허용 컬럼에 대한 입력시

;  

  INSERT INTO MEMBER (MEM_ID

      , MEM_NAME

                        , AGE

--                        , BIRTH_DATE

                        , EMAIL)

      VALUES('1003'

                    , 'L5E'

                        , 78

--                        , TO_DATE('20141218','YYYYMMDD')

                        , 'HP4PY@GMAIL.COM');

SELECT * FROM MEMBER;


      ALTER TABLE MEMBER

      ADD JOIN_DATE DATE DEFAULT SYSDATE;

      

      ; INSERT INTO MEMBER

      VALUES(1111

                  , 'L5323'

                        , 85

                        , TO_DATE('20140518','YYYYMMDD')

                        , 'HP3FPY2@GMAIL.COM'

                        , DEFAULT);

      ; INSERT INTO MEMBER

      VALUES('1021'

                  , 'L5E'

                        , 86

                        , TO_DATE('20141218','YYYYMMDD')

                        , 'HPPY2@GMAIL.COM'

                        , DEFAULT);

                        ;


INSERT INTO EMP(EMPNO, ENAME) VALUES(1111,'김태희');


INSERT INTO EMP(EMPNO, ENAME) VALUES(1111,'전지현');


SELECT * FROM EMP;


SELECT* FROM EMP WHERE DEPTNO IS NULL;




--롤백 방금삭제한 데이터를 되돌려주는 것

--커밋 저장하는법


--DELETE

형식) DELETE FROM 테이블이름 WHERE 삭제할 조건;


1) DELETE FROM EMP WHERE EMPNO > 1000;


2) DELETE FROM EMP WHERE JOB IS NULL;


3) DELETE FROM EMP WHERE HIREDATE IS NULL;


4) DELETE FROM EMP WHERE SAL IS NULL;


5) DELETE FROM EMP WHERE DEPTNO IS NULL;


--공통코드등 중요한 데이터는  스크립트로 보관


UPDATE MEMBER SET MEM_NAME='EIFJ' WHERE MEM_ID= '1111';

--MEM_ID가 1111인 사람의 입사일을 오늘날짜로 만드는 UPDATE


UPFATE -> 기존 데이터 값 수정


형식) 

UPDATE 테이블이름

    SET 컬럼명1 = 값1

        , 컬럼명2 = 값2

         .

         .

         .

     WHERE 조건

     

예) 사원번호 7499 ALLEN의 급여를 10000으로 변경하시오;

UPDATE EMP

  SET SAL = 10000

   WHERE EMPNO = 7499;

   

   SELECT SAL FROM EMP WHERE EMPNO = 7499;

   

  UPDATE EMP

  SET SAL = 1600

   WHERE EMPNO= 7499;

   

   SELECT * FROM EMP;

   

예) 부서번호가 20인 사원의 급여를 20% 증가해서 출력하시오

;

  UPDATE EMP

  SET SAL = SAL * 1.2

   WHERE DEPTNO = 20;


DELETE, UPDATE 에서 가장 중요한 것은 WHERE절의 조건을 어떻게 줄 것인가?


예) 사원번호 103번인 사원의 급여를 50%인상하아

UPDATE EMPLOY

SET SALARY = SALARY * 1.5

WHERE EMPLOYEE_ID = 103;

'IT > Oracle' 카테고리의 다른 글

오라클 10탄 [ INDEX ]  (0) 2015.07.25
오라클 9탄 (sequence,view)  (0) 2015.07.24
오라클 7탄 (테이블 생성및 삭제)  (1) 2015.07.21
오라클 6탄 (SCOOP) 서브쿼리  (0) 2015.07.20
오라클 함수정리 6탄 1(hr테이블)  (0) 2015.07.19