* Column에 제약조건(Constraint)를 거는 이유
제약조건을 거는 이유는, 테이블에 부적절한 자료가 입력되거나 부적절하게 변경되는 것을 막아 자료의 신뢰성과 정확성을 확보하는 데 있다.
제약조건은 테이블을 생성할 때 지정할 수도 있고,
테이블 생성 후에 Alter를 이용하여 따로 추가하거나 수정이 가능하다.
* Constraint의 종류
* Not null
CREATE TABLE 테이블이름 (
컬럼이름 데이타타입 CONSTRAINT 제약조건이름 NOT NULL
);
Not null 제약조건을 설정하면 해당 컬럼에는 반드시 데이터를 입력해야 한다.
Not null 제약조건이 걸린 컬럼을 빈칸으로 두고 Recode를 입력하려 하면 다음과 같은 에러 메시지가 뜬다.
* Unique
CREATE TABLE 테이블이름 (
컬럼이름 데이타타입 CONSTRAINT 제약조건이름 UNIQUE
);
테이블을 만들때 e_id 컬럼에 Unique제약을 걸었다.
Unique 조건을 걸면 데이터의 유일성이 보장되며, 자동 인덱스가 생성된다.
같은 데이터를 두번 입력하려 할 때 오류가 뜨는 것을 확인할 수 있다.
* Check
CREATE TABLE 테이블이름 (
컬럼이름 데이타타입 CONSTRAINT 제약조건이름 CHECK (특정범위 혹은 조건)
);
Emp3 테이블을 만들 때 empsex에 '남자', '여자'라는 단어만 들어갈 수 있도록 check제약을 걸었다.
'남성'이라는 단어를 넣을려 하면 에러가 뜨는 것을 확인할 수 있다.
* Default
CREATE TABLE 테이블이름 (
컬럼이름 데이타타입 DEFAULT 자동으로넣어줄값
);
Emp3 테이블에 edate 컬럼에 default sysdate 조건을 걸어서 value를 입력하지 않을 시 현재 시스템 날짜를 넣도록 했다.
sysdate외에도 date타입의 컬럼이므로 날짜 형식의 데이터도 Default값으로 넣을 수 있다.
* Constraint 확인하기
SELECT table_name, constraint_name FROM user_constraints;
user_contraints 테이블은 시스템 관리를 위한 '딕셔너리 테이블'이다.
그 중에서도 user_constraints 테이블은 constraint가 걸려있는 테이블의 이름과 조건이름, 조건 종류 등을 저장한다.
더 자세한 것은 다른 포스트에서 다루도록 한다.
위의 명령어를 입력하면 현재 조건이 걸려있는 테이블들과 Constraint를 걸 때 명명한 제약조건의 이름을 알 수 있다.
위에서 EMP3에 걸어둔 조건들을 위와 같이 확인할 수 있다.
'Database > Oracle' 카테고리의 다른 글
SQL-Oracle_제약조건03] Column에 제약조건(Constraint) 이름 설정규칙 (0) | 2021.06.11 |
---|---|
SQL-Oracle_제약조건02] Column에 제약조건(Constraint)걸기/확인하기 (0) | 2021.06.11 |
SQL-Oracle] Recode 중복 제거하고 가져오기(Distinct) (0) | 2021.06.08 |
SQL-Oracle] Alter를 이용하여 Table의 컬럼 추가/수정/이름재설정/삭제 (0) | 2021.06.08 |
SQL-Oracle] 현재 시스템의 날짜를 가져오는 명령어 (0) | 2021.06.07 |