>데이터 베이스 >MySQL 튜토리얼 >mysql에서 외래 키를 생성하고 쿼리하는 방법

mysql에서 외래 키를 생성하고 쿼리하는 방법

PHPz
PHPz앞으로
2023-05-30 21:55:303989검색

1. 외래 키란 무엇인가요?

외래 키는 테이블에 있는 하나 이상의 열입니다. 이 열의 값이 다른 테이블이나 열의 데이터와 일치해야 함을 지정하는 데 사용됩니다. 다른 테이블에서는 기본 키가 일치합니다. 이 일치하는 테이블을 참조 테이블이라고 합니다. 외래 키는 둘 이상의 테이블을 조인하는 데 사용되는 관계형 데이터베이스의 메커니즘입니다.

외래 키의 목적은 데이터 무결성과 일관성을 보장하는 것입니다. 테이블에 데이터 행을 추가할 때, 이 데이터가 다른 테이블의 일부 데이터와 일치해야 하는 경우, 일치 관계가 외래 키를 통해 설정되면 MySQL은 새로 추가된 데이터의 외래 키를 확인합니다. 참조된 테이블에 데이터가 있으면 테이블에 데이터를 삽입하는 것을 거부합니다.

2. 외래 키를 생성하는 방법

MySQL에서 외래 키를 생성하는 방법에는 여러 가지가 있습니다. 다음은 두 가지 일반적인 방법입니다.

1. ALTER TABLE 문을 사용하세요.

ALTER TABLE 문을 통해 외래 키를 추가하는 구문 형식은 다음과 같습니다.

ALTER TABLE 테이블 이름 ADD CONSTRAINT 외래 키 이름 FOREIGN KEY(열 이름) REFERENCES 테이블 이름(열 이름) ) of another table ;

그 중 외래키 이름은 외래키에 부여된 이름으로, 이 이름은 다른 테이블의 컬럼명을 참조한다. table은 각각 참조된 테이블의 이름과 열 이름입니다.

예를 들어 직원 테이블(employees)과 부서 테이블(departments)이 외래 키를 통해 연결되어 있습니다. 이 외래 키를 생성하려면 다음 SQL 문을 사용하세요.

ALTER TABLE employees ADD CONSTRAINT dept_fk FOREIGN KEY (dept_id) REFERENCES departments (dept_id);

이 문은 직원 테이블(employees)에 dept_fk라는 외래 키를 추가한다는 의미입니다. dept_fk는 부서 테이블의 dept_id 열을 참조하는 직원 테이블의 dept_id 열을 가리킵니다.

2. 테이블 생성 시 외래 키 정의

테이블 생성 시 외래 키를 정의하는 것도 일반적인 방법입니다. 구문 형식은 다음과 같습니다.

CREATE TABLE 表名 (
列名 数据类型,
外键名称 FOREIGN KEY (列名) REFERENCES 另一个表格的表名 (列名)
);

예를 들어 직원 테이블(employees)과 부서 테이블(departments)을 생성하고 dept_id 열을 직원 테이블의 외래 키로 사용하여 부서의 dept_id 열을 연결하는 경우입니다. 테이블에서는 다음 SQL 문을 사용할 수 있습니다.

CREATE TABLE employees (
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
dept_id INT,
PRIMARY KEY (id),
FOREIGN KEY (dept_id) REFERENCES departments (dept_id)
)

3. 외래 키를 쿼리하는 방법

MySQL에 외래 키가 설정되면 MySQL 쿼리 문을 사용하여 쿼리할 수 있습니다. 외래 키를 쿼리하는 구문 형식은 다음과 같습니다.

SELECT * FROM 表名 WHERE 列名 IS NULL;

이 문은 테이블에 빈 열 이름이 있는 데이터를 반환합니다. 이 열이 외래 키로 정의된 경우 쿼리 결과는 테이블에 일치하는 행이 없다는 것입니다. 외래 키 데이터로. 이 쿼리의 결과는 정확하게 일치하지 않아 수동으로 해결해야 하는 레코드를 확인하는 데 매우 유용합니다.

예를 들어, Departments 테이블이 있고 해당 dept_id 열이 외래 키로 정의되어 있습니다. Departments 테이블과 일치하지 않는 레코드를 쿼리하려면 다음 SQL 문을 사용할 수 있습니다.

SELECT * FROM departments WHERE dept_id NOT IN (SELECT dept_id FROM employees);

의미 예, 직원 테이블에 포함되지 않은 부서 테이블의 dept_id 데이터를 쿼리합니다.

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

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