>데이터 베이스 >MySQL 튜토리얼 >mysql에서 외래 키 제약 조건을 작성하는 방법

mysql에서 외래 키 제약 조건을 작성하는 방법

王林
王林원래의
2020-07-08 11:14:5329890검색

MySQL 외래 키 제약 조건은 [[CONSTRAINT ] FOREIGN KEY 필드 이름 REFERENCES 기본 키 열 1]로 작성됩니다. 외래 키 제약 조건은 기본 키 제약 조건과 함께 자주 사용되는 테이블의 특수 필드입니다.

mysql에서 외래 키 제약 조건을 작성하는 방법

CREATE TABLE 문에서 FOREIGN KEY 키워드를 통해 외래 키를 지정합니다.

(추천 학습: mysql 튜토리얼)

구체적인 구문 형식은 다음과 같습니다.

[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]

MySQL 외래 키 제약 조건(FOREIGN KEY)은 테이블의 특수 필드로, 기본 키 제약 조건과 함께 자주 사용됩니다.

연관 관계가 있는 두 테이블의 경우, 연관된 필드의 기본 키가 있는 테이블이 메인 테이블(상위 테이블)이고, 외래 키가 있는 테이블이 보조 테이블(자식 테이블)입니다.

외래 키를 정의할 때 다음 규칙을 준수해야 합니다.

  • 메인 테이블은 데이터베이스에 이미 존재하거나 현재 생성 중인 테이블이어야 합니다. 후자의 경우 마스터 테이블과 슬레이브 테이블이 동일한 테이블인 경우, 이러한 테이블을 자기 참조 테이블이라고 하며, 이러한 구조를 자기 참조 무결성이라고 합니다. 기본 테이블에 대해 기본 키를 정의해야 합니다.

  • 기본 키에는 null 값이 포함될 수 없지만 외래 키에는 null 값이 허용됩니다. 즉, null이 아닌 모든 외래 키 값이 지정된 기본 키에 나타나는 한 외래 키의 내용은 정확합니다.

  • 메인 테이블의 테이블 이름 뒤에 컬럼 이름을 지정하거나 컬럼 이름의 조합을 지정하세요. 이 열 또는 열 조합은 기본 테이블의 기본 키 또는 후보 키여야 합니다.

  • 외래 키의 열 수는 기본 테이블의 기본 키의 열 수와 동일해야 합니다.

  • 외래 키에 있는 열의 데이터 유형은 기본 테이블의 기본 키에 있는 해당 열의 데이터 유형과 동일해야 합니다.

예:

테이블 간의 외래 키 관계를 표시하기 위해 이 예에서는 test_db 데이터베이스에 부서 테이블 tb_dept1을 생성합니다. 테이블 구조는 다음 표와 같습니다.

mysql에서 외래 키 제약 조건을 작성하는 방법

tb_dept1을 생성한 SQL 문과 실행 결과는 다음과 같습니다.

mysql> CREATE TABLE tb_dept1
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(22) NOT NULL,
    -> location VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.37 sec)

데이터 테이블 tb_emp6을 생성하고, tb_emp6 테이블에 외래 키 제약 조건을 생성하여 해당 키 deptId가 테이블 tb_dept1의 기본 키 id와 외래 키로 연결되도록 합니다. SQL 문 및 실행 결과는 다음과 같습니다. .

mysql> CREATE TABLE tb_emp6
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> CONSTRAINT fk_emp_dept1
    -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
    -> );
Query OK, 0 rows affected (0.37 sec)

mysql> DESC tb_emp6;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  | MUL | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (1.33 sec)

위 명령문이 성공적으로 실행되면 fk_emp_dept1이라는 외래 키 제약 조건이 테이블 tb_emp6에 추가됩니다. 외래 키 이름은 deptId이며 이는 테이블 tb_dept1의 기본 키 ID에 따라 달라집니다.

참고: 보조 테이블의 외래 키는 기본 테이블의 기본 키와 관련되어야 하며 기본 키와 외래 키의 데이터 유형이 일치해야 합니다. 예를 들어, 둘 다 INT 유형이거나 둘 다 CHAR 유형입니다. 이러한 요구 사항이 충족되지 않으면 슬레이브 테이블 생성 시 "ERROR 1005 (HY000): Can't create table" 오류가 발생합니다.

위 내용은 mysql에서 외래 키 제약 조건을 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.