>  기사  >  데이터 베이스  >  데이터 무결성을 유지하기 위해 MySQL에서 외래 키를 사용하는 방법은 무엇입니까?

데이터 무결성을 유지하기 위해 MySQL에서 외래 키를 사용하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-08-02 08:09:091386검색

데이터 무결성을 유지하기 위해 MySQL에서 외래 키를 사용하는 방법은 무엇입니까?

인용문:
데이터베이스에서는 데이터 무결성이 매우 중요합니다. 외래 키를 사용하여 데이터베이스의 관련 테이블 간에 데이터 일관성과 무결성이 유지되도록 합니다. 이 기사에서는 MySQL에서 데이터 무결성을 유지하기 위해 외래 키를 사용하는 방법을 소개합니다.

  1. 테이블 및 연결 만들기:

먼저 두 개의 테이블을 만들고 연결해야 합니다. 두 개의 테이블이 있다고 가정합니다. 하나는 "주문" 테이블이고 다른 하나는 "고객" 테이블입니다. 각 주문은 고객과 연결되어야 하며, 이 연결을 유지하기 위해 외래 키를 사용합니다.

"customers" 테이블을 생성하는 SQL 문은 다음과 같습니다.

CREATE TABLE customers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    email VARCHAR(100)
);

"orders" 테이블을 생성하는 SQL 문은 다음과 같습니다.

CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    order_date DATE,
    amount DECIMAL(10,2),
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(id)
);

위의 "orders" 테이블에 " customer_id" 열, 그리고 외래 키 제약 조건에 "customers" 테이블의 "id" 열을 사용했습니다.

  1. 데이터 삽입:

다음으로 "고객" 테이블과 "주문" 테이블에 일부 데이터를 삽입합니다. 다음은 일부 샘플 데이터에 대한 SQL 문입니다.

-- 插入customers表格的数据 --
INSERT INTO customers (name, email) VALUES ('张三', 'zhangsan@example.com');
INSERT INTO customers (name, email) VALUES ('李四', 'lisi@example.com');
INSERT INTO customers (name, email) VALUES ('王五', 'wangwu@example.com');

-- 插入orders表格的数据 --
INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-01', 100.00, 1);
INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-02', 200.00, 2);
INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-03', 300.00, 3);

위의 SQL 문에서는 외래 키와 연결된 "customers" 테이블의 "id" 값을 사용하여 주문 데이터를 삽입합니다.

  1. 외래 키의 제약 조건 및 유지 관리:

이제 외래 키의 제약 조건 및 유지 관리를 테스트해 보겠습니다. 다음 문을 실행하려고 합니다.

-- 尝试在orders表格中插入无效的customer_id值 --
INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-04', 400.00, 4);

외래 키 제약 조건으로 인해 이 삽입 작업은 오류 메시지와 함께 실패합니다.

MySQL에서는 "ON DELETE" 및 "ON UPDATE" 옵션을 사용하여 외래 키를 정의하여 관련 테이블의 행이 삭제되거나 업데이트될 때 수행해야 하는 작업을 지정할 수도 있습니다. 예는 다음과 같습니다.

-- 创建orders表格时定义外键的ON DELETE和ON UPDATE选项 --
CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    order_date DATE,
    amount DECIMAL(10,2),
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE ON UPDATE CASCADE
);

위 예에서는 외래 키에 "ON DELETE CASCADE" 및 "ON UPDATE CASCADE" 옵션을 설정했습니다. 즉, "customers" 테이블의 행이 삭제되거나 업데이트되면 관련된 "주문" 테이블의 모든 행도 이에 따라 삭제되거나 업데이트됩니다.

요약:

외래 키를 사용하면 데이터베이스의 관련 테이블 간의 데이터 일관성과 무결성을 보장할 수 있습니다. MySQL에서는 "FOREIGN KEY" 키워드를 사용하여 외래 키를 생성하고 데이터를 삽입하거나 업데이트할 때 제한할 수 있습니다. 또한, "ON DELETE" 및 "ON UPDATE" 옵션을 사용하여 관련 테이블에서 외래 키와 관련된 행이 삭제되거나 업데이트될 때 수행해야 하는 작업을 정의할 수 있습니다.

위 내용은 MySQL에서 외래 키를 사용하여 데이터 무결성을 유지하는 방법에 대한 소개입니다. 읽어 주셔서 감사합니다!

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

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