NOT NULL
빈 값을 허용하지 않는 제약조건. 빈 값이 입력되면 오류 발생
create table 테이블명(
칼럼명 데이터타입 NOT NULL
);
UNIQUE
유일한 값을 가져야함. 여러개의 컬럼에 UNIQUE 적용할경우 한번에 선언 가능
create table 테이블명(
칼럼명1 데이터타입1 UNIQUE NOT null,
칼럼명2 데이터타입2 UNIQUE NOT null,
칼럼명3 데이터타입3 UNIQUE NOT null
);
create table 테이블명(
칼럼명1 데이터타입1 NOT null,
칼럼명2 데이터타입2 NOT null,
칼럼명3 데이터타입3 NOT null,
UNIQUE(칼럼명1, 칼럼명2, 칼럼명3)
);
Primary Key
주 식별자, 주 키, PK. UNIQUE 해야하며 NOT NULL해야함. 해당 키로 지정한 칼럼은 대표성을 가짐.
일반적으로 SERIAL사용하며 테이블당 1개. 외래키 제약조건에 의해 여러개일 경우 한번에 선언가능
create table 테이블명(
칼럼명1 데이터타입1 NOT null PRIMARY KEY,
칼럼명2 데이터타입2 NOT null,
칼럼명3 데이터타입3 NOT null
);
create table 테이블명(
칼럼명1 데이터타입1 NOT null,
칼럼명2 데이터타입2 NOT null,
칼럼명3 데이터타입3 NOT null REFERENCES 다른테이블명(칼럼명),
PRIMARY KEY(칼럼명1, 칼럼명3)
);
FOREIGN KEY (외래키)
다른 테이블에 의해 참조되는 키. A테이블의 A칼럼이 B테이블의 B칼럼에 의해 참조 되어지면 A칼럼은 FOREIGN KEY.
A테이블은 B테이블의 부모테이블이 되고, B테이블은 A테이블의 자식테이블이 된다.
이렇게 외래키 참조를 하게 되면 B테이블의 B칼럼의 값은 A테이블의 A칼럼의 값으로 제한된다.
외래키 참조는 다음과 같은 조건을 가진다.
1.부모 테이블은 자식테이블보다 먼저 생성
2.부모 테이블은 자식 테이블과 같은 데이터 타입
3.부모 테이블에서 참조 된 컬럼의 값만 자식 테이블에서 입력 가능
4.참조되는 칼럼은 모두 PRIMARY KEY or UNIQUE
마찬가지로 여러개의 FOREIGN KEY를 설정할 경우 묶어서 설정할 수 있다.
create table 테이블1(
칼럼명1 데이터타입1 NOT NULL PRIMARY KEY,
칼럼명2 데이터타입2 NOT NULL
);
create table 테이블2(
칼럼명1 데이터타입3 NOT NULL PRIMARY KEY,
칼럼명2 데이터타입4 REFERENCES 테이블1(칼럼명1)
);
create table 테이블3(
칼럼명1 데이터타입1 NOT NULL PRIMARY KEY,
칼럼명2 데이터타입2 NOT NULL,
칼럼명3 데이터타입3 NOT NULL,
UNIQUE(칼럼명1, 칼럼명2)
);
create table 테이블2(
칼럼명1 데이터타입1 NOT NULL PRIMARY KEY,
칼럼명2 데이터타입2 NOT NULL,
칼럼명3 데이터타입3 NOT NULL,
칼럼명4 데이터타입4 NOT NULL,
FOREGIN KEY (칼럼명3, 칼럼명4) REFERENCES 테이블3(칼럼명1, 칼럼명2)
);
기본적으로 참조된 컬럼은 삭제하거나 수정할 수 없다. 경우에 따라서는 가능하다. 이를 설정해주게 ON DELETE이다.
ON DELETE은 참조키 설정시 뒤에 추가로 작성하여 설정할 수 있고, 5가지 종류이다.
- ON DELETE NO ACTION : 트랜잭션 배운후 기재
- ON DELETE RESTRICT : 트랜잭션 배운후 기재
- ON DELETE SET NULL : 참조된 컬럼이 삭제된 경우 해당 칼럼을 참조한 칼럼에 NULL값 변경
- ON DELETE CASCADE : 참조된 컬럼이 삭제된 경우 해당 컬럼을 참조한 자식 테이블의 행도 삭제
- ON DELETE SET DEFAULT : 참조된 컬럼이 삭제된 경우 해당 칼럼을 참조한 칼럼에 DEFAULT값 변경(미리 지정)
테이블 생성 생략
칼럼명 테이터타입 REFERENCES 참조테이블명(참조칼럼명) ON DELETE NO ACTION
칼럼명 테이터타입 REFERENCES 참조테이블명(참조칼럼명) ON DELETE RESTRICT
칼럼명 테이터타입 REFERENCES 참조테이블명(참조칼럼명) ON DELETE SET NULL
칼럼명 테이터타입 REFERENCES 참조테이블명(참조칼럼명) ON DELETE CASCADE
칼럼명 테이터타입 DEFAULT 디폴트값 REFERENCES 참조테이블명(참조칼럼명) ON DELETE SET DEFAULT
ON DELETE NO ACTION이 기본값이라 따로 적지않아도 기본 외래키 참조는 항상 ON DELETE NO ACTION이 적용되어 있고 이에 따라 참조된 컬럼은 수정과 삭제가 불가능하다. 또한 SET DEFAULT 옵션에서 디폴트값은 참조 컬럼의 제약조건을 만족해야한다.
CHECK
가장 일반적인 제약조건으로 CHECK뒤에 나오는 식이 boolean 타입의 true를 만족해야한다. 도메인 데이터 타입을 생성할때도 쓴다.
테이블 생성 생략
칼럼명 데이터타입 CHECK (제약조건)
order_qty INTEGER CHECK (order_qty > 0)
'SQL' 카테고리의 다른 글
SQL 함수 (0) | 2025.01.17 |
---|---|
SQL 연산자 (0) | 2025.01.17 |
SQL CAST 연산자, CAST 형 연산자 (0) | 2025.01.17 |
SQL 데이터타입 (1) | 2025.01.17 |
SQL DELETE (0) | 2025.01.16 |