전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (174)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

Database/Oracle

[Oracle] CONSTRAINT(제약조건)_UNIQUE

2023. 7. 24. 22:12

* UNIQUE 제약조건

해당 컬럼에 중복된 값이 들어가서는 안 될 경우
컬럼값에 중복값을 제한하는 제약 조건
삽입 / 수정시 기존에 있는 데이터값 중 중복값이 있을경우 오류 발생 !!

 

컬럼 레벨 방식

CREATE TABLE MEM_UNIQUE( -- 컬럼레벨방식
    MEM_NO NUMBER NOT NULL,
    MEM_ID VARCHAR2(20) NOT NULL UNIQUE,
    MEM_PWD VARCHAR2(20) NOT NULL,
    MEM_NAME VARCHAR2(20) NOT NULL,
    GENDER CHAR(3),
    PHONE VARCHAR2(13),
    EMAIL VARCHAR2(50)
);

 

테이블 레벨 방식

CREATE TABLE MEM_UNIQUE( 
    MEM_NO NUMBER NOT NULL,
    MEM_ID VARCHAR2(20) NOT NULL,
    MEM_PWD VARCHAR2(20) NOT NULL,
    MEM_NAME VARCHAR2(20) NOT NULL,
    GENDER CHAR(3),
    PHONE VARCHAR2(13),
    EMAIL VARCHAR2(50),
    UNIQUE (MEM_ID) --> 테이블 레벨 방식
--    NOT NULL(MEM_ID) --> NOT NULL은 컬럼레벨 방식밖에 안된다.
);
INSERT INTO MEM_UNIQUE VALUES(1, 'user01', 'pass01', '손흥민', null, null, null);
INSERT INTO MEM_UNIQUE VALUES(2, 'user01', 'pass02', '이강인', null, null, null);
--ORA-00001: unique constraint (DDL.SYS_C007131) violated
--> UNIQUE 제약조건에 위배되었음! INSERT 실패!!
--> 오류구문을 제약조건명으로 알려줌!! (특정 컬럼에 어떤 문제가 있는지 상세히 알려주지 않음!)
--> 쉽게 파악하기 어려움!!
--> 제약조건 부여시 제약조건명을 지정해주지 않으면 시스템에서 임의의 제약조건명을 부여해버림

 

INSERT INTO MEM_UNIQUE VALUES(2, 'user02', 'pass02', '이강인', null, null, null);
INSERT INTO MEM_UNIQUE VALUES(3, 'user03', 'pass02', '이승우', 'ㄴ', null, null);
--> 성별에 유효한 값이 아닌게 들어와도 잘 INSERT가 된다. => 이러면 안됨... 즉 check제약조건 사용해야 된다

 

제약조건 명 부여하는 방법

2023.07.24 - [IT/Oracle] - [Oracle] CONSTRAINT(제약조건)_제약조건명 부여

 

[Oracle] CONSTRAINT(제약조건)_제약조건명 부여

* 제약조건 부여시 제약조건명까지 지어주는 방법 > 컬럼 레벨 방식 CREATE TABLE 테이블명( 컬럼명 자료형 [CONSTRAINT 제약조건명]제약조건 컬럼명 자료형 ); > 테이블 레벨 방식 CREATE TABLE 테이블명{

e1jong.tistory.com

 

CHECK 제약조건 부여하는 방법

2023.07.27 - [IT/Oracle] - [Oracle] CONSTRAINT(제약조건)_CHECK

 

[Oracle] CONSTRAINT(제약조건)_CHECK

* CHECK(조건식) 제약조건 해당 컬럼에 들어올 수 있는 값에 대한 조건을 제시해둘 수 있음 해당 조건에 만족하는 데이터값만 담길 수 있음 CREATE TABLE MEM_CHECK( MEM_NO NUMBER NOT NULL, MEM_ID VARCHAR2(20) NOT NU

e1jong.tistory.com

 

    'Database/Oracle' 카테고리의 다른 글
    • [Oracle] CONSTRAINT(제약조건)_CHECK
    • [Oracle] CONSTRAINT(제약조건)_제약조건명 부여
    • [Oracle] CONSTRAINT(제약조건)_NOTNULL
    • [Oracle] DDL(1) - CREATE
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바