외래 키는 테이블 간의 무결성을 유지하기 위해 사용할 수 있는 제약 조건 유형입니다. 테이블에 대한 외래 키를 생성하면 이 테이블을 자식 테이블이라고 하고 두 번째 테이블을 부모 테이블이라고 합니다.
상위 테이블에서 외래 키는 기본 키로 작동합니다. 테이블을 만들어 보겠습니다.
자식 테이블을 만드는 중입니다.
mysql> 생성 테이블 StudentEnrollment -> ( -> StudentId int, -> StudentName varchar(200), -> StudentFKPK int -> );쿼리 OK, 영향을 받는 행 0개(0.91초)
상위 테이블 생성
mysql> 테이블 생성 College -> ( -> StudentFKPK int, -> CourseId int, -> CourseName varchar(200), -> CollegeName varchar(200), -> 기본 키(StudentFKPK) -> ), 쿼리 확인 , 영향을 받는 행 0개(0.46초)
부모 테이블에서 'StudentFKPK' 열은 기본 키입니다. ALTER 명령을 사용하여 외래 키를 추가합니다.
다음은 외래 키를 추가하는 구문입니다.
ALTER 테이블 yourChildTableName 추가 제약 조건 anyConstraintNameforeign key(부모 테이블의 기본 키 열 이름) 참조 College(부모 테이블의 기본 키 열 이름);
다음은 아래 쿼리에서 위 구문을 구현한 것입니다.
mysql> 테이블 StudentEnrollment 추가 제약 조건 StudCollegeConst 외래 키(StudentFKPK) 참조 College(StudentFKPK), 쿼리 확인, 영향을 받는 행 0개(1.78초) 레코드:0 중복:0 경고:0
외래 키 제약 조건이 있는지 확인하는 구문입니다.
SELECT TABLE_NAME, COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NA FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHER REFERENCED_TABLE_NAME ='yourParentTableName 또는 referencedTableName';
위 구문은 아래 쿼리에 구현되어 있습니다.
mysql> SELECT -> TABLE_NAME, -> COLUMN_NAME, -> CONSTRAINT_NAME, -> REFERENCED_TABLE_NAME, -> REFERENCED_COLUMN_NAME -> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE -> WHERE -> REFERENCED_TABLE_NAME, ='Collection다음은 출력입니다.
+-------------------+-------------+------------ ------+-----------+------------------- -----+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |+----------+------------+------------- ---+-----------------------+-------------------- -+| 학생 등록 | 학생FKPK | StudCollegeConst | 대학 | 학생FKPK |+-------------------+------------+------------- ---+-----------------------+-------------------- ----+1 행 세트, 2 경고(0.03초)StudentFKPK라는 열이 있고 CONSTRAINT_NAME은 StudCollegeConst입니다.