-
SQL 제약조건 Primary Key & UniqueData 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