ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL 제약조건 Primary Key & Unique
    Data Base_Oracle/SQL 2020. 1. 4. 15:57

    Primary Key_기본키

    • 테이블의 행을 구분하는 키워드로 사용
    • Not null + Unique index key 자동으로 부여
      반드시 데이터를 입력해야 하면서 값이 중복되면 안되는 필드에 적용
      ※ index key : 책갈피와 유사한 역할, 검색속도를 향상시킴
    • ex) ID, 사원번호(empno), 주민등록번호, 이메일 등

    # Primary Key 추가 예제

    [ SQL> alter table b_prtest add constraint b_prtest_pk_id primary key(id);
    SQL> desc b_prtest ]

    이름 널? 유형
    ID NOT NULL NUMBER(5)
    IRUM   VARCHAR2(30)

    # Primary Key 중복 오류 예제

    ▷ b_prtest 테이블의 모든 데이터 삭제
    [ SQL> delete from b_prtest;
    SQL> select count( * ) from b_prtest; ]

    COUNT( * )
    0

    ▷ 빈 테이블에 동일한 id값 입력
    [ SQL> insert into b_prtest values(1, '홍길동');
    1개의 행이 만들어졌습니다.
    SQL> insert into b_prtest values(1, '홍길동');
    1행에 오류:
    ORA-00001: 무결성 제약 조건(TEST1.B_PRTEST_PK_ID)에 위배됩니다 ]

     

    ▶ id값을 다르게 입력
    [ SQL> insert into b_prtest values(2, '홍길동');
    SQL> select * from b_prtest; ]

    ID IRUM
    1 홍길동
    2 홍길동

    #Primary key 제거 예제

    ▶ [ SQL> alter table b_prtest drop constraint b_prtest_pk_id;
    SQL> desc b_prtest ]

    이름 널? 유형
    ID   NUMBER(5)
    IRUM   VARCHAR2(30)

    Unique

    입력하지 않아도 되지만 중복된 값은 저장되지 못하게 하는 제약조건

    # 예제

    ▶ table1생성, age필드에 unique 제약조건 부여
    [ SQL> create table table1(age number(2) unique); ]

     

    ▶ age = 11 저장
    [ SQL> insert into table1 values(11); ]

     

    ▶ age = 22 저장
    [ SQL> insert into table1 values(22); ]

     

    ▶ id = null 저장
    [ SQL> insert into table1 values(null); ]

     

    ▶ id = '' 저장
    [ SQL> insert into table1 values(''); ]

     

    ▶▶ id = 11 저장
    [ SQL> insert into table1 values(11);
    1행에 오류: ORA-00001: 무결성 제약 조건(TEST1.SYS_C0011063)에 위배됩니다 ]

     

    ※ null값('')은 허용하지만 동일한 값이 저장되는 것만은 허용하지 않음


    primary key는 id처럼 꼭 필요하면서도 중복되면 안 되는 데이터를 저장할 때 사용하며,

    테이블의 행을 구분하는 역할도 하기 때문에 아주 중요한 제약조건이라고 할 수 있습니다.

    'Data Base_Oracle > SQL' 카테고리의 다른 글

    SQL 제약조건 Foreign Key  (0) 2020.01.04
    SQL 제약조건 Check & Default  (0) 2020.01.04
    SQL 제약조건(Constraint) 종류 및 개요  (0) 2020.01.04
    SQL DDL_Drop, Rename  (0) 2020.01.04
    SQL DDL_Alter  (0) 2020.01.04

    댓글

Designed by Tistory.