1. 데이터 정의(DDL)
데이터 무결성 제약 조건(Data Integrity Constraint Rule)
ㆍ테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 테이블을 생성할 때 각 칼럼에 대해서 형식 하는 여러 가지 규칙
정확성을 유지
무결점
ㆍ데이터베이스 내에 데이터의 정확성을 유지하는 것을 의미한다.
기본키 제약 조건
- 과정 번호 칼럼이 반드시 입력되고 유일한 값만을 가질 수 있도록 하는 다양한 무결성 제약 조건들 중의 한 가지
NOT NULL을 명시
- QL 칼럼 값으로 널 값을 허용하기 때문에 만일 특정 칼럼에 널 값을 허용하지 않도록 하려면 제약조건
기본키
-과정(COURSE) 테이블에서 과정들을 구분하기 위해서 과정 번호는 널 값을 저장할 수 없음
-중복된 값을 저장할 수 없도록 하는 개체 무결성을 유지하기 위해서 과정 번호(COU_ID)
과정 테이블의 기본키 제약조건-1

과정 테이블의 기본키 제약조건-2

기본키
ㆍ과정 번호 칼럼이 반드시 입력되고 유일한 값만을 가질 수 있도록 하는 것
ㆍ데이터베이스에서 제공하는 다양한 무결성 제약 조건들 중의 한 가지
제약조건을 5가지

필수 입력을 위한 NOT NULL 제약 조건
- 널 값 허용

- 부정확한 회원 정보

- 해당 칼럼에 데이터를 추가하거나 수정할 때 NULL 값이 저장되지 않게 제약을 걸어주는 것
- 주민번호와 이름과 같이 자료가 꼭 입력되게 하고 싶을 때 사용
NOT NULL 제약조건을 설정하지 않고 테이블 생성하기
- 회원 테이블을 생성
CREATE TABLE member(
id varchar(20),
pwd varchar(20),
name varchar(20),
email varchar(20),
hp varchar(20)
)
- 널 허용한 테이블 생성

- 테이블 생성 확인
SELECT * FROM member

- 제약조건이 불충분한 테이블로 의미 없는 정보 입력


제약조건 지정형식
column_name data_type constraint_type
NOT NULL 제약조건을 설정하여 테이블 생성하기
- NOT NULL 제약 조건을 설정

- 필수 입력을 위한 NOT NULL 조건 지정

- 성한 member 테이블에 데이터를 추가

- 필수 입력 요구

- member 테이블에 아이디와 패스워드, 이름에 NULL 값이 아닌 값을 지정
INSERT INTO member
VALUES(‘moon’, ‘Y’, ’문종헌’, ’moon@nate.com’, ’01063385361’)
SELECT * FROM member
- 정확한 정보 입력

유일한 값만을 저장하기 위한 UNIQUE 제약 조건
- UNIQUE 제약 조건이란 특정 칼럼에 대해 자료가 중복되지 않게 하는 것
ㆍ 특정 칼럼에 대해 자료가 중복되지 않게 하는 것
ㆍ 지정된 칼럼에는 유일한 값이 수록되게 하는 것
동일한 아이디로 구분 불가능

ㆍ 아이디 칼럼에 UNIQUE KEY 제약 조건을 지정하면 중복된 값을 저장할 수 없음
UNIQUE 제약조건을 설정하여 테이블 생성하기
-member 테이블을 생성하되 아이디를 유일키로 지정
-제약 조건은 칼럼 명과 자료형을 기술한 후에 연이어서 UNIQUE를 기술

- UNIQUE 제약조건 설정

- 생성한 member 테이블에 데이터를 추가
INSERT INTO member
VALUES(‘moon’, ‘Y’, ’문종헌’, ’moon@nate.com’, ’01063385361’)
SELECT * FROM member
- 데이터 삽입

- ‘moon’이란 자료를 입력하였는데 다시 동일한 아이디를 입력
INSERT INTO member
VALUES(‘moon’, ‘SOL’, ’ 오한솔’, ’five@nate.com’, ’01011113121’)
- 아이디 중복 허용 안 함

- 유일키 제약 조건의 널 값 허용

