Table
1. 데이터 베이스 제약조건 이란?
- 데이터의 무결성을 지키기위한 규칙
(데이터의 무결성 : 데이터의 정확성, 일관성, 유효성이 유지되는 것)
- 테이블을 수정 작업 하는 경우, 잘못된 트랜잭션 수행 방지
- 테이블 간 제약조건이 있어서 종속성이 있는 경우 , 테이블 삭제를 방지함.
2. 제약 조건의 종류
1. PRIMARY KEY (PK)
- 레코드의 값을 식별할 수 있는 단 하나의 키
- 테이블 생성 시, 고유의 단 한 개의 PK 설정
- 중복 불가, NULL 불가
- 고유 인덱스 자동 생성
- 여러 컬럼을 하나의 PK로 생성 가능
- 장점 > 데이터 일관성 유지
> 데이터 모호함 제거
> 중복 행으로 인한 데이터 꼬임 방지
> 레코드 검색으로 빠르게 원하는 데이터를 찾을 수 있음
2. FOREIGN KEY (FK)
- 한 테이블을 다른 테이블과 연결해주는 역할
- 테이블 간의 잘못된 매핑을 방지하는 역할
- FK를 선언한 테이블이 하위 테이블이 된다.
- 중복성을 제거하기 위해 참조하는 컬럼의 데이터 타입이 일치해야하며, PK와 Unique만 참조 가능
- 외래키에 의해 참조되고 있는 기본키는 삭제 불가
- 테이블 동작의 종류
> ON DELETE + 동작 : 참조되는 테이블의 값이 삭제될 경우 동작
> ON UPDATE + 동작 : 참조되는 테이블의 값이 수정될 경우 동작
> CASCADE : 참조하는 테이블에서도 삭제와 수정이 같이 이루어짐
> SET NULL : 참조하는 테이블의 데이터는 NULL로 변경
> NO ACTION : 참조하는 테이블의 데이터는 변경 X
> SET DEFAULT : 참조하는 테이블의 데이터는 필드의 기본값으로 설정
> RESTRICT : 참조하는 테이블에 데이터가 남아 있으면, 참조되는 테이블의 데이터 삭제 X
3. UNIQUE
- 고유키
- 중복된 값을 허용하지 않지만, 여러개의 NULL값 허용
- 고유 인덱스 자동 생성
4. NULL / NOT NULL
- 해당 컬럼의 NULL 값 허용 여부 설정
5. DEFAULT
- 해당 컬럼에 기본값 설정
6. CHECK
- 데이터의 점검을 하는 제약조건
7. TABLE 생성
CREATE TABLE 테이블명
( 컬럼 타입 (크기) NOT NULL 널값이 들어갈 수 없음
영어 1바이트, 한글 3바이트
타입 바로 옆에 PRIMARY KEY 라고 설정할 수 있지만 이름을 설정하지 못함. (이름은 따로 설정)
, 컬럼 타입 DEFAULT 초기값 지정
, CONSTRAIN PK명PRIMARY KEY(컬럼)
// heidiSQL은 PK명을 따로 적어도 지정이 안돼서 그냥 pk지정할 때 옆에다 PIMARY KEY 적으면 됨
, CONSTRAIN FK명 FOREIGN KEY (컬럼) REFERENCE 참조테이블 (참조컬럼)
, CONSTRAIN UNIQUE 명 UNIQUE (컬럼)
, CONSTRAIN CHECK명 CHECK (조건)
);
8. TABLE 변경
- 컬럼 추가
: ALTER TABLE 테이블명 ADD COLUMN 컬럼 데이터타입;
- 컬럼 데이터 타입 변경
: ALTER TABLE 테이블명 ALTER COLUMN 컬럼 데이터타입;
- 컬럼 삭제
: ALTER TABLE 테이블명 DROP COLUMN 컬럼;
9. TABLE 삭제
- DROP TABLE 테이블명 ;
10. TABLE DATA 삭제
- TRUNCATE TABLE 테이블명;
* DELETE, DROP, TRUNCATE *
- DELETE 후에는 데이터만 지워지고 쓰고 있던 디스크 상의 공간은 그대로 가지고 있음.
DELETE는 원하는 데이터만 골라서 삭제가 가능하고, ROLLBACK을 하면 다시 데이터를 살릴 수 있다.
- TRUNCATE는 데이터가 1건도 없는 상태로 모든 데이터를 삭제하고 컬럼만 남아있음.
TRUNCATE는 용량도 줄고 인덱스도 모두 삭제
- DROP은 데이터와 테이블 전체를 삭제
DROP은 사용하고 있던 공간도 모두 반납하고 인덱스나 제약조건 등 오브젝트로 삭제
* TRUNCATE, DROP은 삭제하면 ROLLBACK해도 데이터를 다시 살릴 수 없기 때문에 조심해서 사용해야함!!