프로필 테이블 생성
create table tb_profile (
pro_idx bigint,
pro_age int,
pro_height int,
pro_weight double,
pro_mbti,
foreign key(pro_idx) references tb_member(mem_idx)
);
프로필 테이블 데이터 삽입
insert into tb_profile values(2, 20, 160, 50, 'esfp');
insert into tb_profile values(3, 27, 187, 73, 'istj');
insert into tb_profile values(5, 30, 170, 70, 'enfp');
멤버 테이블에 없는 인덱스번호 삽입 시
-- Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`aiclass`.`tb_profile`, CONSTRAINT `tb_profile_ibfk_1` FOREIGN KEY (`pro_idx`) REFERENCES `tb_member` (`mem_idx`))
-- tb_member의 8번 인덱스는 없으므로 에러(외래키 제약조건)
insert into tb_profile values(8, 28, 175, 75, 'intj');
조인(join)
- 데이터베이스 여러 테이블에서 가져온 레코드를 하나의 테이블이나 결과 집합으로 표현
select 컬럼명1, 컬럼명2 .. from 테이블1 [inner, left, right] join 테이블2 on
테이블1.공통컬럼명 = 테이블2.공통컬럼명 where 조건절;
✅ inner join(교집합)
select mem_idx, mem_userid, mem_name, mem_hp, mem_gender, pro_age, pro_mbti
from tb_member inner join tb_profile on tb_member.mem_idx = tb_profile.pro_idx;
✅ left join(테이블1 기준으로 테이블2를 조합하는 형태)
select mem_idx, mem_userid, mem_name, mem_hp, mem_gender, pro_age, pro_mbti
from tb_member left join tb_profile on tb_member.mem_idx = tb_profile.pro_idx;
-- (왼쪽 tb_member 테이블 기준. tb_profile의 없는 데이터는 null로 표시)
✅ right join(테이블2 기준으로 테이블1을 조합하는 형태)
select mem_idx, mem_userid, mem_name, mem_hp, mem_gender, pro_age, pro_mbti
from tb_member right join tb_profile on tb_member.mem_idx = tb_profile.pro_idx;
-- inner join과 같은 형태를 띔. (profile 테이블의 인덱스는 member테이블에 모두 존재하기 때문)
'SQL > mySQL' 카테고리의 다른 글
[mySQL] MySQL Workbench8.0 다운로드 (0) | 2022.06.21 |
---|---|
[mySQL] 데이터베이스, SQL 기본 문법, 집계함수 (0) | 2022.04.20 |
[mySQL] mySQL (0) | 2022.04.19 |