MySQL 의 외부 키 생 성,제약 및 삭제

머리말
MySQL 3.23.44 버 전 이후 이 노 DB 엔진 유형의 시 계 는 외부 키 제약 을 지원 했다.
외부 키 의 사용 조건:
1.두 시 계 는 반드시 InnoDB 시계 여야 합 니 다.MyISAM 시 계 는 외부 키 를 지원 하지 않 습 니 다(이후 버 전 은 지원 할 수 있 으 나 현재 로 서 는 지원 하지 않 습 니 다).
2.외부 키 열 은 색인 을 만들어 야 합 니 다.MySQL 4.1.2 이후 버 전 은 외부 키 를 만 들 때 자동 으로 색인 을 만 듭 니 다.그러나 빠 른 버 전에 서 는 생 성 을 표시 해 야 합 니 다.
3.외부 키 관계 의 두 표 의 열 은 데이터 형식 이 비슷 해 야 합 니 다.즉,서로 유형 을 바 꿀 수 있 는 열 입 니 다.예 를 들 어 int 와 tinyint 는 가능 하지만 int 와 char 는 안 됩 니 다.
외부 키 의 장점:두 장의 표를 연결 시 켜 데이터 의 일치 성과 일부 직렬 연결 작업 을 실현 할 수 있다.
1.외부 키 생 성
문법 1:추가 방법

alter table    add constraint     foreign key(         ) references     (       );
alter table student add constraint fk_class_student foreign key(cls_id) class(cls_id) on update cascade on delete no action;
문법 2:표를 만 드 는 방법

CREATE TABLE student(
sid int PRIMARY KEY,
cls_id int not null,
sname varchar(10) not null,
constraint fk_class_student foreign key(cls_id) references class(cls_id) on update cascade on delete no action
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
추가 점:

SHOW CREATE TABLE class
표 작성 정 보 를 조회 할 수 있 습 니 다.
在这里插入图片描述

CREATE TABLE `class` (
 `cls_id` int NOT NULL,
 `cls_name` varchar(15) NOT NULL,
 PRIMARY KEY (`cls_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
다음 프 리 젠 테 이 션 은 방금 만 든 이 학생 표 와 학급 표를 사용 합 니 다.
내용 은 아래 와 같다
在这里插入图片描述
在这里插入图片描述
둘째,네 가지 구속 방식 에 대하 여
부모 표 에서 update/delete 작업 을 할 때 하위 표 의 작업 유형
  • CASCADE 서브 시트 는 삭 제 된 키 값 과 참조 관계 가 있 는 모든 데 이 터 를 삭제 합 니 다
  • SET NULL 부모 표 delete,update 의 경우 하위 표 는 관련 기록 의 외부 키 필드 가 있 는 열 을 null
  • 로 설정 합 니 다.
  • RESTRICT 는 관련 된 필드 의 삭제 요 구 를 거부 합 니 다(이것 은 기본 설정 이자 가장 안전 한 설정 입 니 다)
  • NO ACTION 은 RESTRICT 와 유사 하 다.
  • 우리 가 방금 설정 한 외부 키 를 예 로 들 면(on update cascade on delete no action)
    우리 가 삭제 작업 을 시도 할 때
    
    delete from class WHERE cls_id=1
    
    결 과 는 다음 과 같다.
    在这里插入图片描述
    외부 키 제약 조건 에서 on delete no action 이 존재 하기 때문에 메 인 시트 를 삭제 할 수 없습니다.근 데 서브 시 계 는 괜찮아 요.
    
    delete from student WHERE cls_id=1
    
    在这里插入图片描述
    부모 표 의 연결 키 를 업데이트 할 때 on update 캐 스 케 이 드 가 존재 하기 때문에 정상적으로 업데이트 할 수 있 습 니 다.
    
    UPDATE class set cls_id=4 where cls_id=1
    
    在这里插入图片描述
    또한 메 인 테이블 이 업데이트 되면 서 하위 테이블 의 외 키 필드 도 업데이트 되 었 습 니 다.
    在这里插入图片描述
    3.외부 키 를 삭제 하 는 방법
    
    alter table     drop foreign key      
    alter table student drop foreign key fk_class_student
    
    우리 가 외부 키 를 삭제 한 후에 부모 표 의 조작 은 정상적으로 진행 할 수 있 게 되 었 다.
    在这里插入图片描述
    총결산
    여기 서 MySQL 중외 키 생 성,제약 및 삭제 에 관 한 글 을 소개 합 니 다.더 많은 MySQL 외 키 생 성,제약 및 삭제 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기