IT수업/데이터베이스

it 수업 6주차 (15) UNIQUE, CHECK, DEFAULT

워제하 2024. 1. 31. 13:22

 

< UNIQUE >

UNIQUE는 중복은 허용되지 않지만 NULL값은 허용이 된다. 예시로 e-mail 등록이 있다.

 

tbl_a테이블을 만드는데 email열에 unique조건을 줄 것이다.

 

이렇게 유니크가 설정된 테이블에 값을 넣어 볼 것이다. 

우선은 e-mail열에 다른 값을 주고 apply를 해보면 성공적으로 값이 들어가는 것을 볼 수 있다.

 

하지만 e-mail 값에 같은 값을 넣어주면 실패하게 되는 것을 볼 수 있다.

 

 

 

 

또 다른 방법으로 unique 조건을 줘볼 것이다.

 

 

 

다음은 테이블을 미리 만든후 나중에 유니크를 설정하는 것이다.

유니크 설정

alter table 테이블명 add constraint 유니크제약조건 unique(열명);

 

테이블만 만들었을 때는 이렇게 유니크 설정이 되어 있지 않다.

 

여기에 유니크 설정 명령어인 alter table tbl_c add constraint uk_tbl_c_email unique(email); 를 입력하면 이렇게 유니크 설정된 것을 볼 수 있다.

 

 

다음은 설정된 유니크 조건을 없애 볼 것이다.

유니크 조건을 삭제하기 위해서는 alter table 테이블명 drop constraint 유니크제약조건; 을 입력하면 된다.

 

alter table tbl_c drop constraint uk_tbl_c_email;

 

 

 

< CHECK >

CHECK 조건은 입력하는 값을 제한하기 위해 사용된다.

 

 

조건을 주는 방법은 여러가지이다.

첫번째는 age int check(age>=20 and age<=50) 로 열을 지정해주면서 바로 CHECK조건을 주는 것이고

두번째는 constraint CK_ADDR check (addr in('대구', '부산', '대전')) 로 먼저 열을 지정한 뒤 따로 CHECK조건을 주는 것이다.

 

 

체크 조건을 확인해보기 위해서는 select * from information_schema.check_constraints; 이 명령어를 사용하면 된다.

한글은 깨져 보이지않지만 들어가 있는 것을 볼 수 있다.

 

다음은 tbl_d 테이블에 값을 넣어 볼 것이다.

먼저 조건에 맞는 값을 넣어본다.

잘 들어가는 것을 볼 수 있다.

 

다음은 나이 값에 조건에 맞지않는 값을 넣어 볼 것이다.

이렇게 에러가 나는 것을 볼 수 있다.

 

다음은 주소 열에 조건에 맞지 않는 값을 넣어 볼 것이다.

역시 에러가 나는 것을 볼 수 있다.

 

 

 

다음은 check조건을 삭제해 볼 것이다.

check조건 삭제는 alter table 테이블명 drop check 삭제할 열명; 으로 하면 된다.

 

 

먼저 alter table tbl_d drop check CK_ADDR; 를 사용하면 주소 조건이 사라진 것을 볼 수 있다.

 

이어서 alter table tbl_d drop check tbl_d_chk_1; 를 하면 나이 조건이 사라진 것을 볼 수 있다.

 

 

< DEFAULT >

DEFAULT는 값을 넣지 않으면 미리 설정한 값이 들어가도록 하는 것이다.

 

이렇게 테이블을 만들고 구조를 살펴보면 이렇게 나온다.

 

이 테이블에 값을 넣어볼 것이다.

이렇게 이름 값이 들어 있지 않은 곳에 '이름없음' 이라고 들어간 것을 볼 수 있다.

 

 

 

다음은 조건을 추가해볼 것이다.

조건 추가는  alter table 테이블명 alter column 컬럼명 set default 조건; 으로 입력하면 된다.

이렇게 주소를 설정하지 않았는데 대구가 들어 간 것을 볼 수 있다.

 

 

 

다음은 조건 삭제이다.

조건 삭제는 alter table 테이블명 alter column 컬럼명 drop default; 하면 된다.