본문 바로가기

SQL

[SQL] 4장. 기본키, 외래키, 제약 조건 (MSSQL)

반응형

1. NOT NULL

컬럼에 NULL 금지

CREATE TABLE ACCOUNT_TABL (
  ID varchar(10) NOT NULL
)

CREATE TABLE ACCOUNT_TABL (
  ID varchar(10) PRIMARY KEY -- NOT NULL 안 써줘도 자동으로 NOT NULL
)

2. CHECK 제약 조건

지정 값 외에 다른 값 들어오지 못하도록 제약

CREATE TABLE ACCOUNT_TBL (
  ID varchar(10) NOTNULL,
  Age int NOT NULL CHECK (Age >= 20 AND Age < 60) -- 판단할 수 있는 조건
)

CREATE TABLE ACCOUNT_TBL (
  ID varchar(10) NOTNULL,
  Sex string NOT NULL CHECK (Sex IN ('여', '남') -- 판단할 수 있는 조건
)

3. UNIQUE 제약 조건

한 테이블에 PK가 아닌 컬럼에 유일한 값을 주고 싶은 경우 사용

PK와의 차이는 뭔가요?
UNIQUE 제약 조건은 2개 이상 설정 가능, NULL이 허용되나 이도 컬럼 당 하나만 가능

4. PRIMARY KEY(PK) 제약 조건

한 테이블에 고유하게 식별할 수 있는 값. 한 테이블에 오직 1개만 설정. 컬럼 묶어서 설정 가능. NULL값은 허용 X.

ex) 사원명, 사원번호, 주민번호, 이메일, 휴대폰번호, 나이
ex) 회사코드(PK), 사원명, 사원번호(PK), 주민번호, 이메일, 휴대폰번호, 나이
CREATE TABLE account_tbl (
  -- ID varchar(10) NOT NULL PRIMARY KEY, -- 이렇게 쓰지 않아도 자동으로 NOT NULL
  ID varchar(10) PRIMARY KEY,
  Age int NOT NULLL CHECK (Age >= 20 and Age < 60),
)

5. FOREIGN KEY(FK) 제약 조건

설정 컬럼에 데이터의 무결성 보장. 참조할 테이블의 PK 또는 UNIQUE 컬럼의 도메인.

PRIMARY KEY: NULL 허용 X (NOT NULL은 붙이나 안붙이나 같음. 어차피 NOT NULL)
FOREIGN KEY: NULL도 허용 (NOT NULL은 선택)
CREATE TABLE account_tbl (
  -- ID varchar(10) NOT NULL PRIMARY KEY, -- 이렇게 쓰지 않아도 자동으로 NOT NULL
  ID varchar(10) PRIMARY KEY,
  Age int NOT NULLL CHECK (Age >= 20 and Age < 60),
)

CREATE TABLE detail_tbl (
  ID varchar(10) NOT NULL FOREIGN KEY REFERENCES account_tbl(ID)
-- , FOREIGN KEY (ID) REFERENCES account_tbl(ID)
-- , CONSTRAINT FK_account_tbl FOREIGN KEY (ID) REFERENCES account_tbl(ID)
--   바로 위는 제약 명칭을 지정한 것.
--   제약 명칭은 생략 가능하지만 실무에서는 컬럼에 대해 제약사항을 줄 때 이름을 줘야 함
)

6. DEFAULT

해당 컬럼 값을 넣지 않았을 겨웅, 자동으로 설정해 준 기본 값

CREATE TABLE account_tbl (
  ID varchar(10) PRIMARY KEY,
  Age int NOT NULLL CHECK (Age >= 20 and Age < 60),
  RegDate datetime DEFAULT(getdate()), -- MS
)
반응형

'SQL' 카테고리의 다른 글

[SQL] 6장. DDL(DROP, ALTER)  (0) 2023.04.27
[SQL] 5장. 단축키  (0) 2023.04.27
[SQL] 3장. 자료형  (0) 2023.04.27
[SQL] 2장. 주요 키워드  (0) 2023.04.26
[SQL] 1장. DB 기본  (0) 2023.04.26