1. 데이터 제어어(Data Control Language)
- 사용자에게 권한 생성 혹은 권한 삭제 같은 명령어
- grant : 권한 생성
- revoke : 권한 삭제
2. 컬럼 속성 - 무결성 제약 조건
- not null : null 값이 입력되지 못하게 하는 조건
- unique : 중복된 값이 입력되지 못하게 하는 조건
- check : 주어진 값만 허용하는 조건
- primary key : not null + unique의 의미
- foreign key(외래키) : 다른 테이블의 필드(컬럼)를 참조해서 무결성을 검사하는 조건
2-1. primary key
- primary key, 기본키, pk, 주키, 식별자 등으로 불리고 있다.
- 기본키 역시 기본적인 제약조건들은 테이블을 생성할 때 같이 정의한다.
- 테이블 당 하나만 정의가 가능하다.
(두 개 이상의 PK는 조합키/복합키 라고 불리고, 묶어서 하나로 본다)
- pk는 not null + unique 의 기능을 가지고 있다.
- 자동 index가 생성되는데 이는 검색 키로써 검색 속도를 향상시킨다.
2-2. pk 선언방법
create table pkTable(
col1 varchar2(10) primary key,
col2 varchar2(10) constraints pk이름 primary key,
col3 varchar2(10),
constraints pk이름 primary key (col3)
);
2-3. Foreign Key(외래키)
- 외래키, fk, 참조키, 외부키, 외부 식별자 등으로 불린다.
- fk가 정의된 테이블을 자식 테이블이라 칭한다.
- 참조되는 테이블 즉, pk가 있는 테이블을 부모 테이블이라 한다.
- 부모 테이블의 PK컬럼에 존재하는 데이터만 자식테이블에 입력할 수 있다.
- 부모 테이블은 자식의 데이터나 테이블이 삭제된다고 영향을 받지 않습니다.
- 참조하는 데이터 컬럼과 데이터 타입이 반드시 일치해야 한다.
- 참조할 수 있는 컬럼은 기본키(pk)이거나 unique만 가능하다. (보통 pk랑 엮는다)
2-4. fk 선언방법
create table pTable(
pCol1 number(10) primary key
);
create table cTable(
cCol1 number(10) primary key
pCol1 number(10),
constraints fk이름 Foreign key(pCol1) references
pTable(pCol1) on delete cascade
);
- 참조할 컬럼과 같은 컬럼이 자식 테이블에 존재해야 한다.
- 같은 이름을 쓸 필요는 없지만, 관계를 알아보기 쉽게 같은 컬럼명을 사용한다.
- 자식 테이블에 값을 먼저 넣을 수 없다.
- 참조되는 컬럼에 데이터가 있어야 값을 넣을 수 있다.
2-5. 삭제 옵션
-
on delete cascade
- 참조되는 부모 테이블의 행에 대한 delete를
허용한다.
- 즉, 참조되는 부모 테이블 값이 삭제되면
연쇄적으로 자식 테이블 값 역시 삭제된다.
-
on delete set null
- 참조되는 부모 테이블의 행에 대한 delete를
허용한다.
- 이건 cascade와 달리 부모 테이블의 값이 삭제되면
해당 참조되는 자식테이블의 값들은 null값으로
설정된다.
3. 시퀀스(Sequence)
- 연속적인 번호를 만들어주는 기능
- 시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체이다. 보통 PK값에 중복값을 방지하기 위해 사용한다.
- 예를 들어, 게시판에 글이 하나 추가될 때마다 글 번호(PK)가 생겨야 한다고 가정하자. 만약 100번 까지 글 번호가 생성되어있다면, 그다음 글이 추가가 되었을 경우 글 번호가 101번으로 하나의 row를 생성해 주어야 한다. 이 때 101번 숫자를 얻으려면 기존의 글 번호중 가장 큰 값에 +1을 하는 로직을 어딘가에 넣어야 하는데 시퀀스를 이용하면 이러한 로직이 필요하지않고 데이터베이스에 row가 추가될 때마다 자동으로 +1 시킨다.
3-1. 시퀀스 생성 옵션
- start with n : 초기화 값
- increment by n : 증가값
- maxvalue n : 최대값
nomaxvalue : 무한대 값 +
(진짜 무한이 아니고 9999...99 같은 값)
- minvalue n : 최소값
nominvalue : 무한대 값 -
- cycle : 시퀀스 한계값 도달시 최소값으로
돌아가서 시작하는지 여부. 즉, 반복여부
- nocycle : 기본값은 nocycle