집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 외래 키 제약 조건 지식 포인트 요약
이 기사에서는 외래 키 제약 조건과 관련된 문제를 주로 정리하는 mysql에 대한 관련 지식을 제공합니다. 외래 키 제약 조건(외래 키)은 데이터베이스의 두 데이터 테이블 사이의 열에 의해 설정됩니다. 일반적으로 실제 시나리오에서 정확히 동일한 의미를 갖는 필드로 인해 발생하는 내용을 함께 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.
추천 학습: mysql 비디오 튜토리얼
외래 키 제약 조건(외래 키)은 데이터베이스의 두 데이터 테이블 사이의 열에 의해 설정된 관계입니다. 이 연결은 일반적으로 실제 시나리오에서 정확히 동일한 의미를 가진 필드로 인해 발생합니다. 외래 키 제약 조건의 도입을 통해 MySQL은 데이터 테이블의 데이터 무결성을 더 강력하고 표시 상황과 더 일관되게 만들 수 있습니다. 아래에는 MySQL 외래 키 제약 조건의 역할을 설명하는 예가 나와 있습니다.
대학생 성과 관리 시스템을 위한 데이터베이스를 구축하면 두 개의 테이블이 있는데, 그 중 하나는 학생의 학번, 이름, 성별, 학과, 기타 정보를 저장하는 학생 테이블이고, 다른 테이블은 성적 테이블입니다. , 학번, 과목번호, 시험성적 등의 정보를 저장하는 곳입니다. 이러한 방식으로 학생 번호를 통해 두 테이블 사이에 외래 키 제약 조건이 설정됩니다. 학생이 졸업하거나 중퇴하여 학생 테이블에서 삭제되면 성적표에 있는 학생 ID 번호가 학생 테이블에 있는지 여부에 따라 결정된다고 생각하는 것은 당연합니다. 성적표에는 성적이 필요하지 않습니다. 외래 키 관계를 생성하기 전에는 이 두 테이블이 완전히 독립적으로 존재합니다. 존재하지 않는 학생의 관련 점수를 점수 테이블에 강제로 삽입할 수도 있고, 점수 정보와 관계없이 학생 테이블에서 학생을 강제로 삭제할 수도 있습니다. 점수표에 존재하는지 여부. 그러나 외래 키 관계를 설정한 후에는 MySQL 데이터베이스가 위의 두 가지 동작을 제한합니다. 데이터가 삽입되거나 삭제될 때마다 데이터 무결성이 검사되므로 작업이 실제 상황에 부합해야 합니다.
MySQL 데이터베이스에서 외래 키 생성은 다음 네 가지 조건을 충족해야 합니다. 그렇지 않으면 MySQL 데이터베이스에서 거부됩니다.
1. 외래 키 생성 테이블과 컬럼이 존재합니다
2. 외래 키를 구성하는 컬럼이 인덱스에 존재합니다
3. 데이터 테이블의 엔진은 InnoDB로 지정되어야 합니다
4. 외래 키 필드의 데이터 유형 및 관련 필드는 일관성이 있어야 합니다
데이터 테이블 생성 시 외래 키 제약 조건을 생성하려면 외래 키 키워드를 사용하여 데이터 테이블의 create 문 다음에 이 테이블의 외래 키 필드를 지정하고 참조 키워드를 사용하여 관련 테이블의 외래 키 필드를 지정하고 동작을 명시적으로 제한하면 됩니다.
외래 키 제약 조건을 생성하는 SQL 문의 예는 다음과 같습니다.
create table student (id int(8),name varchar(20),department varchar(20) ,index (id))ENGINE=InnoDB; create table grade (Sid int(8),Cid int(10),score int,index(Sid),foreign key (Sid) references student(id) on delete restrict on update cascade)ENGINE=InnoDB;
위의 SQL 문에서 삭제 제한은 외래 키가 삭제 시 삭제 작업을 제한함을 나타내고 업데이트 계단식에서는 외래 키가 삭제되도록 지정합니다. 키는 업데이트 작업이 동기화될 때 삭제 작업을 제한합니다.
마찬가지로 MySQL은 데이터 테이블 생성 후 외래 키 제약 조건 추가도 지원합니다. 위의 예에서는 먼저 등급 테이블을 삭제한 후 등급 테이블을 생성합니다. 지금은 외래 키를 생성하지 않습니다. 관련 SQL 명령은 다음과 같습니다.
drop table grade; create table grade(Sid int(8),Cid int(10),score int); alter table grade add index(Sid); alter table grade add foreign key (Sid) references student(id) on delete restrict on update cascade;
실행 결과는 다음과 같습니다.
다음으로, 외래 키 제약 기능을 테스트해 보겠습니다. 먼저 존재하지 않는 학생의 성적을 성적 테이블에 삽입해 보세요. 거부됨:
그런 다음 학생 테이블을 삭제하려고 시도합니다. 성적이 에 있는 학생이 거부된 것으로 확인되었습니다.
다음으로 MySQL 외래 키 제약 조건 계단식 업데이트 기능을 테스트한 결과 학생 테이블이 변경되면 성적 테이블도 아래와 같이 변경됩니다.
추천 학습: mysql 비디오 튜토리얼
위 내용은 MySQL 외래 키 제약 조건 지식 포인트 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!