[SQL] 참조무결성, FOREIGN KEY 설정 방법

정은아·2022년 9월 13일
0

. 참조 무결성

. 행을 입력, 수정 ,삭제할 때 연관되는
   다른 테이블과의 데이터가 정확하게 유지되도록 규정하는 것이다.

 . 참조 무결성은 참조 관계에 있는 두 테이블의 데이터가
   항상 일관된 값을 가져야한다.

 . 참조 무결성에는 FOREIGN KEY 가 있다.

   . FOREIGN KEY(외래키)

      . 다른 테이블의 데이터를 참조할 때 없는 값을
        참조할 수 없도록 제약을 주는 것이다.

      . 참조될 테이블이 먼저 만들어지고 값이 입력되어야 한다.

      . 이 때, 참조될 열의 값은 참조될 테이블에서
        PRIMARY KEY로 설정되어 있어야 한다.

	 1.
	 create table parent
	     ( id number PRIMARY KEY);

	 2.
	 create table child
	     (name varchar2(30) not null,
	      id number not null,
	      CONSTRAINT ID_FK FOREIGN KEY(ID) REFERENCES PARENT(ID));

	 3.
	 insert into parent values(35);

	 4.
	 SQL> insert into child values('korea', 45);
	 insert into child values('korea', 45)
	 *
	 1행에 오류:
	 ORA-02291: 무결성 제약조건(SCOTT.ID_FK)이 위배되었습니다- 부모 키가 없습니다
	 // 35 이외의 값은 넣을 수 없다.

	 5.
	 SQL> insert into child values('korea', 35);

	 1 개의 행이 만들어졌습니다.
	 
	 // primary 키에 없는 값을 가질 수 없다.

	 6.
	 select table_name, CONSTRAINT_NAME, CONSTRAINT_TYPE,
	 		r_constraint_name
		 from USER_CONSTRAINTS
		 where table_name = 'CHILD';

. FOREIGN KEY 설정 방법

  . 테이블 생성시 설정

    CONSTRAINTS 외래키 이름 FOREIGN KEY(컬럼명)
    REFERENCES 참조 테이블명(참조컬럼)

  . 외래키 삭제, 해제
    
    ALTER TABLE 테이블 이름 DROP CONSTRAINT 제약 이름;

    ex) ALTER TABLE CHILD DROP CONSTRAINT ID_FK;


    1.
    CREATE TABLE TABLE_3(
      LOGIN_ID VARCHAR2(20) CONSTRAINT KO_LONID_NN NOT NULL,
      LOGIN_PWD VARCHAR2(20) CONSTRAINT KO_LGNPW_NN NOT NULL,
      LOGIN_DATA VARCHAR2(20) CONSTRAINT KO_LGNDA_U UNIQUE,
      TEL VARCHAR2(20)
      );

    2.
    ALTER TABLE TABLE_3
    	MODIFY(TEL NOT NULL);


    3.
    select table_name, CONSTRAINT_NAME, CONSTRAINT_TYPE,
	 		r_constraint_name
		 from USER_CONSTRAINTS
		 where table_name = 'TABLE_3';

    4. 
    ALTER TABLE TABLE_3
	  MODIFY(TEL UNIQUE);
 
    5. 
    ALTER TABLE TABLE_3
    	RENAME CONSTRAINT KO_LONID_NN TO SS_lonid_nn;
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글