개체의 무결성을 위한 PRIMARY KEY 제약 조건
ㆍ UNIQUE 제약 조건과 NOT NULL 제약 조건을 모두 갖는 것
PRIMARY KEY는 NOT NULL 조건과 UNIQUE 조건을 결합한 형태로서 NULL을 허용하지 않고 중복된 값을 허용하지 않는다. 테이블에
하나만 선언할 수 있다.
PRIMARY KEY 제약조건 설정하기
- 칼럼 명과 자료형을 기술한 후에 연이어서 PRIMARY KEY를 기술
CREATE TABLE member(
id varchar(20) CONSTRAINT PK_id PRIMARY KEY,
pwd varchar(20) CONSTRAINT NN_pwd NOT NULL,
name varchar(20) CONSTRAINT NN_name NOT NULL,
email varchar(20) NULL,
hp varchar(20) NULL
)
GO

- 기본키로 지정된 아이디에 동일한 값을 저장
INSERT INTO member
VALUES(‘moon’, ‘Y’,’문종헌’,’moon@nate.com’,’01063385361’)
INSERT INTO member
VALUES(‘moon’, ‘SOL’,’ 오한솔’,’five@nate.com’,’01011113121’)
- 중복 허용하지 않는 기본키 제약 조건

- 본키로 지정된 아이디에 NULL 값을 저장
INSERT INTO member
VALUES(NULL, ‘Y’,’문종헌’,’moon@nate.com’,’01063385361’)
- 널 값 허용하지 않는 기본키 제약 조건

참조의 무결성을 위한 FOREIGN KEY 제약 조건
참조의 무결성 ㆍ테이블 사이의 관계에서 발생하는 개념
FOREIGN KEY ㆍ일반적으로 업무 규칙에서 주종 관계가 있는 두 테이블 간에 사용되며 종속되는 테이블의
키 칼럼이 주가 되는 테이블의 PRIMARY KEY 또는 UNIQUE 칼럼을 참조함
- 과정 테이블



- 참조의 무결성을 위한 외래키 제약 조건을 설정할 때 중요한 개념

ERD를 보고 데이터베이스를 구현할 때
-과정이나 학생과 같은 개체는 테이블로, 형식하고 소속이란 관계
-조의 무결성을 위한 특정 칼럼에 외래키 제약 조건으로 정의
-“학생은 교육센터 내에 존재하는 과정에 수강해야 한다.”
참조의 무결성을 위한 부모, 자식 테이블 관계



참조 무결성을 유지하기 위해서 학생(STUDENT) 테이블의 과정 번호(COU_ID)를 외래키로 지정
CREATE TABLE STUDENT (
STU_ID INTEGER NOT NULL, -- 학생번호, 널 값 허용 안 함
STU_NAME VARCHAR(20) NULL, -- 학생명
AGE INTEGER NULL, -- 나이
STU_EMAIL VARCHAR(20) NULL, -- 이메일
COU_ID INTEGER NULL, -- 소속된 과정의 과정 번호
PRIMARY KEY(STU_ID), -- 학생번호를 기본키로 지정
-- -- 과정 번호를 외래키로 지정
FOREIGN KEY(COU_ID) REFERENCES COURSE(COU_ID)
)
GO
칼럼 값의 조건 지정을 위한 CHECK 제약 조건
ㆍ 입력되는 값을 체크하여 설정된 값 이외의 값이 들어오면 오류 메시지와함께 명령이 수행되지 못하게 하는 것
ㆍ 조건: 데이터의 값의 범위나 특정 패턴의 숫자나 문자값을 설정
CREATE TABLE STUDENT (
STU_ID INTEGER NOT NULL, -- 학생번호, 널 값 허용 안 함
STU_NAME VARCHAR(20) NULL, -- 학생명
AGE INTEGER NULL CHECK(AGE < 30), -- 나이
STU_EMAIL VARCHAR(20) NULL, -- 이메일
COU_ID INTEGER NULL, -- 소속된 과정의 과정 번호
SEX VARCHAR NULL DEFAULT ‘M’, -- 성별
PRIMARY KEY(STU_ID), -- 학생번호를 기본키로 지정
-- -- 과정 번호를 외래키로 지정
FOREIGN KEY(COU_ID) REFERENCES COURSE(COU_ID)
)
GO

- 생성한 테이블에 데이터를 추가
INSERT INTO STUDENT VALUES(116,’장희성’, 34,’shine@nate.com’,10,’M’)
