JOIN
์ ๋ ๊ฐ ์ด์์ ํ
์ด๋ธ์ ์กฐํํ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉํด ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๊ตฌ๋ฌธ!
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ ๊ฐ์ ๊ฒฐํฉ์ ์๋ฏธํ๋ค.
์กฐ์ธ์ ํ ๋์๋ ๋๊ฐ ์ด์์ ํ
์ด๋ธ์ด ํ์ํ๋ฉฐ, ์ปฌ๋ผ ๊ฐ์ด ๊ฐ์ ๊ธฐ๋ณธํค์ ์ธ๋ํค๊ฐ ์ผ์นํ๋ ํ
์ด๋ธ์ด์ด์ผ ์กฐ์ธ์ด ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
์ฝ๋ฉํ
์คํธ์์ ๊ฐ์ฅ ๋ง์ด ์ถ์ ๋๋ ๋ถ๋ถ์ด๊ธฐ๋ ํจ !
LEFT JOIN
์ ํ
์ด๋ธ A๋ฅผ ๊ธฐ์ค์ผ๋ก ์กฐ์ธ
SELECT A.์ปฌ๋ผ 1
, ...
, B.์ปฌ๋ผ 1
, ...
FROM ํ
์ด๋ธ1 A
LEFT JOIN ํ
์ด๋ธ2 B
ON A.์ปฌ๋ผ1 = B.์ปฌ๋ผ1;
FROM
์ ์์ ๊ธฐ์ค์ด ๋๋ ํ
์ด๋ธ์ ์
๋ ฅํ๊ณ LEFT JOIN
์ ์์ ์กฐ์ธ๋๋ ํ
์ด๋ธ์ ์
๋ ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ ON
์ ์๋ ์ผ์น ์กฐ๊ฑด์ ์
๋ ฅํ์ฌ ํ
์ด๋ธA๊ณผ ํ
์ด๋ธB ์นผ๋ผ๊ฐ์ด ์ผ์นํ๋ ํ๋ง์ ์กฐํํ๋๋ก ํ๋ค.
์กฐํ ๊ฒฐ๊ณผ๋ก USER_ID
, QUEST_TITLE
์นผ๋ผ ์ค์์ T_USER
์ USER_ID
๊ฐ์ด T_QUEST
์ USER_ID
๊ฐ๊ณผ ์ผ์นํ๋ ํ์ด ์กฐํ๋๋ค.
RIGHT JOIN
์ ํ
์ด๋ธ B๋ฅผ ๊ธฐ์ค์ผ๋ก ์กฐ์ธ
SELECT A.์ปฌ๋ผ 1
, ...
, B.์ปฌ๋ผ 1
, ...
FROM ํ
์ด๋ธ1 A
RIGHT JOIN ํ
์ด๋ธ2 B
ON A.์ปฌ๋ผ1 = B.์ปฌ๋ผ1;
RIGHT JOIN
์์๋ T_USER
์ T_QUEST
์ ์
๋ ฅ ์์๋ฅผ ๋ฐ๊พธ๋ฉด LEFT JOIN
๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ์กฐํ๋๋ค
INNER JOIN
์ ๋ ํ
์ด๋ธ์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ๋ง ์กฐํํ๋ค.
SELECT A.์ปฌ๋ผ 1
, ...
, B.์ปฌ๋ผ 1
, ...
FROM ํ
์ด๋ธ1 A
INNER JOIN ํ
์ด๋ธ2 B
ON A.์ปฌ๋ผ1 = B.์ปฌ๋ผ1;
[WHERE ์กฐ๊ฑด]
โ๏ธ ๋ฌธ์ : ์ ์์ ๊ฐ ๊ธฐ๋ก์ ์๋๋ฐ(ANIMAL_OUTS), ๋ณดํธ์์ ๋ค์ด์จ ๊ธฐ๋ก(ANIMAL_INS)์ด ์๋ ๋๋ฌผ์ ID์ ์ด๋ฆ์ ID ์์ผ๋ก ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
SELECT
ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
FROM
ANIMAL_OUTS LEFT JOIN ANIMAL_INS
ON
ANIMAL_OUTS.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID
WHERE
ANIMAL_INS.ANIMAL_ID IS NULL
โ๏ธ ๋ฌธ์ : ๊ด๋ฆฌ์์ ์ค์๋ก ์ผ๋ถ ๋๋ฌผ์ ์ ์์ผ์ด ์๋ชป ์ ๋ ฅ๋์์ต๋๋ค. ๋ณดํธ ์์์ผ๋ณด๋ค ์ ์์ผ์ด ๋ ๋น ๋ฅธ ๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ๋ณดํธ ์์์ผ์ด ๋น ๋ฅธ ์์ผ๋ก ์กฐํํด์ผํฉ๋๋ค.
SELECT
ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
FROM
ANIMAL_OUTS INNER JOIN ANIMAL_INS
ON
ANIMAL_OUTS.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID
WHERE
ANIMAL_OUTS.DATETIME < ANIMAL_INS.DATETIME
ORDER BY
ANIMAL_INS.DATETIME ASC
โ๏ธ ๋ฌธ์ : ์์ง ์ ์์ ๋ชป ๊ฐ ๋๋ฌผ ์ค, ๊ฐ์ฅ ์ค๋ ๋ณดํธ์์ ์์๋ ๋๋ฌผ 3๋ง๋ฆฌ์ ์ด๋ฆ๊ณผ ๋ณดํธ ์์์ผ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ๋ณดํธ ์์์ผ ์์ผ๋ก ์กฐํํด์ผ ํฉ๋๋ค.
SELECT
ANIMAL_INS.NAME, ANIMAL_INS.DATETIME
FROM
ANIMAL_INS LEFT JOIN ANIMAL_OUTS
ON
ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
WHERE
ANIMAL_OUTS.ANIMAL_ID IS NULL
ORDER BY
ANIMAL_INS.DATETIME ASC LIMIT 3
โ๏ธ ๋ฌธ์ : ๋ณดํธ์์์ ์ค์ฑํ ์์ ์ ๊ฑฐ์น ๋๋ฌผ ์ ๋ณด๋ฅผ ์์๋ณด๋ ค ํฉ๋๋ค. ๋ณดํธ์์ ๋ค์ด์ฌ ๋น์์๋ ์ค์ฑํ๋์ง ์์์ง๋ง, ๋ณดํธ์๋ฅผ ๋๊ฐ ๋น์์๋ ์ค์ฑํ๋ ๋๋ฌผ์ ์์ด๋์ ์๋ฌผ ์ข
, ์ด๋ฆ์ ์กฐํํ๋ ์์ด๋ ์์ผ๋ก ์กฐํํ๋ SQL ๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
(๐ ํ : ์ค์ฑํ๋ฅผ ๊ฑฐ์น์ง ์์ ๋๋ฌผ์ ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ์ Intact, ์ค์ฑํ๋ฅผ ๊ฑฐ์น ๋๋ฌผ์ Spayed ๋๋ Neutered๋ผ๊ณ ํ์๋์ด ์์ต๋๋ค.)
SELECT ANIMAL_OUTS.ANIMAL_ID,
ANIMAL_OUTS.ANIMAL_TYPE,
ANIMAL_OUTS.NAME
FROM
ANIMAL_OUTS LEFT JOIN ANIMAL_INS
ON
ANIMAL_OUTS.ANIMAL_ID=ANIMAL_INS.ANIMAL_ID
WHERE ANIMAL_INS.SEX_UPON_INTAKE LIKE 'Intact%' AND
(ANIMAL_OUTS.SEX_UPON_OUTCOME LIKE 'Spayed%' OR
ANIMAL_OUTS.SEX_UPON_OUTCOME LIKE 'Neutered%')
ORDER BY ANIMAL_OUTS.ANIMAL_ID
๐ก
LIKE
ํค์๋๋ ๋ถ๋ถ์ ์ผ๋ก ์ผ์นํ๋ ์นผ๋ผ์ ์ฐพ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค
- --A๋ก ์์ํ๋ ๋ฌธ์๋ฅผ ์ฐพ๊ธฐ--
SELECT
์ปฌ๋ผ๋ชFROM
ํ ์ด๋ธWHERE
์ปฌ๋ผ๋ชLIKE
'A%'- --A๋ก ๋๋๋ ๋ฌธ์ ์ฐพ๊ธฐ--
SELECT
์ปฌ๋ผ๋ชFROM
ํ ์ด๋ธWHERE
์ปฌ๋ผ๋ชLIKE
'%A'- --A๋ฅผ ํฌํจํ๋ ๋ฌธ์ ์ฐพ๊ธฐ--
SELECT
์ปฌ๋ผ๋ชFROM
ํ ์ด๋ธWHERE
์ปฌ๋ผ๋ชLIKE
'%A%'- --A๋ก ์์ํ๋ ๋๊ธ์ ๋ฌธ์ ์ฐพ๊ธฐ--
SELECT
์ปฌ๋ผ๋ชFROM
ํ ์ด๋ธWHERE
์ปฌ๋ผ๋ชLIKE
'A_'- --์ฒซ๋ฒ์งธ ๋ฌธ์๊ฐ 'A''๊ฐ ์๋ ๋ชจ๋ ๋ฌธ์์ด ์ฐพ๊ธฐ--
SELECT
์ปฌ๋ผ๋ชFROM
ํ ์ด๋ธWHERE
์ปฌ๋ผ๋ชLIKE
'[^A]'- --์ฒซ๋ฒ์งธ ๋ฌธ์๊ฐ 'A'๋๋'B'๋๋'C'์ธ ๋ฌธ์์ด ์ฐพ๊ธฐ--
SELECT
์ปฌ๋ผ๋ชFROM
ํ ์ด๋ธWHERE
์ปฌ๋ผ๋ชLIKE
'[ABC]'
SELECT
์ปฌ๋ผ๋ชFROM
ํ ์ด๋ธWHERE
์ปฌ๋ผ๋ชLIKE
'[A-C]'
- --'๊น'์ผ๋ก ์์ํ๋ ์ฌ์ ์กฐํ
SELECT
*FROM
My_Talbe WHERE Nm_KorLIKE
'๊น%'- --๊น์ด ๋ค์ด๊ฐ๋ ์์ํ๋ ์ฌ์ ์กฐํ
SELECT
*FROM
My_TalbeWHERE
Nm_KorLIKE
'%๊น%'- --๊น์ผ๋ก ๋๋๋ ์ฌ์์ ์ฌ์๋ฒํธ ์กฐํ
SELECT
No_EmpFROM
My_TalbeWHERE
Nm_KorLIKE
'%๊น'