테이블 입력 가능한 데이터를 조건으로 제약하는 것
NOT NULL
UNIQUE KEY (UK)
CHECK
★ PRIMARY KEY (PK) ★
★ FOREIGN KEY (FK) ★
그외. 슈퍼키, 대체키
1.1.1. NOT NULL
- 컬럼이 비어 있거나 NULL 값이 들어오지 않도록 하는 조건
1.1.2. UNIQUE KEY (UK)
- 하나의 컬럼에 중복되는 튜플이 존재할 수 없도록 하는 조건
1.1.3. CHECK
특정 컬럼에 데이터를 입력할 때 조건에 해당하는 데이터만 입력할 수 있도록 제약
1.1.4. ★ PRIMARY KEY (PK) ★ : NOT NULL + UNIQUE
- 식별자 규칙을 물리적 모델링 한 것. 기본 키, 주 키, 프라이머리 키라고도 부름. (시험예상)
- 보통 튜플(행)이 지닌 유일하고 고유한 특징인 컬럼을 PK로 지정 NULL값 입력 불가, 중복 불가의 특징.
1.1.5. ★ FOREIGN KEY (FK) ★
- 다른 테이블에 있는 기본 키(PRIMARY KEY)를 참조하는 컬럼을 FK로 지정.
- FOREIGN KEY는 외래 키라고 부르고 데이터 무결성을 지원
참조하는 테이블의 기본 키 값과 반드시 동일한 값으로 구성되어야 함
이전 수업내용 참조하기! (아래 링크 클릭)
SQL - DDL의 테이블의 자료형과 CREATE, ALTER
/*
1. 다음조건에 맞춰 3개의 테이블을 생성(CREATE) 하세요.
DEFAULT 나 NOT NULL 이 따로 없는 경우는 별도로 설정하지 않음을 의미합니다.
1.1 테이블명 : 회원정보
컬럼/자료형 : 회원ID - 가변형문자형 10BYTE , NOT NULL
이름 - 가변형문자형 20BYTE , NOT NULL
가입일자 - 날짜형
나이 - 숫자형 DEFAULT 0
1.2 테이블명 : 회원연락처
컬럼/자료형 : 회원ID - 가변형문자형 10BYTE , NOT NULL
구분코드 - 가변형문자형 20BYTE , NOT NULL
연락처 - 가변형문자형 15BYTE , NOT NULL
1.3 테이블명 : 회원주소
컬럼/자료형 : 회원ID - 가변형문자형 10BYTE , NOT NULL
도로명주소 - 가변형문자형 20BYTE , NOT NULL
*/
--1.1
CREATE TABLE 회원정보(
회원ID VARCHAR2(10) NOT NULL ,
이름 VARCHAR2(20) NOT NULL ,
가입일자 DATE ,
나이 NUMBER DEFAULT 0
);
--1.2
CREATE TABLE 회원연락처(
회원ID VARCHAR2(10) NOT NULL ,
구분코드 VARCHAR2(10) NOT NULL ,
연락처 VARCHAR2(15) NOT NULL
);
--1.3
CREATE TABLE 회원주소(
회원ID VARCHAR2(10) NOT NULL ,
도로명주소 VARCHAR2(20) NOT NULL
);
/*
2. 1번에서 만든 3개의 테이블에 각각 주어진 조건에 맞춰 PK 제약조건을 추가해주세요.
힌트 : 두 개 이상의 컬럼을 PK로 설정하려면 다음과 같은 형식으로 작성해주세요
=> PRIMARY KEY(컬럼1, 컬럼2)
각 테이블 별로 사용할 PK 컬럼과 제약조건 이름은 같습니다.
2.1 회원정보 테이블의 PK : 회원ID --제약조건명 : PK_회원정보
2.2 회원연락처 테이블의 PK : 회원ID + 구분코드 --제약조건--명 : PK_회원연락처
2.3 회원주소 테이블의 PK : 회원ID --제약조건명 : PK_회원주소
*/
--2.1
ALTER TABLE 회원정보 ADD CONSTRAINT PK_회원정보 PRIMARY KEY(회원ID);
--2.2
ALTER TABLE 회원연락처 ADD CONSTRAINT PK_회원연락처 PRIMARY KEY(회원ID, 구분코드);
--2.2는 (회원ID 와 구분코드)를 한 세트로 PRIMARY KEY키를 줌. 이를 슈퍼키라고 함!
--2.3
ALTER TABLE 회원주소 ADD CONSTRAINT PK_회원주소 PRIMARY KEY(회원ID);
/*
3. 1번에서 만든 3개의 테이블에 대해 테이블 간의 관계 연결을 위해 FK 제약조건을 설정하세요.
3.1
회원연락처 테이블의[회원ID] 컬럼은 회원정보 테이블의 [회원ID]를 참조하고자 합니다.
제약조건명 : FK_회원연락처
힌트 : ALTER TABLE 회원연락처...
3.2
회원주소 테이블의[회원ID] 컬럼은 회원정보 테이블의 [회원ID]를 참조하고자 합니다.
제약조건명 : FK_회원주소
힌트 : ALTER TABLE 회원주소...
*/
--3.1
ALTER TABLE 회원연락처 ADD CONSTRAINT FK_회원연락처
FOREIGN KEY (회원ID) REFERENCES 회원정보(회원ID);
--3.2
ALTER TABLE 회원주소 ADD CONSTRAINT FK_회원주소
FOREIGN KEY (회원ID) REFERENCES 회원정보(회원ID);
테이블 및 제약조건을 삭제할 때 사용하는 명령어