database/oracle

13. REFERENCE, 데이터 확인, 제약 조건

bono.html 2022. 7. 15. 16:23

 

 

NOT NULL

NULL 로 입력이 되어서는 안되는 칼럼에 부여하는 조건으로 칼럼 레벨에서 만 부여할수 있는 제약조건이다.

 

UNIQUE KEY (유일키)

저장된 값이 중복되지 않고 오직 유일하게 유지되어야 할때 사용하는 제약조건이다. (NULL 은 허용된다)

 

PRIMARY KEY (대표키)

NOT NULL 조건과 UNIQUE KEY 를 합친 조건이다.

 

CHECK

조건에 맞는 데이터만 입력되도록 조건을 부여하는 제약 조건

 

FOREIGN KEY (외래키)

부모 테이블의 PRIMARY KEY 를 참조하는 칼럼에 붙이는 제약조건 이다(예 emp 테이블의 deptno 칼럼)

 

 

EMP TABLE      DEPT TABLE

 

deptno               deptno

 

이런 테이블 두개가 있다고 가정하면

REFERENCE하는 것이다. 

 

임의의 TABLE dept2와 emp2를 생성했다.

두 TABLE은 deptno를 REFERENCES하였다.

 

 

두 TABLE이 REFERENCES 한 상태이기 때문에 dept2에서 deptno(부서번호) 10 데이터를 미리 만들어줘야 emp2에서도 deptno 10의 데이터를 입력할 수 있다.

 

 

데이터 확인하기

 

DESC USER_TABLES

테이블 확인하기

DESC USER_SEQUENCES

시퀀스 확인하기

DESC USER_CONSTRAINTS

제약조건 확인하기

 

 

테이블 확인

 

 

SELECT TABLE_NAME FROM USER_TABLES;

만들어진 table에 관한 정보는  해당 코드로 확인할 수 있다.

 

 

시퀀스 확인

 

무거운 작업이기 때문에 우선 21을 반영한다.

 

 

제약조건을 확인하는 방법은  DESC USER_CONSTRAINTS 이다.

 

제약조건

R REFERENCE

C NOTNULL

P PRIMARY

 

제약조건인 붙은 COLUMNS의 데이터를 확인하려면 USER_CONS  table을 참고해야한다.

 

 

 

TABLE_NAME이 양쪽에 있어서 수정해준다.

 

제약 조건의 이름을 미리 지정할 수 있는데 EMP2와DEPT2 같은 경우 NOT NULL등과 같은 제약조건을 입력할때 이름을 정해놓지 않았기 때문에 시스템에서 임의로 정해준다. 예시에서는 SYS_C004002   등의 이름이 지정되었다.

 

제약조건 이름 예시

member_num_pk

member_name_nn

emp2_empno_pk

emp2_deptno_fk

 

예시에서

pk primary key

nn not null

fk foreign key 

 

테이블을 삭제하는 일련의 과정이다.

dept2 table은 emp2 table과 REFERENCE 되어있기에 삭제가 되지 않는다. 이때 emp2 부터 삭제한 후 dept2를 삭제해준다.

 

테이블 제약조건 이름 지정하기

CONSTRAINT 제약조건명 제약조건

테이블을 만들때 CONSTRAINT 제약조건명 제약조건을 입력해서 제약조건 이름과 제약조건을 설정했다.

두번째 코드에서는 생성한 조건명과 제약조건을 확인했다,

 

1. 제약조건 만드는 방식1

 

VARCHAR2 가변기록

CHAR 고정기록

 

PRIMARY KEY 는 NOT NULL + UNIQUE

UNIQUE는 NULL은 허용하지만 PRIMARY KEY와 같이 중복을 허용하지 않는다.

 

여기서 dept(deptno)는 함수가 아니라 table name과 column name을 적는 형식이라고 볼 수 있다.

 

2. 제약조건을 만드는 방식2

1번 방식과는 다르게 2번 방식은 table 기본 조건을 만든 다음에 제약조건을 작성한다. 여기서 작성 위치를 지정해놔야 작동하기 때문에 제약조건 뒤에 괄호를 만들고 칼럼명을 적어야한다.

 

ex) CONSTRAINT 제약조건명 제약조건(칼럼명)

 

 

제약조건 만드는 2가지 형식

형식1
형식2
형식2