ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD] SQL 개발자 공부하기 Day 12 : DML / DCL / TCL
    Study/SQL 2024. 2. 27. 21:34
    728x90
    반응형
    목차
    1. DML / DCL / TCL

    1. DML / DCL / TCL

     

     

    DML Data Manipulation Language

     테이블에서 데이터를 입력, 수정, 삭제, 조회한다.

     

    (1) INSERT

    테이블에 데이터를 입력하는 DML문이다.

    INSERT INTO table (column1, column2, ...) VALUES (expression1, expression2, ...);

     

    INSERT INTO table

    입력을 원하는 table 명을 적는다.

    (column1, column2, ...)

    입력을 원하는 칼럼명을 지정한다.

    (expression1, expression2, ...)

    table에 입력되는 데이터를 입력한다.

     

    만약 특정 테이블의 모든 칼럼에 대한 데이터를 삽입하는 경우, 칼럼명을 생략할 수 있다.

    INSERT INTO EMP VALUES(1000, '임베스트');

     

    주의사항
    INSERT문을 실행했다고 데이터 파일에 저장되는 것은 아니다.
    최종적으로 데이터를 저장하려면 TCL문인 Commit을 실행해야 한다.

     

     

    (2) SELECT

    데이터를 조회해서 해당 테이블에 바로 삽입할 수 있다.

    ‣ 단, 입력되는 테이블은 사전에 생성되어 있어야 한다.

     

     

    (3) Nologging

    로그파일의 기록을 최소화시켜서 입력 시 성능을 향상시키는 방법.

    ‣ Buffer Cache라는 메모리 영역을 생략하고 기록한다.

     

     

    (4) UPDATE

    원하는 조건으로 데이터를 검색해서 해당 데이터를 수정할 수 있다.

    만약, UPDATE문에 조건문을 입력하지 않으면 모든 데이터가 수정되므로 유의해야 한다.

    UPDATE EMP
    SET ENAME = 'James'
    WHERE EMPNO = 100;

     

    UPDATE EMP

    EMP 표에서 수정한다.

    SET ENAME = 'James'

    ENAME 칼럼의 값을 James로 바꾼다.

    WHERE EMPNO = 100;

    EMPNO가 100인 데이터의

    728x90
    주의사항
    데이터를 수정할 때, 조건절에서 검색되는 행 수만큼 수정된다.
    ex) EMPNO가 100인 데이터가 두 개라면, 두 개 다 바뀐다.

     

     

    (5) DELETE

     원하는 조건을 검색해서 해당되는 행을 삭제한다.

    조건문을 입력하지 않으면 모든 데이터가 삭제된다.

    데이터를 삭제한다고 해서 테이블의 용량이 초기화되지는 않는다.

    DELETE FROM EMP
    WHERE EMPNO = 100;

     

    EMP표에서 EMPNO가 100인 데이터를 삭제한다.

     

    TRUNCATE TABLE을 사용하여 데이터가 삭제되면 테이블의 용량은 초기화된다.

     

     

     

    DCL Data Control Language

     데이터베이스 사용자에게 권한을 부여하거나 회수한다.

     

    (1) GRANT

    데이터베이스 사용자에게 권한을 부여한다.

    데이터베이스 사용을 위해서는 권한이 필요하며 연결, 입력, 수정, 삭제, 조회를 할 수 있다.

     

     

    (2) Privileges (권한)

    권한 설명
    SELECT  지정된 테이블에 대해서 SELECT 권한을 부여한다.
    INSERT  지정된 테이블에 대해서 INSERT 권한을 부여한다.
    UPDATE  지정된 테이블에 대해서 UPDATE 권한을 부여한다.
    DELETE  지정된 테이블에 대해서 DELETE 권한을 부여한다.
    REFERENCES  지정된 테이블을 참조하는 제약조건을 생성하는 권한을 부여한다.
    ALTER  지정된 테이블에 대해서 수정할 수 있는 권한을 부여한다.
    INDEX  지정된 테이블에 대해서 인덱스를 생성할 수 있는 권한을 부여한다.
    ALL 테이블에 대한 모든 권한을 부여한다.

     

    GRANT SELECT, INSERT, UPDATE, DELETE
    ON EMP
    TO JAMES;

     

    사용자 JAMES에게 EMP 테이블에 대해서 SELECT, INSERT, UPDATE, DELETE 권한을 부여한다.

     

     

    (3) WITH GRANT OPTION vs ADMIN OPTION

    반응형

    [WITH GRANT OPTION]

     특정 사용자에게 권한을 부여할 수 있는 권한을 부여한다.

    권한을 A 사용자가 B에 부여하고 B가 다시 C를 부여한 후에 권한을 취소하면 모든 권한이 회수된다.

     

    [ADMIN OPTION]

    테이블에 대한 모든 권한을 부여한다.

     권한을 A 사용자가 B에 부여하고 B가 다시 C에게 부여한 후에 권한을 취소하면 B 사용자 권한만 취소된다.

     

     

    (4) REVOKE

     데이터베이스 사용자에게 부여된 권한을 회수한다.

     

     

     

    TCL Transation Control Language

     트랜잭션을 제어하는 명령어이다.

     

    (1) COMMIT

    INSERT, UPDATE, DELETE문으로 변경한 데이터를 데이터베이스에 반영한다.

    변경 이전 데이터는 잃어버린다.

    다른 모든 데이터베이스 사용자는 변경된 데이터를 볼 수 있다.

    COMMIT이 완료되면 데이터베이스 변경으로 인한 LOCK이 해제된다.

     COMMIT이 완료되면 다른 모든 데이터베이스 사용자는 변경된 데이터를 조작할 수 있다.

     COMMIT을 실행하면 하나의 트랜잭션 과정을 종료한다.

     

     

    (2) ROLLBACK

    데이터에 대한 변경 사용을 모두 취소하고 트랜잭션을 종료한다.

     INSERT, UPDATE, DELETE문의 작업을 모두 취소한다.

    단, 이전에 COMMIT한 곳까지만 복구한다.

    ROLLBACK을 실행하면 LOCK이 해제되고 다른 사용자도 데이터베이스 행을 조작할 수 있다.

     

     

    (3) SAVEPOINT

    트랜잭션을 작게 분할하여 관리하는 것이다.

     SAVEPOINT를 사용하면 지정된 위치 이후의 트랜잭션만 ROLLBACK 할 수 있다.

    SAVEPOINT의 지정은 SAVEPOINT [이름]을 실행한다.

    지정된 SAVEPOINT까지만 데이터 변경을 취소하고 싶은 경우는 ROLLBACK TO [이름]을 실행한다.

    ROLLBACK만 SAVEPOINT와 관계없이 실행하면 데이터의 모든 변경사항을 저장하지 않는다.

     

     

     

    728x90
    반응형

    댓글

Designed by Tistory.