pbj0812의 코딩 일기

[SQL] MySQL 외래키 지정하기 본문

ComputerLanguage_Program/SQL

[SQL] MySQL 외래키 지정하기

pbj0812 2020. 9. 13. 23:37

0. 목표

 - MySQL 내에서의 외래키 지정 및 테스트

1. 실습

 1) user 테이블 생성

  - ID를 pk로 지정

CREATE TABLE pbj_db.user 
(
	ID INT PRIMARY KEY,
    Name VARCHAR(30)
);

 2) 데이터 삽입

INSERT INTO pbj_db.user(ID, Name) VALUES(1, 'a');
INSERT INTO pbj_db.user(ID, Name) VALUES(2, 'b');
INSERT INTO pbj_db.user(ID, Name) VALUES(3, 'c');

 3) 데이터 확인

SELECT * FROM pbj_db.user;

  - 결과

 4) order 테이블 생성

  - order_id 를 pk로 지정

  - ID를 외래키로 지정(user테이블의 ID와 연결)

CREATE TABLE pbj_db.order
(
	order_id INT PRIMARY KEY,
    amount DOUBLE,
    ID INT,
    FOREIGN KEY (ID) REFERENCES user (ID)
);

 5) 테스트

  (1) ID가 user 테이블에 있는 경우

   - 성공

INSERT INTO pbj_db.order(order_id, amount, ID) VALUES(1, 1500, 1);

  (2) ID가 user 테이블에 없는 경우

   - 에러 발생

INSERT INTO pbj_db.order(order_id, amount, ID) VALUES(2, 1500, 10);

  - 에러 메세지

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`pbj_db`.`order`, CONSTRAINT `order_ibfk_1` FOREIGN KEY (`ID`) REFERENCES `user` (`ID`))

2. 참고

 - 외래키 예제

 - PRIMARY KEY

 - 외래키 이해하기

Comments