참조 무결성 ( 의존성이 있을 때 )
입력, 삭제, 수정 과정에서 데이터의 일관성이 깨지는 것을 DBMS차원에서 방지하기 위한 조건
1. DELETE / MODIFY ACTION
CASCADE: 부모의 값 삭제 시 자식의 값도 같이 삭제
SET NULL: 부모의 값 삭제 시 자식의 해당 칼럼은 NULL 값이 된다 ( 자식 속성 NOT NULL이면 안됨 )
SET DEFAULT: 부모의 값 삭제 시 자식의 해당 칼럼은 기본값으로 변경
RESTRICT: 비식별자 관계에서 삭제 및 수정 가능
NO ACTION: 제약조건 위배한 경우 동작 실패하며 아무런 액션 X
2. INSERT ACTION
AUTOMATIC: 부모 테이블에 PK가 없는 경우 PK 생성 후 자식 테이블에 값 입력
SET NULL: 부모 테이블에 PK가 없는 경우 자식 테이블에 NULL 값 입력
SET DEFAULT: 부모 테이블에 PK가 없는 경우 자식 테이블에 기본값이 입력
DEPENDENT: 부모 테이블에 PK가 존재할 때만 자식 테이블에 값 입력을 허용
NO ACTION: 제약조건을 위배한 경우 동작 실패하며 아무런 액션 X
DDL
DDL은 자동커밋 되므로 롤백 불가능
- CREATE
- 주의할 점
- 숫자로 시작될 수 없고 _, $, #만 허용
- 칼럼의 이름은 통일성 있게 지어야 한다
- 주의할 점
- DROP
- ALTER
- TRUNCATE
- DELETE 차이점
- DELETE 롤백 가능
- DELETE FROM <테이블>
- TRUNCATE 롤백 불가능
- TRUNCATE TABLE <테이블>
- DELETE 롤백 가능
- DELETE 차이점
컬럼변경
Oracle
- MODIFY
- ALTER TABLE 명령어와 함께 사용되어 테이블의 기존 컬럼을 수정
- 컬럼의 데이터 타입이나 제약 조건을 변경
- 여러 컬럼을 한 줄로 변경 가능
SQL Server
- ALTER 컬럼
- 여러 컬럼을 한 줄로 변경 불가능
DML
- INSERT
- UPDATE
- DELETE
- MERGE
DCL
사용자(USER)를 생성하고 데이터베이스에 대한 권한 부여하는 명령어
CREATE USER 사용자1 IDENTIFIED BY 패스워드1;
ALTER
DROP
- REVOKE ... ON ...
- 권한 회수
- GRANTE ... ON ...
- 접근 권한 부여
TCL
트랜잭션
- 데이터베이스에서 작업, 동작의 최소 실행 단위
- 더 이상 쪼개질 수 없는 작업
- 전체가 되거나 전체가 안되거나
트랜잭션의 특징 (ACID)
- 원자성 (Atomicty)
- 하나의 트랜잭션으로 묶인 연산들은 모두 실행되거나 전혀 실행되지 않는다
- 일관성 (Consistency)
- 트랜잭션 이전에 데이터베이스에 오류가 없다면 이후에도 오류가 없다
- 고립성 (Isolation)
- 독립적으로 수행, 다른 트랜잭션이 실행 중간에 간섭, 영향 미치지 않음
- 영속성 (Durability)
- 트랜잭션의 결과는 영구적 저장, 유지
- COMMIT
- DML 명령들을 통한 변경사항을 DB에 영구적 반영하고 락을 해제하여 트랜잭션 완료
- COMMIT 전에는 락이 걸려있으며 다른 트랜잭션 영향을 안 받는다
- ROLLBACK
- 변경사항을 취소하고 원래대로 되돌린다.
- 락이 헤제됨
- 커밋이 된 것에 대해서는 롤백 불가능
- DDL 명령어는 자동 커밋되어 롤백 불가능
- DML 명령어는 자동 커밋이 되지 않아 롤백 가능
- SAVEPOINT
- 롤백을 하기 위한 저장점
'SQL' 카테고리의 다른 글
SQLD 마무리 (1) | 2024.11.12 |
---|---|
sqld 공부 ( 2 과목 : SQL 활용 ) (0) | 2024.11.09 |
sqld 공부 ( 2 과목 : SQL 기본 ) (1) | 2024.11.03 |
sqld 공부 ( 1 과목 : 데이터 모델링의 이해 ) (4) | 2024.11.02 |