. DCL(Data Control Language)
: DCL은 데이터 제어 언어로 데이터, 트랜잭션을 저장 및 취소하는
COMMIT과 ROLLBACK 명령어가 있고
DB 권한을 부여 및 삭제하는 GRANT / REVOKE가 있습니다.
COMMIT / ROLLBACK : 데이터, 트랜젝션 저장 / 취소
GRANT / REVOKE : DB 권한 부여 / 삭제
. SAVE POINT
: 현재의 트랜젝션을 작게 분할 할 수 있다.
저장된 SAVEPOINT는 ROLLBACK TO SAVEPOINT를 사용하여
표시한 SAVEPOINT까지 롤백 가능하다.
여러개의 SQL문 실행을 수반하는 Transaction의 경우
사용자가 트랜젝션 중간 단계에서 SAVEPOINT를 지정할 수 있다.
형식
SAVEPOINT 포인트 이름; => 특정 위치 지정
ROLLBACK TO 포인트 이름; => 특정 위치로 되돌리기
(commit은 savepoint의 의미가 없다)
. TRUNCATE(DDL)와 DELETE(DML)의 명령차이
TRUNCATE 자동저장, 레코드 지울 때 한번에 다 지워버림(롤백안됨)
DELETE COMMIT 사용, 롤백하면 지운거 되살아남
. 무결성 제약조건 (Data Integrity Constraint Rule)
: 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서
테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러가지 규칙을 말한다.
. 무결성 : 데이터베이스 내에 있는 데이터의 정확성 유지
. 제약조건 : 바람직하지 않은 데이터가 저장되는 것을 방지하는 것
데이터 무결성 제약조건의 특징
. 테이블 생성시 무결성 제약조건을 정의하여 프로그래밍 과정을 줄여준다.
. 데이터베이스 서버에 의해 무결성 제약조건이 관리되어
데이터 오류 발생 가능성을 줄여준다.
. 테이블에 대해 정의되고 데이터 딕셔너리에 저장된다.
. 일시적으로 활성화 또는 비활성화 할 수 있다.
. 무결성 제약 조건 역할
NOT NULL NULL을 허용하지 않는다.
UNIQUE 중복된 값을 허용하지 않는다.
항상 유일한 값을 갖도록 한다.
PRIMARY KEY(기본키) NULL을 허용하지 않고
중복된 값을 허용하지 않는다.
NOT NULL조건과 UNIQUE 조건을 결합한 형태이다.
FOREIGN KEY(외래키) 참조되는 테이블의
컬럼의 값이 존재하면 허용한다.
CHECK 저장 가능한 데이터 값의 범위나 조건을
지정하여 설정한 값만을 허용한다.
. NOT NULL 제약 조건
: 특정 컬럼은 반드시 값이 입력되도록 필수 입력 컬럼으로 지정하는 것
NOT NULL은 INSERT시 즉, 데이터 입력시에
누락이 되어서는 안되는 부분이다.
NULL값이 들어가게 되면 오류가 난다.
CREATE TABLE TABLE_NOTNULL(
LOGIN_ID VARCHAR2(20) NOT NULL,
LOGIN_PWD VARCHAR2(20) NOT NULL,
TEL VARCHAR2(20)
);
INSERT INTO TABLE_NOTNULL (LOGIN_ID, LOGIN_PWD)
VALUES ('TEST_ID_01','1234');
INSERT INTO TABLE_NOTNULL (LOGIN_ID, TEL)
VALUES ('TEST_ID_02','010-123-4567'); == 오류
INSERT INTO TABLE_NOTNULL (LOGIN_ID, LOGIN_PWD, TEL)
VALUES ('TEST_ID_02','4567','010-123-4567');
ALTER TABLE TABLE_NOTNULL MODIFY LOGIN_ID UNIQUE;
== 오류, 중복키가 있어서 유니크를 줄 수 없음 지워야 가능
(DELETE FROM TABLE_NOTNULL WHERE LOGIN_PWD = '4567';)
CONSTRAINT _TYPE 제약 조건 종류
C: Check,NOT NULL
U: UNIQUE
P: PRIMARY KEY
R: FOREIGN KEY
select CONSTRAINT_NAME, CONSTRAINT_TYPE,
r_constraint_name,table_name
from USER_CONSTRAINTS;