- 오라클에서 사용하는 제약조건은 테이블의 특정 컬럼에 지정한다.
- 제약 조건을 지정한 컬럼에 조건에 부합하지 않는 데이터를
저장할 수 없다.- 제약 조건 지정 방식에 따라 기존 데이터의 수정이나 삭제 가능 여부도
영향을 받는다.
👍 NOT NULL
- 지정한 컬럼에 NULL을 허용하지 않는다.
-- CONSTRAINT 미사용시 이름 지정 불가 CREATE TABLE NULL_test( col1 varchar2(20) NOT NULL , col2 varchar2(20) null , col3 varchar2(20) , );
-- CONSTRAINT 사용시 이름 지정 가능 CREATE TABLE TABLE_NOUNULL2( LOGIN_ID VARCHAR2(20) CONSTRAINT TBLNN2_LOGIN_ID NOT NULL, LOGIN_PWD VARCHAR2(20) CONSTRAINT TBLNN2_LOGIN_PWD NOT NULL );
-- 테이블 생성 후 NOT NULL 제약조건 추가 -- 데이터에 NULL값이 없어야 성공 ALTER TABLE TABLE_NOTNULL MODIFY(TEL TBLNN_TEL_NN NOT NULL);
👍 UNIQUE
- 지정한 컬럼이 유일한 값을 가져야 한다. 중복이 불가하다.
단, NULL은 값의 중복에서 제외CREATE TABLE unique_test( col1 varchar2(20) UNIQUE NOT NULL , col2 varchar2(20) UNIQUE , col3 varchar2(20) NOT NULL , col4 varchar2(20) NOT NULL , CONSTRAINT temp_unique UNIQUE (col3, col4) );
CREATE TABLE UNIQUE_TEST2( col1 varchar2(20) , col2 varchar2(20) , CONSTRAINT temp_unique2 unique(col1, col2) --두개를 묶어서 제약조건을 주면 두 개 조합이 모두 총죽해야한다. );
👍 PRIMARY KEY
- 지정한 컬럼이 유일한 값이면서 NULL을 허용하지 않는다.
- 중복이 불가하고 테이블에 하나만 지정 가능하다.
--인라인 CREATE TABLE primary_test( sstudent_id number(10) PRIMARY KEY, name varchar2(20) );
CREATE TABLE TABLE_NAME( COL1 VARCHAR2(20) CONSTRAINT CONSTRAINT_NAME PRIMARY KEY , COL2 VARCHAR2(20) NOT NULL );
--아웃라인 CREATE TABLE PRIMARY_TEST2( student_id number(10), name varchar2(20), CONSTRAINT student_pk PRIMARY KEY (student_id) );
CREATE TABLE ACCOUNT( ACCOUNT_NUM NUMBER, ACCOUNT_BANK VARCHAR2(200), ACCOUNT_NAME VARCHAR2(100), ACCOUNT_CVC NUMBER, CONSTRAINT ACCOUNT_PK PRIMARY KEY(ACCOUNT_NUM, ACCOUNT_BANK) );
-- 테이블 생성 후 PK 생성 ALTER TABLE PRIMARY_TEST3 ADD CONSTRAINT student_pk2 PRIMARY KEY (student_id);
👍 FOREIGN KEY
- 다른 테이블의 컬럼을 참조하여 PK에 존재하는 값만 입력 가능하다.
CREATE TABLE FOREIGN_KEY( department_id constraint dept_fk REFERENCES departments(department_id) );
CREATE TABLE DOUGHTER( IDX NUMBER(10) PRIMARY KEY, MID NUMBER(10), CONSTRAINT FK_DA FOREIGN KEY(MID) REFERENCES DADDY(MID) ON DELETE CASCADE );
-- 테이블을 생성 한 후 FK 생성 ALTER TABLE ORDER_INFO ADD CONSTRAINT ODER_FK FOREIGN KEY (PRODUCT_NUM) REFERENCES PRODUCT(PRODUCT_NUM);
-- 테이블을 생성 한 후 FK 삭제 ALTER TABLE ORDER_INFO DROP CONSTRAINT ODER_FK;
👍 CHECK
- 설정한 조건식을 만족하는 데이터만 입력 가능하다.
CREATE TABLE check_test( gender varchar2(10) NOT NULL , CONSTRAINT check_gender check(gender IN('M', 'F')) );
CREATE TABLE TBL_STUDENT( ID NUMBER , NAME VARCHAR2(100) , MAJOR VARCHAR2(100) , GENDER CHAR(1) DEFAULT 'W' NOT NULL CONSTRAINT BAN_CHAR CHECK (GENDER IN ('M', 'W')) -- DEFAULT 는 아무값도 넣지않을경우 기본값으로 넣어라 / CHECK는 'M'과 'W' 값이 아니라면 오류발생 시킨다. , BIRTH DATE CONSTRAINT BAN_DATE CHECK (BIRTH >= TO_DATE ('1980-01-01', 'YYYY-MM-DD')) , CONSTRAINT STD_PK PRIMARY KEY (ID) );