MYSQL - JOIN
まず2つのJOINサンプルテーブルを設定します.
白芸琳、リル男の子の歌手.id付きsongはないので現れません.
CREATE TABLE singer(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(40) NOT NULL,
birth DATE NOT NULL
);
CREATE TABLE song(
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(40) NOT NULL,
singer_id INT NOT NULL ,
FOREIGN KEY(singer_id) REFERENCES singer(id)
);
INSERT INTO singer (name, birth) VALUES ('아이유', '1993-05-16');
INSERT INTO singer (name, birth) VALUES ('로꼬', '1989-12-25');
INSERT INTO singer (name, birth) VALUES ('볼빨간 사춘기', '1995-09-14');
INSERT INTO singer (name, birth) VALUES ('백예린', '1997-06-26');
INSERT INTO singer (name, birth) VALUES ('박재범', '1987-04-25');
INSERT INTO singer (name, birth) VALUES ('릴보이', '1991-06-07');
INSERT INTO singer (name, birth) VALUES ('태연', '1989-03-09');
INSERT INTO singer (name, birth) VALUES ('딘', '1992-11-10');
INSERT INTO singer (name, birth) VALUES ('크러쉬', '1992-05-03');
INSERT INTO singer (name, birth) VALUES ('장범준', '1989-05-16');
INSERT INTO song (title, singer_id) VALUES ('밤편지', 1);
INSERT INTO song (title, singer_id) VALUES ('블루밍', 1);
INSERT INTO song (title, singer_id) VALUES ('가을 아침', 1);
INSERT INTO song (title, singer_id) VALUES ('감아', 2);
INSERT INTO song (title, singer_id) VALUES ('시간이 들겠지', 2);
INSERT INTO song (title, singer_id) VALUES ('카운슬링', 3);
INSERT INTO song (title, singer_id) VALUES ('우주를 줄게', 3);
INSERT INTO song (title, singer_id) VALUES ('나만 봄', 3);
INSERT INTO song (title, singer_id) VALUES ('좋아', 5);
INSERT INTO song (title, singer_id) VALUES ('사계', 7);
INSERT INTO song (title, singer_id) VALUES ('D', 8);
INSERT INTO song (title, singer_id) VALUES ('가끔', 9);
INSERT INTO song (title, singer_id) VALUES ('여수밤바다', 10);
INSERT INTO song (title, singer_id) VALUES ('잠이오질않네요', 10);
SELECT *FROM singer;
+----+---------------+------------+
| id | name | birth |
+----+---------------+------------+
| 1 | 아이유 | 1993-05-16 |
| 2 | 로꼬 | 1989-12-25 |
| 3 | 볼빨간 사춘기 | 1995-09-14 |
| 4 | 백예린 | 1997-06-26 |
| 5 | 박재범 | 1987-04-25 |
| 6 | 릴보이 | 1991-06-07 |
| 7 | 태연 | 1989-03-09 |
| 8 | 딘 | 1992-11-10 |
| 9 | 크러쉬 | 1992-05-03 |
| 10 | 장범준 | 1989-05-16 |
+----+---------------+------------+
SELECT *FROM song;
+----+----------------+-----------+
| id | title | singer_id |
+----+----------------+-----------+
| 1 | 밤편지 | 1 |
| 2 | 블루밍 | 1 |
| 3 | 가을 아침 | 1 |
| 4 | 감아 | 2 |
| 5 | 시간이 들겠지 | 2 |
| 6 | 카운슬링 | 3 |
| 7 | 우주를 줄게 | 3 |
| 8 | 나만 봄 | 3 |
| 9 | 좋아 | 5 |
| 10 | 사계 | 7 |
| 11 | D | 8 |
| 12 | 가끔 | 9 |
| 13 | 여수밤바다 | 10 |
| 14 | 잠이오질않네요 | 10 |
+----+----------------+-----------+
INNER JOIN
SELECT singer.id, singer.name, singer.birth, song.title
FROM singer
JOIN song
ON singer.id = song.singer_id;
+----+---------------+------------+----------------+
| id | name | birth | title |
+----+---------------+------------+----------------+
| 1 | 아이유 | 1993-05-16 | 밤편지 |
| 1 | 아이유 | 1993-05-16 | 블루밍 |
| 1 | 아이유 | 1993-05-16 | 가을 아침 |
| 2 | 로꼬 | 1989-12-25 | 감아 |
| 2 | 로꼬 | 1989-12-25 | 시간이 들겠지 |
| 3 | 볼빨간 사춘기 | 1995-09-14 | 카운슬링 |
| 3 | 볼빨간 사춘기 | 1995-09-14 | 우주를 줄게 |
| 3 | 볼빨간 사춘기 | 1995-09-14 | 나만 봄 |
| 5 | 박재범 | 1987-04-25 | 좋아 |
| 7 | 태연 | 1989-03-09 | 사계 |
| 8 | 딘 | 1992-11-10 | D |
| 9 | 크러쉬 | 1992-05-03 | 가끔 |
| 10 | 장범준 | 1989-05-16 | 여수밤바다 |
| 10 | 장범준 | 1989-05-16 | 잠이오질않네요 |
+----+---------------+------------+----------------+
WHEREはONではなく使用できます.白芸琳、リル男の子の歌手.id付きsongはないので現れません.
LEFT JOIN, RIGHT JOIN
LEFT JOIN
SELECT singer.id, singer.name, singer.birth, song.title
FROM singer
LEFT OUTER JOIN song
ON singer.id = song.singer_id;
+----+---------------+------------+----------------+
| id | name | birth | title |
+----+---------------+------------+----------------+
| 1 | 아이유 | 1993-05-16 | 밤편지 |
| 1 | 아이유 | 1993-05-16 | 블루밍 |
| 1 | 아이유 | 1993-05-16 | 가을 아침 |
| 2 | 로꼬 | 1989-12-25 | 감아 |
| 2 | 로꼬 | 1989-12-25 | 시간이 들겠지 |
| 3 | 볼빨간 사춘기 | 1995-09-14 | 카운슬링 |
| 3 | 볼빨간 사춘기 | 1995-09-14 | 우주를 줄게 |
| 3 | 볼빨간 사춘기 | 1995-09-14 | 나만 봄 |
| 4 | 백예린 | 1997-06-26 | <null> |
| 5 | 박재범 | 1987-04-25 | 좋아 |
| 6 | 릴보이 | 1991-06-07 | <null> |
| 7 | 태연 | 1989-03-09 | 사계 |
| 8 | 딘 | 1992-11-10 | D |
| 9 | 크러쉬 | 1992-05-03 | 가끔 |
| 10 | 장범준 | 1989-05-16 | 여수밤바다 |
| 10 | 장범준 | 1989-05-16 | 잠이오질않네요 |
+----+---------------+------------+----------------+
RIGHT JOIN
SELECT song.id, song.title, singer.name, singer.birth
FROM singer
RIGHT OUTER JOIN song
ON singer.id = song.singer_id;
+----+----------------+---------------+------------+
| id | title | name | birth |
+----+----------------+---------------+------------+
| 1 | 밤편지 | 아이유 | 1993-05-16 |
| 2 | 블루밍 | 아이유 | 1993-05-16 |
| 3 | 가을 아침 | 아이유 | 1993-05-16 |
| 4 | 감아 | 로꼬 | 1989-12-25 |
| 5 | 시간이 들겠지 | 로꼬 | 1989-12-25 |
| 6 | 카운슬링 | 볼빨간 사춘기 | 1995-09-14 |
| 7 | 우주를 줄게 | 볼빨간 사춘기 | 1995-09-14 |
| 8 | 나만 봄 | 볼빨간 사춘기 | 1995-09-14 |
| 9 | 좋아 | 박재범 | 1987-04-25 |
| 10 | 사계 | 태연 | 1989-03-09 |
| 11 | D | 딘 | 1992-11-10 |
| 12 | 가끔 | 크러쉬 | 1992-05-03 |
| 13 | 여수밤바다 | 장범준 | 1989-05-16 |
| 14 | 잠이오질않네요 | 장범준 | 1989-05-16 |
+----+----------------+---------------+------------+
Reference
この問題について(MYSQL - JOIN), 我々は、より多くの情報をここで見つけました https://velog.io/@jinukix/MYSQL-JOINテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol