Data base

UNIQUE

연93 2022. 10. 14. 12:57
/* 
UNIQUE : UNIQUE 제약조건은 말 그대로 해당 컬럼에 들어가는 값이 유일해야 한다는 의미다. 즉 중복 값을 허용하지 않는다.  
컬럼에 제약조건 설정시
1)테이블수준제약: 컬럼을 다 정의하고 나서, 마지막에 제약조건설정
예>
 CREATE TABLE 테이블명( 
    컬럼명1 테이터타입,
    컬럼명2 테이터타입,
    컬럼명3 테이터타입,
    CONSTRATINS 제약조건객체이름 재약조건명령어(컬럼명1)
);
2)컬럼수준제약  : 컬럼 생성시 제약조건 설정
 예> 컬럼명 데이터타입 제약조건명령어
*/
CREATE TABLE ex2_7 (
    COL_UNIQUE_NULL    VARCHAR2(10) UNIQUE, -- NULL 생략됨.제약객체이름 자동으로 생성
    COL_UNIQUE_NNULL   VARCHAR2(10) UNIQUE NOT NULL, --제약객체이름 자동으로 생성
    COL_UNIQUE         VARCHAR2(10), -- NULL 생략됨
    CONSTRAINTS unique_nm1 UNIQUE ( COL_UNIQUE)
); 

CREATE TABLE ex2_7 (
    COL_UNIQUE_NULL    VARCHAR2(10) UNIQUE, -- NULL 생략됨.
    COL_UNIQUE_NNULL   VARCHAR2(10) UNIQUE NOT NULL, 
    COL_UNIQUE         VARCHAR2(10) CONSTRAINTS unique_nm1 UNIQUE ( COL_UNIQUE)
);

--제약조건 정보확인
SELECT constraint_name, constraint_type, table_name, search_condition
  FROM user_constraints
 WHERE table_name = 'EX2_7';
 
 
  -- 데이터 추가시 컬럼생략한 경우는 모든 컬럼명을 입력한다는 의미
INSERT INTO ex2_7 VALUES ('AA', 'AA', 'AA'); --처음에는 데이터 삽입이 성공

INSERT INTO ex2_7 VALUES ('AA', 'AA', 'AA'); -- UNIQUE 제약조건,중복된값은 저장되지않는다

INSERT INTO ex2_7 VALUES ('', 'BB', 'BB');

INSERT INTO ex2_7 VALUES ('', 'CC', 'CC');