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;
반응형
'Database > Oracle' 카테고리의 다른 글
[Oracle] LAG, LEAD 알아보기 (0) | 2022.01.06 |
---|---|
[Oracle] 예약어 확인(ORA-00903 / ORA-00904) (0) | 2021.02.17 |
[ORACLE] ORA-00907 missing right parenthesis (0) | 2020.09.22 |