데이터제어어(DCL), 컬럼속성, 기본키와 외래키

김영환·2023년 7월 31일
0

db

목록 보기
5/6

1. 데이터 제어어(Data Control Language)

  • 사용자에게 권한 생성 혹은 권한 삭제 같은 명령어
  • grant : 권한 생성
  • revoke : 권한 삭제

2. 컬럼 속성(무결성 제약조건)

  • not null : 널값이 입력되지 못하게 하는 조건
  • unique : 중복된 값이 입력되지 못하게 하는 조건
  • check : 주어진 값만 허용하는 조건
  • primary key : not null + unique + index 의 의미
  • foreign key : 다른 테이블의 필드(컬럼)를 참조해서 무결성을 검사하는 조건

3. 기본키(Primary Key)

  • 기본키역시 기본적인 제약조건들은 테이블을 생성할 때 같이 정의한다.
  • 테이블당 하나만 정의가 가능하다.(두개 이상의 PK는 조합키/복합키 라고 불립니다. 묶어서 하나로 본다)
  • 주키/기본키/식별자/PK 등으로 불리고 있다.
  • PK는 NOT NULL + UNIQUE + Index
  • 자동 Index가 생성되는데 이는 검색 키로서 검색 속도를 향상시킨다.
기본키 선언 방법
create table pkTest(
	pkCol1	varchar2(10) primary key
);

create table pkTest(
	pkCol1	varchar2(10) constraints pk이름 primary key
);

create table pkTest(
	pkCol1	varchar2(10),
	pkCol2	varchar2(10),
	pkCol3	varchar2(10),
	constraints pk이름 primary key(pkCol1)
);

4. 외래키(FOREIGN KEY)

  • 외부키/외래키/참조키/외부 식별자/FK 등으로 불립니다.
  • FK가 정의된 테이블을 자식 테이블이라고 칭합니다.
  • 참조되는 테이블 즉, PK가 있는 테이블을 부모 테이블 이라고 한다.
  • 부모 테이블은 PK컬럼에 존재하는 데이터만 자식 테이블에 입력할 수 있습니다.
  • 부모테이블은 자식의 데이터나 테이블이 삭제 된다고 영향을 받지 않는다.
  • 참조하는 데이터 컬럼과 데이터 타입은 반드시 일치해야 합니다.
  • 참조할 수 있는 컬럼은 기본키(PK)이거나 UNIQUE만 가능하다.
  • 보통 PK랑 엮는다.
외래키 정의
create table fk_test(
	department_id	varchar2(10) 
	constraints fk이름 references departments(department_id) 
);

create table fk_test(
	department_id	varchar2(10),
	....			    ,
	constraints dept_fk foreign key(department_id)
	reference departments (department_id)
);

5. 삭제옵션

  • ON DELETE CASCADE
    -> 참조되는 부모 테이블의 행에 대한 delete를 허용한다.
    즉, 참조되는 부모 테이블 값이 삭제되면 연쇄적으로 자식 테이블 값 역시 삭제된다.
    -> 보통 많이 사용
  • ON DELETE SET NULL
    -> 참조되는 부모 테이블의 행에 대한 delete를 허용한다.
    즉, 부모테이블 값이 삭제가 되면 해당 참조하는 자식 테이블의 값들은 NULL값으로 설정된다.
profile
개발

0개의 댓글