제약조건

김재령·2022년 2월 25일
0

DB

목록 보기
7/15
post-thumbnail

도메인 제약조건

not null, default, check

[not null]

  • 컬럼에 저장된 데이터가 null일 수 없다
    ora-01400 : null을 삽입할 수 없습니다.
    ->도메인 제약조건이 not null일때 null입력시 발생

[테이블 생성 후 not null 변경]

alter table test modify email varchar2(200) not null;

[default]

  • 컬럼의 초기 설정 값으로 데이터를 따로 저장하지 않아도 저장되어 있는 값이다.
    [테이블 생성 후 default 변경]
table test modify regist_date date default sysdate;

[check]

  • 입력할수 있는 값의 범위를 설정해 주는것

[테이블 생성 후 check 변경]

alter table test add constranint ck_test_phone check(phone like '010-%-____');

//like로 제약조건을 걸수있다

CHECK( age >= 10 AND salary <= 40)
CHECK( age between 200 and 500)
CHECK gender IN('남성','여성')

[정규식을 이용한 체크 제약조건]

  • 휴대폰 번호 입력 받을 경우 010-__-__
    regexp_like(phone, '010-\d{4}-\d{4}')

    ^ (시작) , $ (종료)가 포함되어야지 확인할 때 좋다
    why ? ^ $을 넣지 않으면 010-\d{4}-\d{4}의 내용이 어디든 들어가 있으면 만족하기 때문에
    010으로 시작하고 \d{4}로 끝나는 문장안에서 판별할 수 있도록 해야한다



엔티디 제약조건

  • primary key(기본키) : unique + not null
  • unique : 고유키, null은 허용, 중복X

외래키

다른 테이블의 기본키를 참조하는 컬럼의 집합이다.
※외래키 값은 참조하는 테이블의 기본키 또는 unique 키에 없는 내용을 참조할 수 없다
※null값을 가질 수 있다 - 참조무결성

member_info Table

CREATE TABLE member_info ( 
	NAME VARCHAR2(20), 
    AGE NUMBER    CONSTRAIN   CHECK_AGE CHECK(AGE > 0 AND AGE < 20), 
    GENDER VARCHAR2(3) CONSTRAINT CHECK_GENDER CHECK(GENDER IN('M', 'W')), 
    INFONO NUMBER  CONSTRAINT PK_INFONO PRIMARY KEY );

외래키 설정 방법1

CREATE TABLE CLIENTJOIN( 
ID VARCHAR2(40) CONSTRAINT PK PRIMARY KEY, 
PW VARCHAR2(40), 
INFONO NUMBER UNIQUE,

CONSTRAINT FK_INFONO 
FOREIGN KEY(INFONO) 
REFERENCES CLIENTINFO(INFONO) );
-- 외래키는 이름을 같게 해주는게 일반적이다.

외래키 설정 방법2

ALTER TABLE CLIENTJOIN ADD CONSTRAINT FK_INFONO FOREIGN KEY(INFONO) REFERENCES CLIENTINFO(INFONO);
profile
with me

0개의 댓글