Database/Oracle

[ORACLE] DDL, DML, DCL

📝 작성 : 2020.06.24  ⏱ 수정 : 
728x90

SQL문은 다루는 객체, 용도에 따라 DDL, DML, DCL(+TCL)로 분류 할 수 있습니다.

  • DCL에서 COMMIT, ROLLBACK, SAVEPOINT를 따로 분리하여 TCL(Transaction Control Languaage)라고 표현하기도 합니다.

각각 어떤 명령어가 있고 주로 어떤식으로 사용되는지 함께 정리했습니다.

DDL(Data Definition Language) : 데이터 정의어

: 관계형 데이터베이스의 구조를 정의합니다.

  • CREATE : TABLE, VIEW, INDEX, PROCEDURE를 만드는 역할을 합니다.
       TABLE     : CREATE TABLE table_name ( column1 datatype, column2 datatype, ... columnN datatype);
    VIEW      : CREATE [OR REPLACE] VIEW view_name AS SELECT columns FROM tables [WHERE conditions];
    INDEX     : CREAET [UNIQUE] INDEX index_name ON table_name (column1, ... columnN) [ COMPUTE STATISTICS ]
    PROCEDURE : CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter [,parameter])] 
                IS 
                      [declaration_section] 
                BEGIN
                    executable_section
                [EXCEPTION
                    exception_section[
                END [procedure_name];

  • DROP : TABLE, VIEW, INDEX, PROCEDURE를 삭제하는 역할을 합니다.
       TABLE     : DROP TABLE table_name;
    VIEW      : DROP VIEW view_name;
    INDEX     : DROP INDEX index_name;
    PROCEDURE : DROP PROCEDURE procedure_name;

  • ALTER : 존재하는 DB 객체에 대한 변경, RENAME의 역할을 합니다.
       ADD COLUMN    : ALTER TABLE table_name ADD column_name datatype;
    MODIFY COLUMN : ALTER TABLE table_name MODIFY column_name datatype;
    DROP COLUMN   : ALTER TABLE table_name DROP COLUMN column_name;
    RENAME COLUMN : ALTER TABLE table_name RENAME COLUMN old_column_name to new_column_name;
    RENAME TABLE  : ALTER TABLE table_name RENAME TO new_table_name;
    RENAME INDEX  : ALTER INDEX index_name RENAME TO new_index_nmae;
    REBUILD INDEX : ALTER INDEX index_name REBUILD COMPUT STATISTICS;

  • TRUNCATE : TABLE을 초기화합니다.
       TRUNCATE TABLE table_name;

DML(Data Manipulation Language) : 데이터 조작어

: 정의된 데이터베이스에 데이터를 조회, 삽입, 수정, 삭제합니다.

  • SELECT : 데이터를 조회합니다.
       SELECT expression1, ... expressionN
    FROM   table_name 
    WHERE  condition 
    GROUP  BY expression1, ... exprsssionN
    HAVING having_condition 
    ORDER  BY expression [ ASC | DESC ];

  • INSERT : 데이터를 삽입합니다.
       INSERT INTO table_name ( column1, ... columnN ) VALUES ( value1, ... valueN );
    INSERT INTO table_name SELECT expression1, ... expressionN FROM source_table WHERE condition;

  • UPDATE : 데이터를 수정합니다.
       UPDATE table_name SET column1 = value1, ... columnN = valueN WHERE condition;

  • DELETE : 데이터를 삭제합니다.
       DELETE FROM table_name WHERE condition;  

DCL(Data Control Language) : 데이터 제어어

: 데이터베이스에 접근, 객체 사용 권한을 주거나 회수합니다.

  • GRANT : 주로 테이블에 SELECT, INSERT, UPDATE, DELETE의 권한을 부여합니다. COMMIT, ROLLBACK이 되지 않습니다.
       GRANT SELECT, INSERT, UPDATE, DELETE ON table_name TO user_id;
    GRANT ALL ON table_name TO user_id;     

  • REVOKE : 주로 테이블에 부여된 권한을 회수합니다. COMMIT, ROLLBACK이 되지 않습니다.
       REVOKE SELECT, INSERT, UPDATE, DELETE ON table_name TO user_id;
    REVOKE ALL ON table_name TO user_id;

  • COMMIT : 변경 사항을 반영합니다.
       COMMIT [ WORK ] [ COMMENT clause ] [ WRITE clause ] [ FORCE clause ];
    COMMIT WORK COMMENT 'comment'; 
    COMMIT WORK WRITE IMMEDIATE WAIT;

  • ROLLBACK : 반영된 변경사항을 변경하기 이전 상태로 되돌립니다.
       ROLLBACK [ WORK ] [ TO [SAVEPOINT] savepoint_name | FORCE 'string' ];
    ROLLBACK WORK TO SAVEPOINT savepoint1;

  • SAVEPOINT : 트랜잭션의 특정 지점에 세이브포인트를 지정하고 ROLLBACK TO로 해당 지점으로 이동할 수 있습니다.
    세이브포인트는 RELEASE SAVEPOINT로 세이브포인트를 해제하거나 트랜잭션이 종료될 때 자동으로 해제됩니다.
       SAVEPOINT savepoint_name;
    ROLLBACK [ WORK ] TO [ SAVEPOINT ] savepoint_name;
    RELEASE SAVEPOINT savepoint_name;
반응형