- 선언 시기
- 테이블 생성 시 : CREATE 구문에 작성한다.
- 테이블 생성 후 : ALTER 구문에 작성한다.
- 선언 문법
- COLUMN LEVEL : [데이터 타입] [컬럼명] [제약 조건]
- TABLE LEVEL : CONSTRAINT [제약조건명] [제약 조건] [컬럼명]
- 종류
- Primary Key, Foreign Key, Unique, Not Null, Check, Default
- PRIMARY KEY(PK)
- NOT NULL + UNIQUE
- 테이블 당 1개만 가능하다.
- 많이 사용하기 때문에 보안을 생각해서 개인 정보 등은 사용하지 않아야 한다.
- [컬럼명] [데이터타입] PRIMARY KEY
- 종류
- Natural Key
- 실제로 어떤 개체가 갖고 있는 속성을 나타내는 컬럼이 Primary Key일 때 Natural Key
- Surrogate Key
- Primary Key로 사용하기 위해 인위적으로 생성한 컬럼이다.
- 어떤 회원의 속성을 직접 나타내는 컬럼은 아니다.
- Auto Increment 설정을 많이 사용한다.
- UUID를 사용해서 유일한 상태를 유지하기도 한다.
- NOT NULL(NN) : 유일하게 COLUMN LEVEL 문법만 가능하다.
- 이 컬럼에는 반드시 어떤 값이 들어 있어야 한다는 의미
- Null
- 어떤 값이 아니기 때문에 등호를 사용해서 어떤 값과 비교할 수 있는 대상이 아니다.
- 그래서 Null은 IS NULL 혹은 IS NOT NULL로 값을 비교할 수 있다.
- Null과 숫자 0 또는 비어있는 문자열('')은 그 의미가 전혀 다르다.
- 숫자 0 또는 비어있는 문자열('')은 그 자체로 값이다.
- UNIQUE(UK)
- 유일한 값만 들어가도록 하고 싶을 때 사용한다.
- 중복을 허용하지 않는 제약 조건이다.
- PK와는 다르게 NULL 값을 가질 수 있다.
- [제약조건명] UNIQUE([컬럼명])
- FOREIGN KEY(FK)
- 다른 테이블의 특정 row를 식별할 수 있게 해주는 제약조건이다.
- 참조하는 테이블은 자식 테이블, 참조를 당하는 테이블은 부모 테이블이라고 한다.
- 두 테이블의 컬럼 간에 Foreign key 관계가 개념적으로 성립한다는 것과 Foreign Key 관계가 실제로 설정되어 있다는 것은 엄연히 다른 개념이다.
- 자기 자신 테이블이나 다른 테이블의 특정 컬럼(PK, UK)
- [제약조건명] FOREIGN KEY ([컬럼명]) REFERENCES [테이블명]([컬럼명])
- CHECK(CK)
- 내가 원하는 조건을 작성한다.
- 입력 값의 범위를 지정할 수 있다.
- 나중에 조건을 추가할 경우 존재하는 데이터가 조건에 위배되면 적용이 안된다.
- [제약조건명] CHECK (조건)
- DEFAULT
- 기본 값이 NULL이 아닌 내가 설정한 값이 기본 값으로 입력되도록 하는 제약조건이다.
- [컬럼명] [데이터타입] DEFAULT [디폴트값]
최근댓글