제약조건
제약 조건
CREATE TABLE 테이블명 (
컬럼명 자료형 [제약조건],
...
);
1) 제약 조건은 테이블의 특정 열에 지정
2) 제약 조건을 지정한 열에 제약 조건에 부합하지 않는 데이터를 저장할 수 없습니다.
3) 제약 조건 지정 방식에 따라 기존 데이터의 수정이나 삭제 가능 여부도 영향을 받습니다.
1) NOT NULL : NULL을 허용하지 않음, 반드시 값을 입력해야 할때(필수 항목)
2) UNIQUE : 중복 X, NULL은 중복 허용
3) PRIMARY KEY : 기본키, 중복 X, NULL 허용 X
4) FOREIGN KEY : 다른 테이블의 기본키를 참조하는 키, 참조 무결성 제약조건
,부모 레코드에 자식 레코드가 있는 경우 부모 레코드 삭제 불가
참고)
JOIN시 외래키가 꼭 될 필요는 X, 공통적인 테이블 간의 값을 통해서만 조인
5) CHECK : 조건(비교 조건 ..)에 따른 데이터 입력 통제
1) 데이터베이스에 저장되는 데이터의 정확성과 일관성을 보장한다는 의미
2) 종류
-도메인 무결성 제약조건 : 자료형 관련
-개체 무결성 제약조건 : 기본키와 관련 - 중복 X, NULL 허용 X
-참조 무결성 제약조건 : 외래키와 관련,
테이블을 생성하며 제약 조건 지정
EX)아이디, 비밀번호, 회원명
제약 조건 확인
1) USER_CONSTRAINTS 데이터 사전을 활용
CONSTRAINT_TYPE
C : 일반적인 제약조건, NOT NULL, CHECK
P : Primary Key, 기본키
R : Foreign Key, 외래키
U : Unique
USER_IND_COLUMNS: 인덱스포함, 제약조건 적용 컬럼 정보
컬럼명 자료형 CONSTRAINT 제약조건명 제약조건
테이블명_컬럼명_제약조건 종류
1) NOT NULL 제약 조건의 추가는 ALTER 명령어와 MODIFY 키워드를 사용
ALTER TABLE 테이블명 MODIFY 컬럼명 [자료형][제약조건]
-컬럼명(필수)
-자료형, 제약조건은 적어도 1개 이상
2) TEL 열에 NOT NULL 제약 조건 추가하기
3) TEL 열 데이터 수정하기
4) NOT NULL 제약조건 추가하기
ALTER TABLE 테이블명 DROP CONSTRAINTS 제약조건명;
요약
1) 열에 저장할 데이터의 중복을 허용하지 않고자 할 때 사용
2) NULL은 값이 존재하지 않음을 의미하기 때문에 중복 대상에서는 제외됩니다.
3) UNIQUE 지정 방법은 NOT NULL 제약 조건과 동일합니다.
테이블을 생성하여 제약 조건 지정
제약 조건 확인
중복을 허락하지 않는 UNIQUE
1) TABLE_UNIQUE 테이블에 데이터 중복하여 입력하기
UNIQUE 제약 조건과 NULL 값
테이블 생성하며 제약 조건 이름 직접 지정
이미 생성한 테이블에 제약 조건 지정
ALTER TABLE 테이블명 MODIFY 컬럼명 CONSTRAINT
제약 조건 삭제
유일하게 하나만 있는 값 PRIMARY KEY
1. 요약
1) UNIQUE와 NOT NULL 제약 조건의 특성을 모두 가지는 제약 조건(데이터 중복을 허용하지 않고 NULL도 허용하지 않습니다.)
2) NULL이 아닌 유일한 값을 가지므로 테이블의 각 행을 식별하는 데 활용
3) PRIMARY KEY 제약 조건은 테이블에 하나밖에 지정할 수 없습니다.
4) PRIMARY KEY로 지정하면 해당 열에는 자동으로 인덱스가 만들어집니다.
테이블을 생성하며 제약 조건 지정하기
1) 테이블을 생성할 때 특정 열에 PRIMARY KEY 설정하기
2) 생성한 PRIMARY KEY 확인하기
3) 생성한 PRIMARY KEY를 통해 자동 생성된 INDEX 확인하기
테이블을 생성하며 제약 조건 이름 직접 지정하기
PRIMARY KEY 제약 조건을 지정한 열 확인(중복 값을 입력했을 때)
PRIMARY KEY 제약 조건을 지정한 열 확인(NULL 값을 입력했을 때)
CREATE문에서 제약 조건을 지정하는 다른 방식
다른 테이블과 관계를 맺는 FOREIGN KEY
1. 요약
1) 서로 다른 테이블 간 관계를 정의하는 데 사용하는 제약 조건
2) 특정 테이블에서 PRIMARY KEY 제약 조건을 지정한 열을 다른 테이블의 특정 열에서 참조하겠다는 의미로 지정
CREATE TABLE 테이블명 {
...
컬럼명 자료형 CONSTRAINT 제약조건이름 REFERENCES 참조 테이블(참조할 컬럼)
}
CREATE TABLE 테이블명 {
...
컬럼명 자료형,
CONSTRAINT 제약조건이름 FOREIGN KEY(현재 테이블의 컬럼명) REFERENCES 참조 테이블(참조할 컬럼)
}
ALTER TABLE 테이블명 ADD CONSTRAINT FOREIGN KEY(현재 테이블의 컬럼명)
REFERENCES 참조 테이블(참조할 컬럼명)
참고)
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건이름 PRIMARY KEY(컬럼명, ...);
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
-NO ACTION : 기본값 -부모에 자식 레코드가 있으면 삭제 불가
-CASCADE : 부모를 삭제하면 자식도 함께 삭제
-SET NULL : 부모가 삭제되면 자식 레코드의 해당 항목을 NULL 교체
AGE NUMBER(3) CONSTRAINT MEM_AGE_CK CHECK(AGE >= 14),
컬럼명 자료형 DEFAULT 기본값 -> 값이 없다면 기본값으로 대체해서 처리
제약 조건 비활성화, 활성화