<์์ฝ ์ค๋ช >
- ON ์
- ์กฐ์ธํ ์ด ์ด๋ฆ์ด ๋ค๋ฅผ ๋ ์ฌ์ฉ
- ์ถ๊ฐ์ ์ธ ํํฐ๋ง ๋ก์ง์ด ํ์ํ ๋ (e.g AND, OR)
- ๋ ๋ณต์กํ ์ฟผ๋ฆฌ์์ ์กฐ๊ฑด ๋ ผ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ
- USING ์
- ์กฐ์ธํ ์ด ์ด๋ฆ์ด ๋์ผํ๊ณ ๋จ์์ฑ์ ์ํ ๋
- ๊ฐ๋จํ๊ณ ๋ช ํํ ์กฐ์ธ ์๋๋ฆฌ์ค์์
- ์ผ๋ฐ์ ์ผ๋ก ์ ์ต์ ํ๋ SQL์๋ฒ์์ ON๊ณผ USING ๊ฐ์ ์ฑ๋ฅ์ฐจ์ด๋ ํฌ์ง ์๋ค๊ณ ํ๋ค.
< ์์ธ ์ค๋ช >
์ฐ์ ON์ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
SELECT I.NAME, I.ANIMAL_TYPE
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID
๊ทธ๋ฆฌ๊ณ USING์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๊ฐ ๋๋ค.
SELECT I.NAME, I.ANIMAL_TYPE
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O USING (ANIMAL_ID)
๋ ๋ค ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ง๋ง, ๋ค์๊ณผ ๊ฐ์ ์ฐจ์ด๊ฐ ์๋ค.
- USING
- ์ฐ๊ฒฐํ๋ ค๋ ํ ์ด๋ธ์ ํค์ ํด๋นํ๋ ์ปฌ๋ผ ๋ช ์ด ์ผ์นํด์ผํ๋ค.
- ๋ค์ ์ถ๊ฐ์ ์ผ๋ก AND ์กฐ๊ฑด์ ๋ถ์ผ ์ ์๋ค.
๋ ๋ฒ์งธ AND ์กฐ๊ฑด์ ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค.
-- USING
SELECT I.NAME, I.ANIMAL_TYPE, O.DATETIME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O USING (ANIMAL_ID)
WHERE DATE_FORMAT(O.DATETIME, '%Y-%m') > 2016-04
-- ON
SELECT I.NAME, I.ANIMAL_TYPE, O.DATETIME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID AND DATE_FORMAT(O.DATETIME, '%Y-%m') > 2016-04
ORDER BY O.DATETIME
JOIN ๋ค์ AND๋ฅผ ํตํด ๋ค๋ฅธ ์กฐ๊ฑด์ ์ถ๊ฐ์ ์ผ๋ก ๋ถ์ด๊ณ ์ถ์ ๊ฒฝ์ฐ,
ON์ ๊ทธ๋๋ก AND ์กฐ๊ฑด์ ์ธ ์ ์์ง๋ง USING์ ๊ฒฝ์ฐ WHERE์ ์ ํตํด ๊ตฌํํด์ผํ๋ค.
๋ํ ๋์ ๊ฒฐ๊ณผ๊ฐ ์ญ์ ์๋์ ๊ฐ์ด ์ฐจ์ด๊ฐ ์๋ค.


- USING -> WHERE์ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ NULL์ธ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฐ๊ณผ๊ฐ์ด ์ถ์ถ๋จ
- (๋ถ๊ฐ์ค๋ช ) SQL์์ NULL๊ฐ์ ์ด๋ ํ ๊ฐ๊ณผ๋ ๊ฐ์ง ์๋ค๋ ์ ์ด ํต์ฌ์ด๋ค. ๋ฐ๋ผ์ WHERE DATE_FORMAT(O.DATETIME, '%Y-%m') > 2016-04 ์์ DATETIME์ด NULL์ธ ๊ฒฝ์ฐ, ์ด ์กฐ๊ฑด์ FALSE๋ก ํ๊ฐ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก NULL์ธ ํ์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์์ ์ ์ธ ๋๋ค.
- ON -> NULL๊ฐ์ด์ธ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋๋ค.
๋ฐ๋ผ์ USING์ INNER JOIN์ ๊ฒฝ์ฐ์ ๊ถ์ฅ๋๋ค.
๋ํ ์ฑ๋ฅ์ ์ธ ๋น๊ต์์๋ ๋์ ์ฐจ์ด๊ฐ ๋ณ๋ก ์๋ค.
- ์ฒ๋ฆฌ ์๋: ์ผ๋ฐ์ ์ผ๋ก ์ ์ต์ ํ๋ SQL ์๋ฒ์์ ON๊ณผ USING ๊ฐ์ ์ฑ๋ฅ ์ฐจ์ด๋ ํฌ์ง ์์ผ๋ฉฐ, ๋ ์ฟผ๋ฆฌ๋ SQL ์ต์ ํ๊ธฐ์ ์ํด ๋น์ทํ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ก ๋ณํ๋๋ค.
- ์์คํ ๋ถ๋ด: ์์คํ ๋ถ๋ด์ ์ฟผ๋ฆฌ์ ๋ณต์ก์ฑ, ์ฌ์ฉ๋๋ ์ธ๋ฑ์ค ๋ฐ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ๊ณผ ๋ ๊ด๋ จ์ด ์์ผ๋ฉฐ, ON๊ณผ USING์ ์ ํ์ ์ํ ๊ฒ์ ์๋๋ค.
- ๋ช ํ์ฑ ๋ฐ ์ ์ง๋ณด์: USING์ SQL ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค์ด ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ์ค์ด์ง๋ง, ON์ ๋ณต์กํ ์กฐ๊ฑด์ด ํ์ํ ๋ ์ ํธ๋๋ค.
'๐๏ธ ๋ฐ์ดํฐ ๋ถ์ > ๐ SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
COUNT OVER( )๋ก ๊ทธ๋ฃน๋ณ ์ง๊ณํ๊ธฐ (2) | 2024.12.14 |
---|---|
์์ํจ์ : ROW_NUMBER( ) ์ RANK( ), DENSE_RANK( ) ์ ๊ฐ๋ ๊ณผ ์ฐจ์ด (3) | 2024.12.14 |
DATE ๋ ์ง ํฌ๋งท ๊ด๋ จ ํจ์ : DATE_FORMAT (3) | 2024.12.08 |
์ฝ๋ฉํ ์คํธ ๋๋น ํจ์ ๋ชจ์ (MYSQL) (1) | 2024.12.08 |
์ ๊ทํํ์ SQL์์ ํ์ฉํ๊ธฐ (1) | 2024.12.07 |