프로그래밍/DB

06 제약조건(constraint)

윤지(●'◡'●) 2021. 6. 18. 09:13
728x90
반응형


제약 조건(constraint)

 

제약 조건(constraint)이란 데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙이다.

이러한 제약 조건은 CREATE 문으로 테이블을 생성할 때나 ALTER 문으로 필드를 추가할 때도 설정할 수도 있다.

 

사용할 수 있는 제약조건은 아래와 같다.

 

1. NOT NULL
2. UNIQUE
3. PRIMARY KEY
4. FOREIGN KEY
5. DEFAULT

 

1. NOT NULL

NOT NULL은 단어의 뜻 그대로, 해당하는 필드에 NULL 값을 저장할 수 없다.

 

[문법]

- CREATE 문으로 설정

CREATE TABLE 테이블명(
    필드명 필드타입 NOT NULL,
    ...
);

 

- ALTER 문으로 설정

--새로운 필드를 추가할 때 NOT NULL 설정
ALTER TABLE 테이블명 ADD 필드명 필드타입 NOT NULL;
--기존 필드에 NOT NULL 설정
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입 NOT NULL

 

[예시]

CREATE TABLE JOIN
(
 USERID VARCHAR2(300) NOT NULL,
 USERPW VARCHAR2(300)
);
ALTER TABLE JOIN MODIFY COLUMN USERPW VARCHAR2(300) NOT NULL

 

 

2. UNIQUE

UNIQUE 제약조건이 걸린 필드는 서로 다른 값을 가져야 한다.

즉, 이 제약 조건이 설정된 필드는 중복된 값을 저장할 수 없다.

 

[문법]

- CREATE 문으로 설정

--1번
CREATE TABLE 테이블이름(
	필드명 필드타입 UNIQUE,
    ...
)

--2번 : 제약 조건에 이름을 설정할 수 있다.
CREATE TABLE 테이블이름(
	필드이름 필드타입,
    ...,
    CONSTRAINT 제약조건이름 UNIQUE (필드이름)
)

 

- ALTER 문으로 설정

-- 새로운 필드에 추가할 때
--1번
ALTER TABLE 테이블이름 ADD 필드이름 필드타입 UNIQUE;
--2번
ALTER TABLE 테이블이름 ADD CONSTRAINT 제약조건이름 UNIQUE (필드이름);

-- 기존 필드에 설정할 때
--1번
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입 UNIQUE
--2번
ALTER TABLE 테이블이름 MODIFY COLUMN CONSTRAINT 제약조건이름 UNIQUE (필드이름)

 

[예시]

CREATE TABLE JOIN
(
 USERID VARCHAR2(300) UNIQUE,
 USERPW VARCHAR2(300)
);
ALTER TABLE JOIN ADD CONSTRAINT Q_usernum UNIQUE(USERNUM);

 

 

3. PRIMARY KEY

 

PRIMARY KEY 제약 조건을 설정하면, 해당 필드는 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가진다.

따라서 이 제약 조건이 설정된 필드는 NULL 값을 가질 수 없으며, 또한 중복된 값을 가져서도 안 된다.

이러한 PRIMARY KEY 제약 조건을 기본 키라고 한다.

 

UNIQUE는 한 테이블의 여러 필드에 설정할 수 있지만

PRIMARY KEY는 테이블당 오직 하나의 필드에만 설정할 수 있다.

 

이러한 PRIMARY KEY 제약 조건은 테이블의 데이터를 쉽고 빠르게 찾도록 도와주는 역할을 한다.

 

[문법]

- CREATE 문으로 설정

--1번
CREATE TABLE 테이블이름(
	필드이름 필드타입 PRIMARY KEY,
    ...
)

--2번 : 제약 조건에 이름을 설정할 수 있다.
CREATE TABLE 테이블이름(
	필드이름 필드타입,
    ...,
    CONSTRAINT 제약조건이름 PRIMARY KEY (필드이름)
)

 

- ALTER 문으로 설정

-- 새로운 필드에 추가할 때
--1번
ALTER TABLE 테이블이름 ADD 필드이름 필드타입 PRIMARY KEY;
--2번
ALTER TABLE 테이블이름 ADD CONSTRAINT 제약조건이름 PRIMARY KEY (필드이름);

-- 기존 필드에 설정할 때
--1번
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입 PRIMARY KEY;
--2번
ALTER TABLE 테이블이름 MODIFY COLUMN CONSTRAINT 제약조건이름 PRIMARY KEY (필드이름);
PRIMARY KEY 제약 조건을 추가할 기존 필드는 NULL 값을 갖지 않도록 먼저 선언되어 있어야 한다.

 

[예시]

CREATE TABLE JOIN
(
 USERID VARCHAR2(300) PRIMARY KEY,
 USERPW VARCHAR2(300)
);
ALTER TABLE JOIN CONSTRAINT PK_USERID ADD PRIMARY KEY (USERID);

 

4. FOREIGN KEY

https://yoonhihi.tistory.com/147?category=973755 

 

04 외래키(Foreign Key)

외래키(Foreign Key) FOREIGN KEY 제약 조건을 설정한 필드는 외래 키라고 부르며, 한 테이블을 다른 테이블과 연결해주는 역할을 한다. 외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테

yoonhihi.tistory.com

 

 

5. DEFAULT

DEFAULT 제약 조건은 해당 필드의 기본값을 설정할 수 있게 해준다.

만약 레코드를 입력할 때 해당 필드 값을 전달하지 않으면, 자동으로 설정된 기본값을 저장한다.

 

- CREATE 문으로 설정

CREATE TABLE 테이블이름(
	필드이름 필드타입 DEFAULT 기본값,
    ...
)

 

- ALTER 문으로 설정

--새로운 필드를 추가할 때 
ALTER TABLE 테이블이름 ADD 필드이름 필드타입 DEFAULT 기본값;
--기존 필드에 설정
--1번
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입 DEFAULT 기본값;
--2번
ALTER TABLE 테이블이름 ALTER 필드이름 SET DEFAULT 기본값;

 

[예시]

CREATE TABLE JOIN(
 USERNAME VARCHAR2(300) DEFAULT 'Anonymous',
 USERID VARCHAR2(300) PRIMARY KEY,
 USERPW VARCHAR2(300)
);
ALTER TABLE JOIN ALTER USERNAME SET DEFAULT 'Anonymous';

열심히 공부하고 있지만, 오류 사항이 존재 할 수 있습니다.

수정 사항이 존재 할 경우 알려주시면 감사하겠습니다 <(__)>

728x90
반응형