학습 기록/DataBase

23.05.16 / DataBase / TCL, DCL

SooHw 2023. 5. 29. 14:29

TCL

트랜잭션 제어어 (COMMIT, ROLLBACK, , )

트랜잭션 : 데이터베이스의 상태를 변화시키기 위해서 수행하는 최소 수행 단위

*트랜잭션의 4가지 특성

1. 원자성(Automicity) : 모두 실행되거나 실행 안되거나

2. 일관성(Consistency)

3. 고립성(Isolation)

4. 지속성(Durability)

 

COMMIT

DB에 영구적으로 저장, 마지막 COMMIT 시점 이후의 트랜잭션 결과 저장

 

ROLLBACK

트랜잭션을 취소, 마지막 COMMIT 시점까지만 복구

 

DCL

데이터 제어어 (GRANT, REVOKE, ROLE)

 

GRANT 

권한 부여

GRANT CREATE SESSION TO DCLTEST;

REVOKE

권한 회수

REVOKE CREATE SESSION FROM DCLTEST;

ROLE 권한묶음

 

----------

*에러문장

* insufficient privileges

불충분한 권한

* table or view does not exist

실제 테이블이 존재하는경우에도 나올수 있는 오류문장, '보안상'의 이유임

흔히 사이트에 로그인할때 ID와 PW 둘중 뭐가 잘못된건지 알려주지않음.

 

 

VIEW

가상의 테이블

테이블을 조회하는 SELLECT 문장을 저장하는 객체, 물리적 저장 X

CREATE VIEW 로그인정보 AS 
SELECT 회원ID, 비밀번호 FROM 네이버회원;

-- VIEW 삭제 
DROP VIEW 로그인정보;

VIEW 사용 목적

편리성 : 자주 사용하는 SELECT문장 저장하기 위해 사용

보안성 : 테이블의 특정 데이터들을 노출시키지 않기 위해 사용

 

SEQUENCE

특정 규칙에 맞는 숫자를 생성해주는 객체, ex)대기순번표, 직원ID

CREATE SEQUENCE 직원ID_NUM
     START WITH 100 -- 시작숫자
   INCREMENT BY 2 -- 증감숫자
       MAXVALUE 120   -- 최대값
       MINVALUE 100   -- 최소값
        NOCYCLE        -- 반복여부
;

 

 

ROWNUM

임시 행번호, 행의 개수 제한

SELECT ROWNUM, EMPLOYEE_ID, FIRST_NAME
  FROM EMPLOYEES
 WHERE ROWNUM <=10;

출력시 행 10개까지만 출력

 

* 급여가 높은 순서대로 상위 5명 출력

SELECT FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE ROWNUM<=5
ORDER BY SALARY DESC;

-> 틀린 문장임

- 실행순서가 ORDER BY보다 WHERE이 먼저라서 
ROWNUM 부터 한 후 ORDER이 들어가서 정확한 값 X

 

*올바른 문장

SELECT *
FROM (SELECT FIRST_NAME, SALARY
      FROM EMPLOYEES
      WHERE SALARY IS NOT NULL
      ORDER BY SALARY DESC)
WHERE ROWNUM <= 5;

 

'학습 기록 > DataBase' 카테고리의 다른 글

DataBase 연습문제  (0) 2023.05.29
23.05.15 / DataBase / DML  (0) 2023.05.15
23.05.10 / DataBase / DML  (0) 2023.05.10
23.05.09 / DataBase / ORDER BY, JOIN  (0) 2023.05.09
23.05.08 / DataBase / GROUP BY, HAVING  (0) 2023.05.08