INSERT INTO students (first_name) VALUES
('Caleb'), ('Samantha'), ('Raj'), ('Carlos'), ('Lisa');
INSERT INTO papers (student_id, title, grade ) VALUES
(1, 'My First Book Report', 60),
(1, 'My Second Book Report', 75),
(2, 'Russian Lit Through The Ages', 94),
(2, 'De Montaigne and The Art of The Essay', 98),
(4, 'Borges and Magical Realism', 89);
먼저 데이터를 입력해줍니다.
students테이블은 id(int), first_name(varchar(45)) 이고
papers테이블은 id(int), title(varchar(100)), grade(int), student_id(int)
foreign keys로 students의 id와 papers의 student_id를 연결했습니다.
두 테이블을 합쳐봅니다.
join의 기본값이 right join이기 때문에 right는 작정 안하셔도 됩니다.
select students.first_name,papers.title,papers.grade
from papers
join students -- join하기
on students.id = papers.student_id -- 중복되지 않게 이어주기
order by grade desc; -- 점수가 높은 순으로 정렬
이렇게 join을 하시면 두 테이블에 일치하는 값만 출력하게 됩니다.
나머지 2명이 안보이죠?
이럴때 left join을 하면 됩니다.
select first_name,title,grade
from students
left join papers
on students.id = papers.student_id;
left join을 하시면 두 테이블간에 없는 값 null값도 출력하게 됩니다.
null값을 다른 문자열로 출력 하고 싶을땐
ifnull을 사용하시면 됩니다.
select s.first_name,
ifnull(p.title,'MISSING') as title,
ifnull(p.grade,0) as grade -- null이면 missing으로 출력해라
from students s -- 이렇게 테이블 이름을 줄일 수도 있습니다. students = s
left join papers p -- 이렇게 테이블 이름을 줄일 수도 있습니다. papers = p
on s.id = p.student_id; -- 줄인 테이블 명으로 설정
ifnull( 테이블명 . 컬럼명 , '변경할 문자 또는 숫자' )
'MySQL' 카테고리의 다른 글
MySQL WorkBench 에 AWS DB 설정하기 (0) | 2022.02.04 |
---|---|
MySQL의 조건문 case와 if문 사용하기 (0) | 2021.12.16 |
MySQL의 foreign keys 설정하기 (0) | 2021.12.13 |
MySQL의 테이블 코딩 작성하기 create table (0) | 2021.12.10 |
MySQL의 date_format, 시간차이 datediff, 날짜 더하기date_add 사용하기 (0) | 2021.12.09 |