2008년 09월 25일
테이블의 제약조건
SQL> CREATE TABLE emp(
ename VARCHAR2(20) CONSTRAINT emp_nn_ename NOT NULL );
이런식으로 하면 ename 컬럼에는 꼭 데이터를 입력해야만 합니다.
여기서 emp_nn_ename은 (테이블이름_제약조건이름_컬럼이름)형식으로
CONSTRAINT NAME을 정의 합니다.
CONSTRAINT NAME은 USER_CONSTRAINTS 뷰(VIEW)를 통해서 확인할수 있습니다.
SQL> SELECT CONSTRAINT_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME =’EMP’ ;
CONSTRAINT_NAME
-----------------------
emp_nn_ename 이런 식으로 제약사항의 이름을 확인할수 있습니다.
SQL> ALTER TABLE emp
ADD CONSTRAINT emp_uk_deptno UNIQUE (deptno)
테이블이 변경되었습니다.
이런식으로 하면 deptno 컬럼에 중복된 데이터가 들어갈 수 없습니다.
-- 제약 조건의 삭제
SQL>ALTER TABLE emp
DROP CONSTRAINT emp_uk_deptno ;
테이블이 변경되었습니다.
SQL>ALTER TABLE emp
ADD CONSTRAINT emp_ck_comm
CHECK (comm >= 10 AND comm <= 100000) ;
테이블이 변경되었습니다.
comm컬럼은 체크조건에서 제한을 하고 있으므로 1에서 100까지의 값만을 가질수 있습니다.
또체크 조건에서는 IN 연산자를 사용할수 있습니다.
-- 제약 조건의 삭제
SQL>ALTER TABLE emp
DROP CONSTRAINTemp_ck_comm ;
테이블이 변경되었습니다.
SQL> ALTER TABLEemp
ADD CONSTRAINT emp_ck_comm
CHECK (comm IN (10000,20000,30000,40000,50000)) ;
테이블이 변경되었습니다.
comm 컬럼은 10000,20000,30000,40000,50000의 값만을 가질수 있습니다.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- [SQL] CREATE TABLE by JiunSuk
- 제약 - CONSTRAINTS by overdose
- mysql 자주 쓰는 명령어 by 유령
# by | 2008/09/25 14:32 | DB[ORACLE/MS-SQL] | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]