๐Ÿฆญ JOIN

๋‚˜๋‚˜'s Brainยท2024๋…„ 7์›” 8์ผ

MariaDB

๋ชฉ๋ก ๋ณด๊ธฐ
5/15
post-thumbnail

๐Ÿ“ JOIN

๐Ÿ’ก JOIN์€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ๊ด€๋ จ์žˆ๋Š” ์ปฌ๋Ÿผ์„ ํ†ตํ•ด ๊ฒฐํ•ฉํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์€ ๋ฐ˜๋“œ์‹œ ์—ฐ๊ด€์žˆ๋Š” ์ปฌ๋Ÿผ์ด ์กด์žฌํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด JOIN๋œ ํ…Œ์ด๋ธ”๋“ค์˜ ์ปฌ๋Ÿผ์„ ๋ชจ๋‘ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ”– ALIAS

SQL๋ฌธ์˜ ์ปฌ๋Ÿผ ๋˜๋Š” ํ…Œ์ด๋ธ”์— ๋ณ„์นญ์„ ๋‹ฌ์•„์ค„ ์ˆ˜ ์žˆ๋‹ค.
์ด๋Ÿฌํ•œ ๋ณ„์นญ์„ ALIAS๋ผ๊ณ  ํ•œ๋‹ค.

โžก๏ธ ์ปฌ๋Ÿผ ๋ณ„์นญ

resultSet์˜ ์ปฌ๋Ÿผ๋ช…์ด ๋ณ„์นญ์œผ๋กœ ๋ฐ”๋€œ
๋ณ„์นญ์— ๋„์–ด์“ฐ๊ธฐ๋‚˜ ํŠน์ˆ˜๊ธฐํ˜ธ๊ฐ€ ์—†๋‹ค๋ฉด ํ™‘๋”ฐ์˜ดํ‘œ(')์™€ AS๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค.

    SELECT
           menu_code AS 'code'
         , menu_name AS name
         , menu_price 'price'
      FROM tbl_menu
     ORDER BY price;

์‹คํ–‰๊ฒฐ๊ณผ

โžก๏ธ ํ…Œ์ด๋ธ” ๋ณ„์นญ

ํ…Œ์ด๋ธ”์— ๋ณ„์นญ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์–ด๋–ค ํ…Œ์ด๋ธ” ์†Œ์†์ธ์ง€๋ฅผ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
ํ…Œ์ด๋ธ” ๋ณ„์นญ์€ AS๋ฅผ ์จ๋„ ๋˜๊ณ  ์ƒ๋žต๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

    SELECT
           a.category_code
         , a.menu_name
    --   FROM tbl_menu AS a
      FROM tbl_menu a
     ORDER BY a.category_code, a.menu_name;

์‹คํ–‰๊ฒฐ๊ณผ


๐Ÿ”– JOIN์˜ ์ข…๋ฅ˜

๐Ÿ—๏ธ 1) INNER JOIN

๋‘ ํ…Œ์ด๋ธ”์˜ ๊ต์ง‘ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” SQL JOIN ์œ ํ˜•
INNER JOIN์—์„œ INNER ํ‚ค์›Œ๋“œ๋Š” ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

โžก๏ธ ON์„ ํ™œ์šฉํ•œ JOIN
์ปฌ๋Ÿผ๋ช…์ด ๊ฐ™๊ฑฐ๋‚˜ ๋‹ค๋ฅผ ๊ฒฝ์šฐ ON์œผ๋กœ ์„œ๋กœ ์—ฐ๊ด€์žˆ๋Š” ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ์ž‘์„ฑํ•˜์—ฌ JOINํ•˜๋Š” ๊ฒฝ์šฐ

    SELECT
           a.menu_name
         , b.category_name
    
      FROM tbl_menu a
    --  INNER JOIN tbl_category b ON a.category_code = b.category_code;
      JOIN tbl_category b ON a.category_code = b.category_code;

โžก๏ธ USING์„ ํ™œ์šฉํ•œ JOIN
์ปฌ๋Ÿผ๋ช…์ด ๊ฐ™์„ ๊ฒฝ์šฐ USING์œผ๋กœ ์„œ๋กœ ์—ฐ๊ด€์žˆ๋Š” ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ์ž‘์„ฑํ•˜์—ฌ JOINํ•˜๋Š” ๊ฒฝ์šฐ

    SELECT
           a.menu_name
         , b.category_name
      FROM tbl_menu a
    --  INNER JOIN tbl_category b USING (category_code);
      JOIN tbl_category b USING (category_code);

๐Ÿšจ ์‹คํ–‰๊ฒฐ๊ณผ
: on๊ณผ using ๋‘˜๋‹ค ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์Œ


๐Ÿ—๏ธ 2) LEFT JOIN

์ฒซ ๋ฒˆ์งธ(์™ผ์ชฝ) ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์™€ ๋‘ ๋ฒˆ์งธ(์˜ค๋ฅธ์ชฝ) ํ…Œ์ด๋ธ”์—์„œ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” SQL JOIN ์œ ํ˜•

    SELECT
           a.menu_name
         , b.category_name
      FROM tbl_menu a
      LEFT JOIN tbl_category b ON a.category_code = b.category_code;

์‹คํ–‰๊ฒฐ๊ณผ


๐Ÿ—๏ธ 3) RIGHT JOIN

๋‘ ๋ฒˆ์งธ(์˜ค๋ฅธ์ชฝ) ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์™€ ์ฒซ ๋ฒˆ์งธ(์™ผ์ชฝ) ํ…Œ์ด๋ธ”์—์„œ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” SQL JOIN ์œ ํ˜•

```sql
SELECT                                                          
       a.menu_name                                              
     , b.category_name                                          
  FROM tbl_menu a                                               
 RIGHT JOIN tbl_category b ON a.category_code = b.category_code;
```

์‹คํ–‰๊ฒฐ๊ณผ


๐Ÿ—๏ธ 4) CROSS JOIN

๋‘ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์กฐํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” SQL JOIN ์œ ํ˜•

    SELECT
           a.menu_name
         , b.category_name
      FROM tbl_menu a
     CROSS JOIN tbl_category b;

์‹คํ–‰๊ฒฐ๊ณผ


๐Ÿ—๏ธ 5) SELF JOIN

๊ฐ™์€ ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ํ–‰๊ณผ ํ–‰ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” SQL JOIN ์œ ํ˜•
์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋Œ€๋ถ„๋ฅ˜ ํ™•์ธ์„ ์œ„ํ•œ SELF JOIN ์กฐํšŒ

    SELECT
           a.category_name
         , b.category_name
      FROM tbl_category a
      JOIN tbl_category b ON a.ref_category_code = b.category_code
     WHERE a.ref_category_code IS NOT NULL;

์‹คํ–‰๊ฒฐ๊ณผ

profile
"๋กœ์ปฌ์—์„  ๋ฌธ์ œ์—†์—ˆ๋Š”๋ฐโ€ฆ?"

0๊ฐœ์˜ ๋Œ“๊ธ€