외래 키 제약 조건의 기능:
외래 키 제약 조건의 몇 가지 중요한 기능은 아래에 설명되어 있습니다.
- 자식 테이블에서 사용하는 외래 키의 데이터 형식은 부모 테이블에서 외래 키를 참조하기 위해 사용하는 기본 키의 데이터 형식과 같아야 합니다.
- 모든 인덱스 열 또는 여러 열은 InnoDB 테이블에 대해서만 외래 키로 참조될 수 있습니다.
- 참조 권한 또는 SELECT, INSERT, UPDATE 및 DELETE 문의 권한 중 하나 이상이 외래 키를 생성하는 데 필요합니다.
- 외래 키는 두 가지 방법으로 생성할 수 있습니다. 하나는 CREATE 문을 사용하고 다른 하나는 ALTER 문을 사용합니다.
전제 조건:
외래 키 제약 조건을 생성하기 전에 기본 키로 데이터베이스와 부모 테이블을 생성해야 합니다. 데이터베이스 이름이 ' 도서관 ' 및 '라는 두 개의 상위 테이블이 포함되어 있습니다. 서적 ' 그리고 ' 빌어 쓰는 사람 '. 다음을 사용하여 MySQL 서버에 연결하십시오. mysql 클라이언트를 실행하고 다음 SQL 문을 실행하여 데이터베이스와 테이블을 생성합니다.
창조하다 데이터 베이스 도서관;
사용하다 도서관;
창조하다 테이블 서적(
ID 지능 아니다 없는 자동 증가 ,
제목 바르차르 (오십) 아니다 없는 ,
작가 바르차르 (오십) 아니다 없는 ,
발행자 바르차르 (오십) 아니다 없는 ,
기본 키 (ID)
) 엔진 = 이노디비 ;
창조하다 테이블 차용인(
ID 바르차르 (오십) 아니다 없는 ,
이름 바르차르 (오십) 아니다 없는 ,
주소 바르차르 (오십) 아니다 없는 ,
이메일 바르차르 (오십) 아니다 없는 ,
기본 키 (ID)
) 엔진 = 이노디비 ;
CREATE 문을 사용하여 외래 키 제약 조건 정의
'라는 이름의 테이블을 생성합니다. book_borrow_info ' 다음 문을 실행하여 외래 키 제약 조건을 사용합니다. 여기서, book_id 필드는 외래 키 이 테이블에 대해 이 필드의 모든 값은 ID 분야의 서적 테이블. 서적 부모 테이블이고 book_borrow_info 자식 테이블이다. 여기에서도 외래 키로 두 가지 제한이 설정됩니다. 이것들은 캐스케이드 삭제 그리고 업데이트 캐스케이드 . 즉, 기본 키가 부모 테이블에서 제거되거나 업데이트되면 외래 키와 관련된 자식 테이블과 관련된 해당 레코드가 제거되거나 외래 키가 업데이트됩니다.
창조하다 테이블 book_borrow_info(
차용 ID 바르차르 (오십),
book_id 지능 ,
차용일 데이트 아니다 없는 ,
반환 기일 데이트 아니다 없는 ,
상태 바르차르 (열 다섯) 아니다 없는 ,
인덱스 par_ind(book_id),
기본 키 (차용 ID,차용일),
외래 키 (book_id) 참조 서적(ID)
에 삭제 종속
에 업데이트 종속
) 엔진 = 이노디비 ;
이제 다음 SQL 문을 실행하여 두 테이블에 일부 레코드를 삽입합니다. 첫 번째 INSERT 문은 4개의 레코드를 서적 테이블. 의 4가지 가치 ID 분야의 서적 테이블은 자동 증가 속성에 대해 1, 2, 3 및 4가 됩니다. 두 번째 INSERT 문은 4개의 레코드를 book_borrow_info 를 기반으로 ID 가치 서적 테이블.
끼워 넣다 안으로 서적 가치
( 없는 , '앵무새 죽이기', '하퍼 리', '그랜드 센트럴 퍼블리싱'),
( 없는 , '백년의 고독', 가르시아 마르케스, '루트피 오즈콕'),
( 없는 , '인도로 가는 길', '포스터, E.M.', 'BBC 헐턴 그림 라이브러리'),
( 없는 , '투명 인간', '랄프 엘리슨', '브리태니커 백과사전');
끼워 넣다 안으로 book_borrow_info 가치
('123490', 1, '2020-02-15', '2020-02-25', '돌아왔다'),
('157643', 2, '2020-03-31', '2020-03-10', '보류 중'),
('174562', 4, '2020-04-04', '2020-04-24', '빌린'),
('146788', 삼, '2020-04-10', '2020-01-20', '빌린');
부모 테이블의 기본 키 필드에 존재하지 않는 자식 테이블의 외래 키 필드에 값을 삽입하려고 하면 MySQL은 오류를 생성합니다. 다음 SQL 문은 상위 테이블 때문에 오류를 생성합니다. 서적 id 값을 포함하지 않음 10 .
끼워 넣다 안으로 book_borrow_info 가치('195684', 10, '2020-04-15', '2020-04-30', '돌아왔다');
다음 DELETE 문을 실행한 후 네 번째 레코드가 파일에서 제거될 때 서적 테이블 다음 관련 레코드 book_borrow_info 외래 키 제약 조건에 대해 테이블이 자동으로 제거됩니다.
삭제 에서 서적 어디 ID= 4;선택하다 * ~에서 서적;
선택하다 * ~에서 book_borrow_info;
ALTER 문을 사용하여 외래 키 제약 조건 정의
처음에는 일부 레코드를 차용인 테이블이고 이 테이블은 다음에서 상위 테이블로 정의됩니다. 나이 성명.
끼워 넣다 안으로 차용인 가치('123490', '패트릭 우드', '34 웨스트 스트리트 LANCASTER LA14 9ZH', ' [이메일 보호됨] '),
('157643', '에즈라 마틴', '10 더 그로브 버밍엄 B98 1EU', ' [이메일 보호됨] '),
('174562', '존 이네스 아치', '55 Main Road 리버풀 L2 3OD', ' [이메일 보호됨] '),
('146788', '프레드릭 핸슨', '85 하이필드 로드 SHREWSBURY SY46 3ME', ' [이메일 보호됨] ');
다음을 실행 나이 다른 외래 키 제약 조건을 설정하는 문 book_borrow_info 관계를 맺는 테이블 차용인 테이블. 여기, 차용 ID 에 대한 외래 키로 정의됩니다. book_borrow_info 테이블.
ALTER TABLE book_borrow_info 추가 제약 조건 fk_borrower외래 키(차용 ID)참조 차용인(ID)ON DELETE CASCADE ON UPDATE RESTRICT;
이제 레코드를 삽입하십시오. book_borrow_info 유효한 차용 ID 에 존재하는 값 ID 분야의 차용인 테이블. 157643 값이 차용자 테이블에 존재하며 다음 INSERT 문이 성공적으로 실행됩니다.
끼워 넣다 안으로 book_borrow_info 가치('157643', 1, '2020-03-10', '2020-03-20', '돌아왔다');
다음 INSERT 문은 id 값이 195680 차용자 테이블에 존재하지 않습니다.
끼워 넣다 안으로 book_borrow_info 가치('195680', 1, '2020-04-15', '2020-04-30', '돌아왔다');
결론:
외래 키 제약 조건을 적절하게 정의하는 것은 관계형 데이터베이스를 생성하고 테이블 간의 데이터를 적절하게 관리하기 위한 매우 중요한 작업입니다. 외래 키 제약 조건의 사용을 아는 것은 데이터베이스 디자이너에게 매우 중요합니다. 이 기사가 새로운 데이터베이스 설계자가 외래 키 제약 조건의 개념을 이해하고 작업에 적절하게 적용하는 데 도움이 되기를 바랍니다.