[Computer Science][Database] ๐Ÿ”— SQL JOIN: ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ์˜ ํ•ต์‹ฌ ๊ธฐ์ˆ !

๊น€์ƒ์šฑยท2024๋…„ 9์›” 22์ผ
0
post-thumbnail

๐Ÿ” JOIN์˜ ์ฃผ์š” ์ข…๋ฅ˜

  1. INNER JOIN (๋‚ด๋ถ€ ์กฐ์ธ)

    • ์„ค๋ช…: ๋‘ ํ…Œ์ด๋ธ”์˜ ๊ณตํ†ต๋œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœ, ๊ต์ง‘ํ•ฉ์„ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง•: ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฒฐ๊ณผ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ SQL ์ฝ”๋“œ:
      SELECT A.NAME, B.AGE  
      FROM EX_TABLE A  
      INNER JOIN JOIN_TABLE B  
      ON A.NO_EMP = B.NO_EMP;  
    • ๊ฒฐ๊ณผ: EX_TABLE๊ณผ JOIN_TABLE์˜ NO_EMP ์ปฌ๋Ÿผ์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’๋งŒ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค.
  2. LEFT OUTER JOIN (์™ผ์ชฝ ์™ธ๋ถ€ ์กฐ์ธ)

    • ์„ค๋ช…: ์™ผ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ๊ฐ€์ ธ์˜ค๊ณ , ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์€ Null๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.
    • ํŠน์ง•: ์™ผ์ชฝ ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ SQL ์ฝ”๋“œ:
      SELECT A.NAME, B.AGE  
      FROM EX_TABLE A  
      LEFT OUTER JOIN JOIN_TABLE B  
      ON A.NO_EMP = B.NO_EMP;  
    • ๊ฒฐ๊ณผ: EX_TABLE์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์™€ JOIN_TABLE์˜ ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค.
  3. RIGHT OUTER JOIN (์˜ค๋ฅธ์ชฝ ์™ธ๋ถ€ ์กฐ์ธ)

    • ์„ค๋ช…: ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ๊ฐ€์ ธ์˜ค๊ณ , ์™ผ์ชฝ ํ…Œ์ด๋ธ”์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์€ Null๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.
    • ํŠน์ง•: ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ SQL ์ฝ”๋“œ:
      SELECT A.NAME, B.AGE  
      FROM EX_TABLE A  
      RIGHT OUTER JOIN JOIN_TABLE B  
      ON A.NO_EMP = B.NO_EMP;  
    • ๊ฒฐ๊ณผ: JOIN_TABLE์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์™€ EX_TABLE์˜ ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค.
  4. FULL OUTER JOIN (์ „์ฒด ์™ธ๋ถ€ ์กฐ์ธ)

    • ์„ค๋ช…: ๋‘ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€, ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์€ Null๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. LEFT์™€ RIGHT OUTER JOIN์˜ ๊ฒฐํ•ฉ์ž…๋‹ˆ๋‹ค.
    • ํŠน์ง•: ๋‘ ํ…Œ์ด๋ธ”์˜ ํ•ฉ์ง‘ํ•ฉ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ SQL ์ฝ”๋“œ:
      SELECT A.NAME, B.AGE  
      FROM EX_TABLE A  
      FULL OUTER JOIN JOIN_TABLE B  
      ON A.NO_EMP = B.NO_EMP;  
    • ๊ฒฐ๊ณผ: EX_TABLE๊ณผ JOIN_TABLE์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋ฉฐ, ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์€ Null๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  5. CROSS JOIN (ํฌ๋กœ์Šค ์กฐ์ธ)

    • ์„ค๋ช…: ๋‘ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ์กฐํ•ฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง•: ํ–‰์˜ ๊ณฑ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธ‰๊ฒฉํžˆ ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ SQL ์ฝ”๋“œ:
      SELECT A.NAME, B.AGE  
      FROM EX_TABLE A  
      CROSS JOIN JOIN_TABLE B;  
    • ๊ฒฐ๊ณผ: EX_TABLE์˜ ๋ชจ๋“  ํ–‰๊ณผ JOIN_TABLE์˜ ๋ชจ๋“  ํ–‰์ด ์กฐํ•ฉ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  6. SELF JOIN (์ž๊ธฐ ์กฐ์ธ)

    • ์„ค๋ช…: ํ…Œ์ด๋ธ”์„ ์ž๊ธฐ ์ž์‹ ๊ณผ ์กฐ์ธํ•˜์—ฌ, ๋™์ผ ํ…Œ์ด๋ธ”์„ ๋ณต์‚ฌํ•ด ์—ฌ๋Ÿฌ ๋ฒˆ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ํŠน์ง•: ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์„ ๋‹ค์–‘ํ•˜๊ฒŒ ์กฐํ•ฉํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ SQL ์ฝ”๋“œ:
      SELECT A.NAME, B.AGE  
      FROM EX_TABLE A, EX_TABLE B;  
    • ๊ฒฐ๊ณผ: EX_TABLE์˜ ํ–‰์„ ์„œ๋กœ ์กฐ์ธํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์กฐํ•ฉ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฐ JOIN์˜ ํŠน์ง•์„ ์ดํ•ดํ•˜๊ณ  ์ƒํ™ฉ์— ๋งž๊ฒŒ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ด๋ณด์„ธ์š”! ๐Ÿ“Šโœจ

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