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 작업 을 할 때 하위 표 의 작업 유형
우리 가 삭제 작업 을 시도 할 때
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 외 키 생 성,제약 및 삭제 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.