[ORACLE] DML 데이터 조작어

    ★DML (Data Manipulation Language)

     

    데이터 조작 어는 데이터 관점에서 생명주기를 제어하는 것을 의미한다.

     

    대표적으로 INSERT, SELECT, UPDATE, DELETE가 있다.

    다른 말로는 CRUD라고도 부른다.(Create Read Update Delete).

     

    조작어 설명
    INSERT 데이터를 추가한다
    SELECT 데이터를 조회한다
    UPDATE 데이터를 수정한다
    DELETE 데이터를 삭제한다.

     

     

    INSERT

    INSERT INTO 테이블명 (속성1, 속성2 …) VALUES(값1, 값2…);

    만약 TEST테이블 (CUSTNO, CUSTNAME)에 값을 넣는다면.

     

     

    INSERT INTO TEST (CUSTNO, CUSTNAME) VALUES (100, 'ABC');

    이런 예시로 값을 넣을 수가 있다.

     

    그리고 만약, TEST 테이블의 모든 칼럼에 값을 넣을 경우에는

     

    INSERT INTO 테이블명 VALUES(값1, 값2);

    테이블명 뒤에 설정하는 속성값(컬럼 명)을 생략이 가능하다.

     

    그러므로

     

    INSERT INTO TEST VALUES(100, 'ABC');

    이는 위에 INSERT문과 동일하다.

     

    이 문장의 단점은 무조건 모든 값을 넣어야 하며, 만약 값이 없을 경우에는

    NULL을 넣음으로서 값이 없음을 명확히 해야 한다.

     

    그러나 이 전에 배운 NOT NULL 설정이 된 속성 명일 경우엔 NULL이 입력이 되지 않으므로 명시해야 한다.

     

     

     

    SELECT

    SELECT * FROM TEST [WHERE 조건값];

    조건값이 없이 검색할 경우, TEST TABLE의 모든 속성 값의 데이터가 검색이 된다.

    이제 * 대신 속성명을 입력하게 될 경우에는 해당 속성 값만 검색할 수 있게 된다.

     

    또한 WHERE 절을 적절히 사용하게 되면, WHERE 조건값에 일치되는 정보만 검색할 수 있게 되어서

    수많은 데이터 값들 중에서 내가 원하는 데이터만 찾을 수 있게 도와준다.

     

    SELECT CUSTNO
    FROM TEST
    WHERE CUSTNAME = 'ABC';

    TEST의 테이블에서 CUSTNAME이 'ABC'로 저장된 값의 CUSTNO를 검색한다.라는 뜻이 된다.

     

     

    SELECT문의 해석은  FROM이 1순위, WHERE 2순위, SELECT 다음의 속성 값이 3순위다.

     

     

     

    UPDATE

    UPDATE 테이블명
    SET 속성값 = 수정할 속성 값
    WHERE 조건값;

    UPDATE의 사용법은 이와 같다.

    저장된 데이터를 수정할 때 사용하는 명령어로

    WHERE의 조건값이 일치된다면 SET을 통해 (1개~ 복수개)가 동시 수정이 가능하다.

     

    UPDATE TEST
    SET CUSTNO = 111
    WHERE CUSTNAME = 'ABC';

    TEST의 테이블에서 CUSTNAME의 값이 ABC라면, CUSTNO를 111로 변경한다.

    단, 없을 경우 변경하지 못한다.

     

    UPDATE TEST
    CUSTNO = 123, CUSTNAME = 'CHCO'
    WHERE CUSTNAME = 'ABC';

    TEST의 테이블에서 CUSTNAME의 값이 ABC라면, CUSTNO를 123, CUSTNAME의 값을 CHCO로 변경한다.

    단, 없을 경우 변경하지 못한다.

     

     

     

    DELETE

    DELTE 테이블명 WHERE 조건값

    DELETE는 해당 조건을 가진 행을 삭제하는 명령어다.

     

    DELTE TEST WHERE CUSTNO = 100;

    TEST테이블의 CUSTNO가 100일 경우, 해당 데이터 행을 모두 삭제한다.

     

     

    MERGE

    데이터의 값을 병합할 때 이용한다.

    MERGE INTO 테이블명1
    USING 테이블명2
    ON 조건값
    WHEN MATCHED THEN
    UPDATE SET 속성값
    WHEN NOT MATCHED THEN
    INSERT 속성명 VALUES (속성값);

    이제 앞서 설명한 UPDATE, INSERT도 속한 포함한 명령어이다.

     

    다른 컴퓨터 언어를 배웠다면 IF ~ ELSE와 기능이 비슷하다.

     

     

    MERGE INTO 테이블명 1이 기준이고.

    USING 테이블명 2는 보조이다.

    ON 조건이 일치된다면

     

    WHEN MATCHED THEN이 작동이 되고,

     

    ON 조건이 불일치된다면

    WHEN NOT MATCHED THEN이 작동이 된다.

     

     

    이를 활용하여, MERGE를 통해 2개의 테이블 값을 하나로 합치는데 이용할 수 있다.

     

    MERGE INTO TEST1 T1
    USING TEST2 T2
    ON T1.CUSTNO = T2.CUSTNO
    WHEN MATCHED THEN
    UPDATE SET T1.CUSTNO = T2.CUSTNO, T1.CUSTNAME = T2.CUSTNAME
    WHEN NOT MATHED THEN
    INSERT (T1.CUSTNO, T1.CUSTNAME) VALUES (T2.CUSTNO, T2.CUSTNAME);

    TEST 1 테이블과 TEST 2 테이블의 CUSTNO가 서로 일치할 경우에는

    TEST 1의 테이블의 값을 TEST2의 값으로 변경하고.

    TEST1 테이블과 TEST 2 테이블의 CUSTNO가 서로 일치하지 않을 경우에는

    TEST 1의 테이블에 TEST 2 값을 추가한다.

    반응형

    댓글

    Designed by JB FACTORY