not null
unique
아래 두 가지 형식으로 primary key를 지정할 수 있다.
CREATE TABLE 테이블명(
컬럼명 데이터형식 PRIMARY KEY
);
CREATE TABLE 테이블명(
컬럼명 데이터형식,
CONSTRAINT 프라이머리키 이름 PRIMARY KEY(컬럼명)
);
check
default
CREATE TABLE 테이블명(
컬럼명 데이터형식,
CONSTRAINT 외래키명 FOREIGN KEY (적용 컬럼명)
REFERENCES 참조테이블명 (참조테이블 내 참조할 컬럼명)
ON DELETE CASCADE(선택 사항)
);
ON DELETE CASCADE
: 부모테이블의 값을 삭제하면 자식 테이블의 값도 연동하여 삭제된다.ON DELETE SET NULL
: 부모테이블의 값을 삭제하면 자식 테이블의 값이 NULL로 바뀐다.모든 제약조건이 이 레벨에서 부여 가능하다.
컬럼 레벨 제약조건 부여
create table emp(
eno number(6) constraint emp_eno_pk primary key, #프라이머리 키를 여기서 주고있다.
first_name varchar2(20),
gender varchar2(2) constraint emp_gender_nn not null
);
두개 이상의 컬럼에 하나의 제약을 주는 경우 사용한다.
테이블 레발 제약조건 부여
create table emp(
eno number(6),
first_name varchar2(20),
gender varchar2(2) constraint emp_gender_nn[제약조건명] not null,
constraint emp_eno_pk[제약조건명] primary key (eno) #마지막에 pk값을 주고 있다.
);
modify
를 사용하여 수정한다.alter table emp
modify ename_no[제약조건 명] not null; #emp 테이블의 ename 컬럼에 not null 제약조건을 추가한다.
alter table emp
--drop constraint mgr_no_unq[제약조건 명];
--add constraint mgr_no_unq[제약조건 명] unique(mgr_no);
아래 사진에 따라 테이블을 생성해 보고자 한다.
실습의 제약조건 부여 기준은 테이블 단위이다(이유 : 이렇게 많이 만들었어서)
create table dept{
deptno number(3),
dname varchar2(10),
loc varchar2(10),
constraint deptno_pk primary key(deptno),
constraint dname_unq unique(dname)
}
create table sawon{
sabun number(3),
saname varchar2(10) not null,
deptno number(3),
sajob varchar2(10),
sapay number(10),
sahire date default sysdate,
sasex varchar2(4),
samgr number(3),
constraint sabun_pk priamry key(sabun),
constraint deptno_fk foreign key(deptno) references dept(deptno),
constraint sasec_ck check(sasex = '남자' or sasex = '여자'),
constraint samgr_fk foreign key(samgr) references sawon(sabun)
}
create table gogek{
gobun number(3),
goname varchar2(10),
gotel varchar2(14),
gojumin varchar2(14),
godam number(3),
constraint gobun_pk primary key(gobun),
constraint gojumin_uq unique(gojumin),
constraint godam_fk foreign key(godam) references sawon(sabun)
}
🌼