본문 바로가기

오라클/제약조건

제약조건 UNIQUE 유니크

--UNIQUE : 지정컬럼의 중복을 허용하지 않음

  -- UNIQUE는 2개이상 지정 가능

  -- NULL을 허용할 수 있지만 NULL인 자료는 하나만 존재해야 함

  

  -- UNIQUE 컬럼레벨로 지정

    CREATE TABLE 테이블명(

      컬럼명 타입 CONSTRAINT 제약조건이름 UNIQUE

        :

        :

    );

    

  -- UNIQUE 테이블레벨로 지정

    CREATE TABLE 테이블명 (

      컬럼명 타입

        :

        :

      ,CONSTRAINT 제약조건이름 UNIQUE(컬럼명)

  );

  

  --확인

  SELECT * FROM USER_CONSTRAINT;

  SELECT * FROM USER_CONS_COLUMNS;

  

  --이미 존재하는 테이블에 UNIQUE

  ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건이름 UNIQUE (컬럼명);

  

  --UNIQUE 제거

  ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건이름;

  


EX )

  CREATE TABLE test1(

    id VARCHAR2(20)

    ,name VARCHAR2(20) NOT NULL

    ,ssn VARCHAR2(20)

    ,CONSTRAINT pk_test1_id PRIMARY KEY(id)

    ,CONSTRAINT un_test1_ssn UNIQUE (ssn)

  );

  

  SELECT * FROM USER_CONSTRAINT;

  SELECT * FROM USER_CONS_COLUMNS;

  

  INSERT INTO test1(id,name,ssn)VALUES('1','a','1');

  INSERT INTO test1(id,name,ssn)VALUES('2','a','null'); --null을 이용해서 가능, null 중복가능

  INSERT INTO test1(id,name,ssn)VALUES('3','c','2');

  INSERT INTO test1(id,name,ssn)VALUES('3','c','1'); -- unique 제약조건 위반 에러

  INSERT INTO test1(id,name,ssn)VALUES('4','d','3');

  INSERT INTO test1(id,name,ssn)VALUES('5','a','null');

  COMMIT;

  SELECT * FROM test1;

  

'오라클 > 제약조건' 카테고리의 다른 글

참조키(외래키, FORIGN KEY)  (0) 2013.06.11
제약조건 DEFAULT 디폴트  (0) 2013.06.01
제약조건 NOT NULL  (0) 2013.06.01
제약조건 CHECK  (0) 2013.06.01
제약조건 PRIMARY KEY 기본키  (0) 2013.06.01