justgo_developer

무결성 제약조건 본문

IT/Oracle

무결성 제약조건

다날92 2018. 10. 27. 20:53
728x90
반응형

무결성 제약조건


* 컬럼속성(무결성 제약조건)

not null : 널값이 입력되지 못하게하는 조건

unique : 중복된 값이 입력되지 못하게 하는 조건

primary key : not unll + unique의 의미

foreign key(외래키) : 다른 테이블의 필드(컬럼)를 참조해서 무결성을 검사하는 조건

check : 주어진값만 허용하는 조건



create table null_test(

    col1 varchar2(20) not null,

    col2 varchar2(20) null,

    col3 varchar2(20)

);


insert into null_test(col1, col2)

values ('aa', 'bb');


select * from null_test;


insert into null_test(col2, col3)

values ( 'cc', 'dd' );


create table unique_test(

    col1 varchar2(20) unique not null,

    col2 varchar2(20) unique,

    col3 varchar2(20) not null,

    col4 varchar2(20) not null,

    constraints temp_unique unique(col3, col4)  //col3, col4를 조합을했을때 유니크 해야한다.  temp_unique 제약조건 이름

);


insert into unique_test(col1, col2, col3, col4)

values ( 'aa', 'bb', 'cc' , 'dd');


insert into unique_test(col1, col2, col3, col4)

values ( 'a2', 'b2', 'c2' , 'd2');


select * from unique_test;


update unique_test

set col1 = 'aa'

where col2 = 'b2';

->무결성 제약조건 위배


insert into unique_test ( col1, col2, col3, col4)

values('a3', '', 'c3', 'd3');


insert into unique_test ( col1, col2, col3, col4)

values('a4', '', 'c4', 'd4');



/*기본키(primary key) 테이블 생성시 기본키 생성*/


create table primary_test(

    student_id number(10) primary key, /*인라인 방식*/

    name varchar2(20)

);


create table primary_test(

    student_id number(10),

    name varchar2(20),

    constraints student_pk primary key(student_id) /* 아웃라인 방식 */

);




/* 테이블을 생성하고 나서 이후에 기본키를 생성하는 방법 */

create table primary_test(

    student_id number(10),

    name varchar2(20),        

);


alter table primary_test

add constraints "기본키 이름" primary key (필드명) ; 




/* 외래키 */

create table foreign_key (

    department_id constraints dept_fk

    reference departments (department_id) ;  /*인라인 방식*/

);


create table foreign_key (

    department_id,

    constraints dept_fk

    foreign key (department_id)

    reference departments(department_id) /*아웃라인 방식*/

);


/*테이블을 생성하고 나서 외래키를 지정하는 방법 */

alter table foreign_key

add constraints dept_fk foreign key (department_id)

references departments (department_id);




/*check 제약조건*/


create table check_test(

    gender varchar2(10) not null

        constraints check_sex check (gender in('M','F'))

);

insert into check_test values('남자'); ->체크 제약조건(SYSTEM.CHECK_SEX)이 위배되었습니다

insert into check_test values('M');

728x90
반응형