예제
customers 테이블 세팅
order 테이블 세팅
insert into customers (first_name, last_name, email)
values ('Boy', 'George', 'george@gmail.com'),
('George', 'Michael', 'gm@gmail.com'),
('David', 'Bowie', 'david@gmail.com'),
('Blue', 'Steele', 'blue@gmail.com'),
('Bette', 'Davis', 'bette@aol.com');
insert into orders (order_date, amount, customer_id)
values ('2016/02/10', 99.99, 1),
('2017/11/11', 35.50, 1),
('2014/12/12', 800.67, 2),
('2015/01/03', 12.50, 2),
('1999/04/11', 450.25, 5);
지금 입력한 데이터가 고객데이터입니다.
하지만 foreign keys를 설정하지 않고 ordes 테이블에 데이터를 insert into 를 하게 되면 유령회원이 생기게 됩니다.
(주인 없는 customer 또는 orders가 생기게 됩니다.)
그래서 orders의 customer_id 컬럼과 customer의 id를 연결해줍니다.
create table orders(
id int auto_increment primary key,
order_date date,
amount decimal(8,2),
customer_id int unsigned,
foreign key(customer_id) references customers(id) -- foreign key설정
);
workbench로 설정하기
먼저 연결할 테이블 alter table에 들어갑니다.
unsigned는 꼭 체크가 되어있어야합니다(customer의 id가 프라이머리 key로써 unsigned가 체크되어있기 때문)
이렇게 order의 customer_id와 customer의 id를 묶어줍니다.
select *
from customers,orders
where customers.id = orders.customer_id;
두 테이블을 where문으로 order의 customer_id와 customer의 id가 같다고 설정해주고 출력하면 중복이나
유령회원 데이터 없이 나옵니다.
'MySQL' 카테고리의 다른 글
MySQL의 조건문 case와 if문 사용하기 (0) | 2021.12.16 |
---|---|
MySQL의 테이블 합치기 inner join, outer join(right, left)와 ifnull 이용해 null값 변경 (0) | 2021.12.16 |
MySQL의 테이블 코딩 작성하기 create table (0) | 2021.12.10 |
MySQL의 date_format, 시간차이 datediff, 날짜 더하기date_add 사용하기 (0) | 2021.12.09 |
MySQL의 현재 Datetime 정보 가져오는 함수 curdate(), curtime(),now() (0) | 2021.12.09 |