>  기사  >  데이터 베이스  >  MySQL에서 외래 키를 추가하는 방법은 무엇입니까?

MySQL에서 외래 키를 추가하는 방법은 무엇입니까?

WBOY
WBOY앞으로
2023-05-29 17:10:487033검색

Mysql에서 외래 키를 추가하는 여러 가지 방법

참고: 외래 키를 추가하면 슬레이브 테이블(즉, 하위 테이블)에 추가됩니다.
상위 테이블이 메인 테이블입니다.

방법 1:

생성하기 전 테이블:

FOREIGN KEY(하위 테이블 ID) REFERENCES 관련 테이블 이름(외부 마스터 테이블 ID)

예:

  create table emp( 			
  	e_id int auto_increment primary key, 			
  	ename varchar(50) not null, 			
  	age int, 			job varchar(20),
  	salary int, 			
  	entrydate date, 			
  	managerid int, 			
  	dept_id int,
  	FOREIGN KEY (dept_id) REFERENCES dept(id) 	
  );

방법 2:

테이블 생성 후 추가:

ALTER TABLE Table 1 ADD FOREIGN KEY (테이블 외래 키에서) REFERENCES dept (메인 테이블의 기본 키);

 例如:
 		ALTER TABLE emp ADD FOREIGN KEY (dep_id) REFERENCES dept(id);

참고:

메인 테이블(dept)은 슬레이브 테이블(emp)에 존재하며 슬레이브 테이블은 외래 키는 직접 삭제할 수 없습니다(메인 테이블)

DROP TABLE dept; --Delete failed

테이블 삭제 시 외래 키 참조가 있는 경우 먼저 슬레이브 테이블을 삭제해야 합니다. 관련 외래 키 제약 조건) 마스터 테이블을 삭제하기 전에.
위 외래 키는 모두 물리적 외래 키이므로 데이터베이스 수준 참조이므로 이를 사용하면 데이터 결합 정도가 크게 높아집니다.

기본 키:

레코드를 고유하게 식별하며 중복될 수 없으며 데이터 무결성을 보장하는 데 사용됩니다.

외래 키:

다른 테이블의 키. 외래 키는 중복되거나 null 값을 가질 수 있으며 다른 테이블과의 관계를 설정하는 데 사용됩니다. 따라서 외래 키에 관해 이야기하려면 최소한 두 개의 테이블이 포함되어야 합니다.

참고:

1. 외래 키 필드는 생성 시 기본 테이블의 유형(길이 등)과 완전히 일치해야 합니다. 그렇지 않으면 외래 키를 생성할 때 오류가 보고됩니다.

2. 외래 키 테이블은 메인 테이블에 존재하지 않는 데이터를 삽입할 수 없습니다(데이터란 메인 테이블의 기본 키 또는 보조 테이블의 외래 키를 가진 데이터를 말합니다). –예를 들어, 테이블에서 데이터를 삽입할 때 부서 번호가 1, 2, 3, 4만 있고 외래 키 값이 5인 경우, 메인 테이블의 데이터가 수정되면 오류가 발생합니다. , 연결된 외래 키 테이블의 외래 키 제약 조건이 자동으로 수정되었습니다.

제약조건을 추가하는 것과 추가하지 않는 것의 차이

제약조건을 추가하지 않으면 시스템이 자동으로 이름을 생성하므로 기억하기 어려울 수 있습니다.. 제약조건을 추가하면 자신의 의도에 따라 제약조건 이름을 지정할 수 있습니다.

추가됨: MySQL의 외래 키 삭제 작업

1. 삭제할 외래 키를 표시합니다. show create table 테이블 이름;

2. 제약 조건을 확인하세요.MySQL에서 외래 키를 추가하는 방법은 무엇입니까?

3. 다시 작성하는 한 가지 방법은 다음과 같습니다. 테이블에서 외래 키 제약 조건을 삭제하려면 alter table 명령을 사용합니다. 구문은 다음과 같습니다. ALTER TABLE 테이블 이름 DROP FOREIGN KEY 제약 조건 이름;MySQL에서 외래 키를 추가하는 방법은 무엇입니까?

위 내용은 MySQL에서 외래 키를 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제