not null, default, check
[테이블 생성 후 not null 변경]
alter table test modify email varchar2(200) not null;
table test modify regist_date date default sysdate;
[테이블 생성 후 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('남성','여성')
[정규식을 이용한 체크 제약조건]
^ (시작) , $ (종료)가 포함되어야지 확인할 때 좋다
why ? ^ $을 넣지 않으면 010-\d{4}-\d{4}의 내용이 어디든 들어가 있으면 만족하기 때문에
010으로 시작하고 \d{4}로 끝나는 문장안에서 판별할 수 있도록 해야한다
다른 테이블의 기본키를 참조하는 컬럼의 집합이다.
※외래키 값은 참조하는 테이블의 기본키 또는 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);