SQL - JOIN

SQL - JOIN

์˜ˆ์‹œ ํ…Œ์ด๋ธ”

  • course

image-20221117122522246
  • prereq

image-20221117122531879
CREATE DATABASE join_db;

USE join_db;

CREATE TABLE course(
    course_id varchar(20),
    title varchar(20),
    dept_name varchar(20),
    credits int,
    PRIMARY KEY (course_id)
);

INSERT INTO course values('CS-101', '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค', '์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€', 3);
INSERT INTO course values('CS-103', '๋ฐ์ดํ„ฐ์‚ฌ์ด์–ธ์Šค๊ฐœ๋ก ', '์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€', 3);
INSERT INTO course values('CS-105', '์ž๋ฃŒ๊ตฌ์กฐ', '์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€', 3);
INSERT INTO course values('CS-201', '์•Œ๊ณ ๋ฆฌ์ฆ˜', '์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€', 3);
INSERT INTO course values('CS-303', '์ปดํ“จํ„ฐ๊ณตํ•™์„ธ๋ฏธ๋‚˜', '์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€', 1);

CREATE TABLE prereq(
    course_id varchar(20),
    prereq_id varchar(20),
    PRIMARY KEY (course_id, prereq_id)
);

INSERT prereq values('CS-201', 'CS-101');
INSERT prereq values('CS-201', 'CS-105');
INSERT prereq values('CS-204', 'CS-105');

INNER JOIN

  • ๊ต์ง‘ํ•ฉ์œผ๋กœ, ๊ธฐ์ค€ ํ…Œ์ด๋ธ”๊ณผ join ํ…Œ์ด๋ธ”์˜ ์ค‘๋ณต๋œ ๊ฐ’์„ ๋ณด์—ฌ์ค€๋‹ค.

img
SELECT c.course_id, title, dept_name, credits, p.prereq_id
FROM course c join prereq p on c.course_id = p.course_id;
image-20221117122954379

LEFT OUTER JOIN

  • ์™ผ์ชฝ ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ joinํ•ด์„œ, ์™ผ์ชฝ ํ…Œ์ด๋ธ”์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.

img
image-20221117123338920
SELECT c.course_id, title, dept_name, credits, p.prereq_id
FROM course c LEFT JOIN prereq p on c.course_id = p.course_id

RIGHT OUTER JOIN

img
image-20221117123427343
SELECT c.course_id, title, dept_name, credits, p.prereq_id
FROM course c RIGHT JOIN prereq p on c.course_id = p.course_id;

FULL OUTER JOIN

  • ํ•ฉ์ง‘ํ•ฉ์œผ๋กœ, join์—์„œ ๋น ์ง„ ๋ฐ์ดํ„ฐ๋„ null์„ ์ด์šฉํ•ด์„œ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฒ€์ƒ‰๋œ๋‹ค.

img
image-20221117123456672
SELECT c.course_id, title, dept_name, credits, p.prereq_id
FROM course c LEFT JOIN prereq p on c.course_id = p.course_id
UNION
SELECT c.course_id, title, dept_name, credits, p.prereq_id
FROM course c RIGHT JOIN prereq p on c.course_id = p.course_id;

CROSS JOIN

  • ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํ‘œํ˜„ํ•ด์ค€๋‹ค. ๋”ฐ๋ผ์„œ (1๋ฒˆ ํ…Œ์ด๋ธ” row ๊ฐœ์ˆ˜)*(2๋ฒˆ ํ…Œ์ด๋ธ” row ๊ฐœ์ˆ˜) ๋งŒํผ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚œ๋‹ค.

img
image-20221117123646045
SELECT c.course_id, title, dept_name, credits, p.prereq_id
FROM course c CROSS JOIN prereq p;

SELECT c.course_id, title, dept_name, credits, p.prereq_id
FROM course c, prereq p;

SELF JOIN

  • ์ž๊ธฐ ์ž์‹ ๊ณผ ์ž๊ธฐ ์ž์‹ ์„ ์กฐ์ธํ•œ๋‹ค.

  • ์ž์‹ ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ์ปฌ๋Ÿผ์„ ๋ณ€ํ˜•์‹œ์ผœ ํ™œ์šฉํ•  ๋•Œ ํ™œ์šฉํ•œ๋‹ค.

img
image-20221117123835182
SELECT *
FROM course c1, course c2;
| | |

Last updated