DevOps:leehi9817
SQL 무결성 제약조건(NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK) 본문
백엔드 개발/SQL
SQL 무결성 제약조건(NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK)
leehi9817 2021. 12. 8. 21:41제약 조건
데이터 무결성
- NOT NULL: NULL값 허용하지 않음
- UNIQUE: 하나의 테이블에서 한번만 나옴 (주로 대체키 설정 시 사용됨)
- PRIMARY KEY: 기본키 (UNIQUE + NOT NULL)
- FOREIGN KEY: 외래키
- CHECK: 도메인 무결성
참조 무결성 제약조건 (FOREIGN KEY)
외래키 값은 다른 테이블의 기본키 값들 중 하나이어야 함
속성명 [CONSTRAINT 제약조건명] REFERENCES 참조테이블명(속성명)
예시)
#customer 테이블의 id를 참조하는 외래키인 id
id varchar(20) CONSTRAINT FK_id REFERENCES customer(id)
도메인 무결성 제약조건(CHECK 제약 조건)
입력 값을 제한하는 제약 조건임
예시)
#birthYear 값을 1900 이상으로 제한
birthYear int CHECK(birthYear >= 1900)
#Age 값을 1 이상 150 이하로 제한
Age int CHECK(Age between 1 and 150)
제약조건의 설정
1. 속성에 제약조건 지정하기
CREATE TABLE 테이블명(
속성명 속성타입 [CONSTRAINT [제약조건명] 제약조건],
속성명 속성타입,
...
)
예시)
#id를 기본키로 갖는 customer 테이블 작성
CREATE TABLE customer(
id VARCHAR(20) CONSTRAINT PK_id PRIMARY KEY,
pwd VARCHAR(20) CONSTRAINT NN_pwd NOT NULL,
name VARCHAR(20) CONSTRAINT NN_name NOT NULL,
phone VARCHAR(11) NULL,
birthYear int NULL,
address VARCHAR(100) NULL
)
2. 테이블 수준의 제약조건 지정하기
복합키의 경우 여러개의 속성이 합쳐져서 키가 되기 때문에 속성 단위의 제약조건 설정으로는 표현할 수 없음
이 경우 테이블 수준에서 제약 조건을 지정해야함
CREATE TABLE 테이블명(
속성명 속성타입,
...
[CONSTRAINT 제약조건명] 제약조건(속성명)
)
예시)
#customer 테이블에 name과 phone이 합쳐진 복합키를 기본키로 설정함
CREATE TABLE customer(
name VARCHAR(20),
phone VARCHAR(11),
birthday DATETIME,
address VARCHAR(100)
CONSTRAINT custom_COMBO_PK PRIMARY KEY(name, phone)
'백엔드 개발 > SQL' 카테고리의 다른 글
데이터 검색(BETWEEN, IN, IS NULL) (0) | 2021.12.08 |
---|---|
데이터 검색(AS, DISTINCT) (0) | 2021.12.08 |
데이터 검색(SELECT문) (0) | 2021.12.08 |
제약조건의 추가 및 제거(ADD CONSTRAINT, DROP CONSTRAINT) (0) | 2021.12.08 |
Comments