-
[SQLD] SQL 개발자 공부하기 Day 12 : DML / DCL / TCLStudy/SQL 2024. 2. 27. 21:34728x90반응형
목차
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반응형'Study > SQL' 카테고리의 다른 글
[SQLD] SQL 개발자 공부하기 Day 14 : 과목별 핵심 150제 오답노트 (1/3) (1) 2024.02.29 [SQLD] SQL 개발자 공부하기 Day 13 : SQL 기본 및 활용 오답노트 (0) 2024.02.28 [SQLD] SQL 개발자 공부하기 Day 11 : DDL (0) 2024.02.26 [SQLD] SQL 개발자 공부하기 Day 10 : 계층형 조회 / PIVOT / UNPIVOT / 정규표현식 (0) 2024.02.25 [SQLD] SQL 개발자 공부하기 Day 9 : 윈도우 함수 / Top N 쿼리 (1) 2024.02.24