JPQL part2
JPQL ์กฐ์ธ
๋ด๋ถ์กฐ์ธ
๋ด๋ถ ์กฐ์ธ์ INNER JOIN์ ์ฌ์ฉํ๋๋ฐ, ์ฌ๊ธฐ์ INNER๋ ์๋ต ๊ฐ๋ฅํ๋ค ๊ฐ๋จํ ์ฌ์ฉ ์์๋ก๋
์ด๋ ๊ฒ ์ฌ์ฉํ ์ ์๋ค FROM Member m ๋ณ์นญ์ ์ฌ์ฉํ๋ฉด์ ํ ์ด๋ธ์ ์ ํํ๊ณ ํ์์ด ๊ฐ์ง๊ณ ์๋ team์ผ๋ก ํ๊ณผ ํจ๊ป ์กฐ์ธ์ ๊ฑธ๊ณ ์กฐ์ธ์ ๊ฑด ํ์๋ t๋ผ๋ ๋ณ์นญ์ ์ฃผ์ด์ค
์ธ๋ถ์กฐ์ธ
์ฌ์ฉ ์์๋ก๋
์ธ๋ถ ์กฐ์ธ์ ๊ธฐ๋ฅ์ SQL์ ์ธ๋ถ ์กฐ์ธ๊ณผ ๊ฐ๋ค๊ณ ๋ณผ ์ ์๋ค ์ถ๊ฐ์ ์ผ๋ก OUTER๋ ์๋ต์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋จ์ํ๊ฒ LEFT JOIN์ผ๋ก ์ฌ์ฉ๋๊ณค ํ๋ค
์ปฌ๋ ์
์กฐ์ธ
์ปฌ๋ ์ ์ ์ฌ์ฉํ๋ ๊ณณ์ ํค๋ก ์ก์์ ์กฐ์ธํ๋ ๊ฒ์ ์ปฌ๋ ์ ์กฐ์ธ์ด๋ผ๊ณ ํ๋ค
Member -> Team์ผ๋ก์ ์กฐ์ธ์ ๋ค๋์ผ ์กฐ์ธ์ด๋ฉด์ ๋จ์ผ ๊ฐ ์ฐ๊ด ํ๋๋ฅผ ์ฌ์ฉ(Member.team) Team -> Member์ผ๋ก์ ์กฐ์ธ์ ์ผ๋๋ค ์กฐ์ธ์ด๋ฉด์ ์ปฌ๋ ์ ๊ฐ ์ฐ๊ด ํ๋๋ฅผ ์ฌ์ฉ(Team.members) ์์๋ก ๋ณด์
t LEFT JOIN t.members ์ด๋ ๊ฒ ํ๊ณผ ํ์ด ๋ณด์ ํ ํ์๋ชฉ๋ก์ ์ปฌ๋ ์ ๊ฐ ์ฐ๊ด ํ๋๋ก ์ธ๋ถ ์กฐ์ธ ํ๋ค
์ธํ ์กฐ์ธ
WHERE์ ์ ์ฌ์ฉํด์ ์ธํ ์กฐ์ธ์ ์ฌ์ฉํ ์ ์๊ณ -> ๋ด๋ถ ์กฐ์ธ๋ง ์ง์ ํน์ง์ผ๋ก๋ ์ ํ ๊ด๊ณ ์๋ ์ํฐํฐ๋ ์กฐ์ธํ ์ ์๋ค๋ ์ ์ด๋ค
JOIN ON
์กฐ์ธ์ ๊ฑธ ๋ ON ์ ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์กฐ์ธ์ ๊ฑฐ๋ ๋์์ ํํฐ๋ง ํ๊ณ ์กฐ์ธํ ์ ์๋ค ์ฐธ๊ณ ๋ก ๋ด๋ถ ์กฐ์ธ์ ON์ ์ where์ ์ ์ฌ์ฉํ ๋์ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ผ๋ฏ๋ก ๋ณดํต ์ธ๋ถ ์กฐ์ธ์์๋ง ์ฌ์ฉ
fetch ์กฐ์ธ
์ฌ์ฉ ๋ฐฉ๋ฒ์ ํ์น ์กฐ์ธ ::= [ LEFT [OUTER] | INNER ] JOIN FETCH ์กฐ์ธ ๊ฒฝ๋ก
์ํฐํฐ ํ์น ์กฐ์ธ
fetch ์กฐ์ธ์ ์กฐ์ธ์ ์ข ๋ฅ๋ผ๊ธฐ ๋ณด๋ค๋ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๊ณ ์ํฐํฐ๋ ์ปฌ๋ ์ ์ ํ ๋ฒ์ ๊ฐ์ด ์กฐํํ๋ ๊ธฐ๋ฅ์ด๋ค ์ฌ์ฉ ์์๋ก ๋ณด์
join ๋ค์์ fetch ์ด๋ ๊ฒ ์ ๊ณ ๋๋ฉด ์ฐ๊ด๋ ์ํฐํฐ๋ ์ปฌ๋ ์ ์ ํจ๊ป ์กฐํํ๋๋ฐ ์ฌ๊ธฐ์๋ member ๊ทธ๋ฆฌ๊ณ member.team์ ํจ๊ป ์กฐํํ๊ฒ ๋๋ค.
๋ง์ฝ์ ํ์๊ณผ ํ์ ์ง์ฐ๋ก๋ฉ์ผ๋ก ์ค์ ํด๋์๋ค๋ฉด ํ์์ ์กฐํํ๋๋ฐ ์์ด์ ํ์น ์กฐ์ธ์ ์ฌ์ฉํด์ ํ๋ ํจ๊ป ์กฐํํ๊ธฐ ๋๋ฌธ์ ์ฐ๊ด๋ ํ ์ํฐํฐ๋ ํ๋ก์๊ฐ ์๋ ์ค์ ์ํฐํฐ๋ค ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ง์ฐ ๋ก๋ฉ์ด ์ผ์ด๋์ง ์์ผ๋ฉฐ ์ค์ ์ํฐํฐ์ด๊ธฐ ๋๋ฌธ์ ์์์ฑ ์ปจํ ์คํธ์์ ๋ถ๋ฆฌ๋์ด๋ ์ฐ๊ด๋ ํ์ ์กฐํํ ์ ์๋ค
์ปฌ๋ ์
ํ์น ์กฐ์ธ
์ผ๋๋ค ๊ด๊ณ์ธ ํ์น ์กฐ์ธ๊ฐ์์ ๊ฒฝ์ฐ์๋
์ปฌ๋ ์ ์ ํ์น ์กฐ์ธํ select t์ผ๋ก๋ง ํ์ ์กฐํํ๋๋ฐ ์ํ๋ SQL์ ๋ณด๋ฉด ํ๊ณผ ์ฐ๊ด๋ ํ์๋ ํจ๊ป ์กฐํํจ ๊ทธ๋ผ team ํ ์ด๋ธ์์ 'ํA'๋ ํ๋์ด์ง๋ง memberํ ์ด๋ธ๊ณผ ์กฐ์ธํ๋ฉด์ ๊ฒฐ๊ณผ๊ฐ ์ฆ๊ฐํด์ ํ A๊ฐ 2๋ฒ ์กฐํ๋จ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ฃผ์๋ก 2๋ฒ ์กฐํ๋๋ ๊ฒ์ ์ ์ ์๋ค
ํ์น ์กฐ์ธ๊ณผ DISTINCT
์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ SQL์ DISTINCT๋ช ๋ น์ด์ ๊ฐ์ด ์ค๋ณต๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ฑฐํ๋ ๋ช ๋ น ํ์ง๋ง ํ์น ์กฐ์ธ์์ ์ฌ์ฉํ๋ ๊ฒ์ SQL์ DISTINCT๋ฅผ ์ถ๊ฐํ๋ ๊ฒ ๋ฟ๋ง ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ค๋ณต์ ์ ๊ฑฐ ๊ทธ๋ฌ๋ฉด ์์์์ฒ๋ผ 2ํ ์กฐํํ ๊ฒ์ DISTINCT๋ฅผ ํตํด์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ ์ ์์
ํ์น ์กฐ์ธ๊ณผ ์ผ๋ฐ ์กฐ์ธ์ ์ฐจ์ด
JPQL์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋ ์ฐ๊ด๊ด๊ณ๊น์ง ๊ณ ๋ คํ์ง ์๊ธฐ ๋๋ฌธ์ ๋จ์ง SELECT ์ ์ ์ง์ ํ ์ํฐํฐ๋ง์ ์กฐํํ ๋ฟ์ด๊ธฐ ๋๋ฌธ์ team๋ง ์กฐํํ๊ณ ์ฐ๊ด๋ member๋ ์กฐํํ์ง ์๋๋ค ๋ง์ฝ ํ์์์ ์ง์ฐ ๋ก๋ฉ์ ์ค์ ํด๋๋ฉด ํ๋ก์๋ ์์ง ์ด๊ธฐํํ์ง ์์ ์ปฌ๋ ์ ๋ํผ๋ฅผ ๋ฐํํ๊ณ ์ฆ์ ๋ก๋ฉ์ผ๋ก ์ค์ ํ๋ฉด ํ์ ์ปฌ๋ ์ ์ ์ฆ์ ๋ก๋ฉํ๊ธฐ ์ํด ์ฟผ๋ฆฌ๋ฅผ ํ ๋ฒ ๋ ์คํ
ํ์น ์กฐ์ธ์ ํน์ง๊ณผ ํ๊ณ
ํ์น ์กฐ์ธ์ ์ฌ์ฉํ๋ฉด SQL ํ ๋ฒ์ผ๋ก ์ฐ๊ด๋ ์ํฐํฐ๋ค์ ํจ๊ป ์กฐํํ ์ ์์ด์ SQL ํธ์ถ ํ์๋ฅผ ์ค์ฌ์ ์ฑ๋ฅ์ ์ต์ ํ ๊ฐ๋ฅ ์ํฐํฐ์ ์ง์ ์ ์ฉํ๋ ๋ก๋ฉ ์ ๋ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ๊ธ๋ก๋ฒ ๋ก๋ฉ ์ ๋ต์ด๋ผ ๋ถ๋ฅธ๋ค ์ฅ์ ์ต์ ํ๋ฅผ ์ํด ๊ธ๋ก๋ฒ ๋ก๋ฉ ์ ๋ต์ ์ฆ์ ๋ก๋ฉ์ผ๋ก ์ค์ ํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ํญ์ ์ฆ์ ๋ก๋ฉ์ด ์ผ์ด๋๊ฒ ๋๋ค ์ผ๋ถ๋ ๋น ๋ฅผ ์ ์์ง๋ง ์ ์ฒด๋ก ๋ณด๋ฉด ์ฌ์ฉํ์ง ์๋ ์ํฐํฐ๋ฅผ ์์ฃผ ๋ก๋ฉํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ์ข์ง ์์ ๋ฐ๋ผ์ ๊ธ๋ก๋ฒ ๋ก๋ฉ ์ ๋ต์ ๋ ์ ์๋ค๋ฉด ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ๊ณ ์ต์ ํ๊ฐ ํ์ํ๋ฉด ํ์น ์กฐ์ธ์ ์ ์ฉํ๋ ๊ฒ์ด ํจ๊ณผ์ ํ์น ์กฐ์ธ์ ์ฌ์ฉํ๋ฉด ์ฐ๊ด๋ ์ํฐํฐ๋ฅผ ์ฟผ๋ฆฌ ์์ ์ ์กฐํํ๊ธฐ ๋๋ฌธ์ ์ง์ฐ๋ก๋ฉ์ด ๋ฐ์x -> ์ค์์ ์ํ์์๋ ๊ฐ์ฒด ๊ทธ๋ํ ํ์ ๊ฐ๋ฅ ๋จ์ ํ์น ์กฐ์ธ ๋์์๊ฒ๋ ๋ณ์นญ์ ์ค ์ ์์ ๋ ์ด์์ ์ปฌ๋ ์ ์ ํ์นํ ์ ์์ ์ปฌ๋ ์ ์ ํ์น ์กฐ์ธํ๋ฉด ํ์ด์ง API๋ฅผ ์ฌ์ฉํ ์ ์์ ํ์น ์กฐ์ธ์ SQL ํ ๋ฒ์ผ๋ก ์ฐ๊ด๋ ์ฌ๋ฌ ์ํฐํฐ๋ฅผ ์กฐํํ ์ ์์ด์ ์ฑ๋ฅ์ต์ ํ์ ์ ์ฉํ์ง๋ง ์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํด์ ์ํฐํฐ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ชจ์์ด ์๋ ๋ค๋ฅธ ๋ชจ์์ผ๋ก ์ถ๋ ฅํด์ผ ํ๋ค๋ฉด ๊ตณ์ด ํจ์น ์กฐ์ธ์ฌ์ฉํ์ง ์๊ณ dto๊ฐ ๋ ์ข์
๊ฒฝ๋ก ํํ์
๊ฒฝ๋ก ํํ์์ ์ฝ๊ฒ .์ ํตํด์ ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ํ์ํ๋ ๊ฒ์ ์ฉ์ด ์ ๋ฆฌ ์ํ ํ๋ : ๋จ์ํ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ํ๋ ์ฐ๊ด ํ๋ : ์ฐ๊ด๊ด๊ณ๋ฅผ ์ํ ํ๋, ์๋ฒ ๋๋ ํ์ ํฌํจ ๋จ์ผ ๊ฐ ์ฐ๊ด ํ๋ : @ManyToOne, @OneToOne, ๋์์ด ์ํฐํฐ ์ปฌ๋ ์ ๊ฐ ์ฐ๊ด ํ๋ : @OneToMany, @ManyToMany, ๋์์ด ์ปฌ๋ ์
ํน์ง JPQL์์ ๊ฒฝ๋ก ํํ์์ ์ฌ์ฉํด์ ๊ฒฝ๋ก ํ์์ ํ๋ ค๋ฉด ๋ค์ 3๊ฐ์ง ๊ฒฝ๋ก๋ฅผ ํ์ธ
์ํ ํ๋ ๊ฒฝ๋ก : ๊ฒฝ๋ก ํ์์ ๋ -> ๋๋ ํ์ ๋ถ๊ฐ
๋จ์ผ ๊ฐ ์ฐ๊ด ๊ฒฝ๋ก : ๋ฌต์์ ์ผ๋ก ๋ด๋ถ ์กฐ์ธ์ด ์ผ์ด๋๊ณ ๊ณ์ ํ์ ๊ฐ๋ฅ
์ปฌ๋ ์ ๊ฐ ์ฐ๊ด ๊ฒฝ๋ก : ๋ฌต์์ ์ผ๋ก ๋ด๋ถ ์กฐ์ธ์ด ์ผ์ด๋์ง๋ง ๋๋ ํ์ ๋ถ๊ฐ๋ฅ
์์ ์ํ ํ๋ ๊ฒฝ๋ก ํ์
์ฌ๊ธฐ์ m.username, m.age๋ ์ํ ํ๋ ๊ฒฝ๋ก ํ์์ด๋ค ๋จ์ผ ๊ฐ ์ฐ๊ด ๊ฒฝ๋ก ํ์
๋จ์ํ๊ฒ ์ด๋ ๊ฒ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋ฌต์์ ์ผ๋ก ๋ด๋ถ ์กฐ์ธ์ด ์ผ์ด๋๊ฒ ๋๋ค. ํญ์ ๋ฌต์์ ์ผ๋ก ์ผ์ด๋๋ ๊ฒ์ ๋ด๋ถ ์กฐ์ธ ๊ทธ๋ฆฌ๊ณ ๋ช ์์ ์ผ๋ก JOIN์ ์ ์ด์ฃผ๋ ๊ฒ๋ ๊ฐ๋ฅ์ ํ๋ค ์ปฌ๋ ์ ๊ฐ ์ฐ๊ด ๊ฒฝ๋ก ํ์ ์ปฌ๋ ์ ๊น์ง์ ๊ฒฝ๋ก ํ์์ ์ด๋ ต์ง ์๊ฒ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์ปฌ๋ ์ ์์๋ถํฐ ๊ฒฝ๋ก ํ์์ ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค ๋ง์ฝ์ ์ปฌ๋ ์ ๋ด๋ถ์์ ๊ฒฝ๋ก ํ์์ ํ๊ณ ์ถ๋ค๋ฉด ์กฐ์ธ์ ์ฌ์ฉํด์ ์๋ก์ด ๋ณ์นญ์ ๋ฃ์ด์ค ๋ค์๋ถํฐ ๊ฒฝ๋ก ํ์์ ์งํ
๋ฌต์์ ์กฐ์ธ ์ ์ฃผ์ ์ฌํญ ํญ์ ๋ด๋ถ ์กฐ์ธ์ด๋ผ๋ ์ ์ปฌ๋ ์ ์ ๊ฒฝ๋ก ํ์์ ๋์ด๋ค -> ๋ด๋ถ๋ก ๋ค์ด๊ฐ๊ณ ์ ํ๋ฉด ๋ช ์์ ์ผ๋ก ์กฐ์ธ์ ๊ฑธ์ด ๊ฒฝ๋ก ํ์์ SELECT, WHERE์์ ์ฌ์ฉํ์ง๋ง ๋ฌต์์ ์กฐ์ธ์ผ๋ก ์ธํด์ FROM์ ์ ์ํฅ์ ์ค๋ค
##์๋ธ ์ฟผ๋ฆฌ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ WHERE, HAVING์ ์์๋ง ์ฌ์ฉํ ์ ์๊ณ SELECT, FROM ์ ์์๋ ์ฌ์ฉํ ์ ์์
์๋ธ ์ฟผ๋ฆฌ ํจ์
[NOT] EXISTS (subquery), {ALL | ANY | SOME} (subquery), [NOT] IN (subquery) EXISTS
๋ฌธ๋ฒ : [NOT] EXISTS (subquery)
์ค๋ช : ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๊ฐ ์กด์ฌํ๋ฉด ์ฐธ์ด๋ค. NOT์ ๋ฐ๋
์์ : ํA์ ์์์ธ ํ์ select m from Member m where exists (select t from m.team t where t.name = 'ํA')
{ALL | ANY | SOME}
๋ฌธ๋ฒ : {ALL | ANY | SOME} (subquery)
์ค๋ช : ๋น๊ต ์ฐ์ฐ์์ ๊ฐ์ด ์ฌ์ฉ
ALL : ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ฉด ์ฐธ
ANY, SOME : ๋์ ๊ฐ์ ์๋ฏธ๋ก ํ๋๋ผ๋ ๋ง์กฑํ๋ฉด ์ฐธ
์์ : ์ ์ฒด ์ํ ๊ฐ๊ฐ์ ์ฌ๊ณ ๋ณด๋ค ์ฃผ๋ฌธ๋์ด ๋ง์ ์ฃผ๋ฌธ๋ค select o from Order o where o.orderAmount > ALL (select p.stockAmount from Product p) ์ด๋ค ํ์ด๋ ํ์ ์์๋ ํ์ select m from Member m where m.team = ANY(select t from Team t)
IN
๋ฌธ๋ฒ : [NOT] IN (subquery)
์ค๋ช : ์๋ธ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ ์ค ํ๋๋ผ๋ ๊ฐ์ ๊ฒ์ด ์์ผ๋ฉด ์ฐธ
์์ : 20์ธ ์ด์์ ๋ณด์ ํ ํ select t from Team t where t IN (select t2 from team t2 join t2.members m2 where m2.age >= 20)
์กฐ๊ฑด์
####ํ์ ํํ ๋ฌธ์ - ''์ฌ์ด์ ํํ, '์ ํํํ๊ณ ์ถ๋ค๋ฉด ''์ด๋ ๊ฒ 2๊ฐ๋ก ใ ์์ฑ ์ซ์ - Long -> L, Double -> D, Float -> F ๋ ์ง - DATE -> {d 'yyyy-mm-dd'}, TIME -> {t 'hh-mm-ss'}, DATETIME -> {ts 'yyyy-mm-dd hh:mm:ss.f'} Boolean - TRUE, FALSE Enum - ํจํค์ง๋ช ์ ํฌํจํ ์ ์ฒด ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํจ OrderStatus.OK ์ํฐํฐ ํ์ - ์ํฐํฐ์ ํ์ ์ ํํํ๋ค. ์ฃผ๋ก ์์๊ณผ ๊ด๋ จํด์ ์ฌ์ฉ
์ฐ์ฐ์ ์ฐ์ ์์
์ฐ์ฐ์์ ์ฐ์ ์์๋
๊ฒฝ๋ก ํ์ ์ฐ์ฐ(.)
์ํ์ฐ์ฐ
๋น๊ต์ฐ์ฐ
๋ ผ๋ฆฌ์ฐ์ฐ
๋
ผ๋ฆฌ ์ฐ์ฐ๊ณผ ๋น๊ต์
๋ ผ๋ฆฌ ์ฐ์ฐ
AND: ๋๋ค ๋ง์กฑํ๋ฉด ์ฐธ
OR: ๋ ์ค ํ๋๋ง ๋ง์กฑํด๋ ์ฐธ
NOT: ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ ๋ฐ๋
๋น๊ต์ = | > | >= | < | <= | <>
Between, IN, Like, NULL ๋น๊ต
Between ์
๋ฌธ๋ฒ : X [NOT] BETWEEN A AND B
์ค๋ช : X๋ A ~ B ์ฌ์ด์ ๊ฐ์ด๋ฉด ์ฐธ
์์ : ๋์ด๊ฐ 10~20์ธ ํ์์ ์ฐพ์ select m from Member m where m.age between 10 and 20
IN ์
๋ฌธ๋ฒ : X [NOT] IN
์ค๋ช : X์ ๊ฐ์ ๊ฐ์ด ์์ ์ ํ๋๋ผ๋ ์์ผ๋ฉด ์ฐธ์ด๋ค. IN ์์ ์์ ๋ ์๋ธ ์ฟผ๋ฆฌ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
์์ : ์ด๋ฆ์ด ํ์1์ด๋ ํ์2์ธ ํ์์ ์ฐพ์ select m from Member m where m.username in ('ํ์1', 'ํ์2')
Like ์
๋ฌธ๋ฒ : X [NOT] LIKE
์ค๋ช : ๋ฌธ์ํํ์๊ณผ ํจํด ๊ฐ์ ๋น๊ต
NULL ๋น๊ต์
๋ฌธ๋ฒ : {๋จ์ผ๊ฐ ๊ฒฝ๋ก | ์ ๋ ฅ ํ๋ผ๋ฏธํฐ} IS [NOT] NULL
์ค๋ช : NULL์ธ์ง ๋น๊ตํ๋ค. NULL์ =์ผ๋ก ๋น๊ตํ๋ฉด ์ ๋๊ณ ๊ผญ IS NULL์ ์ฌ์ฉํด์ผ ํจ
์ปฌ๋ ์
์
์ปฌ๋ ์ ์ ํน๋ณํด์ ์ปฌ๋ ์ ์ ์ฉ ์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํจ
๋น ์ปฌ๋ ์ ๋น๊ต ์
๋ฌธ๋ฒ : {์ปฌ๋ ์ ๊ฐ ์ฐ๊ด ๊ฒฝ๋ก} IS [NOT] EMPTY
์ค๋ช : ์ปฌ๋ ์ ์ ๊ฐ์ด ๋น์์ผ๋ฉด ์ฐธ
์ปฌ๋ ์ ์ ๋ฉค๋ฒ ์
๋ฌธ๋ฒ : {์ํฐํฐ๋ ๊ฐ} [NOT] MEMBER [OF] {์ปฌ๋ ์ ๊ฐ ์ฐ๊ด ๊ฒฝ๋ก}
์ค๋ช : ์ํฐํฐ๋ ๊ฐ์ด ์ปฌ๋ ์ ์ ํฌํจ๋์ด ์์ผ๋ฉด ์ฐธ
์ค์นผ๋ผ ์
์ค์นผ๋ผ ์์ด๋ผ๋ ์ซ์, ๋ฌธ์, ๋ ์ง, case, ์ํฐํฐ ํ์ ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ํ์ ๋ค ์ํ ์
+, - : ๋จํญ ์ฐ์ฐ์
*, /, +, - : ์ฌ์น ์ฐ์ฐ
๋ฌธ์ํจ์
CONCAT
SUBSTRING
TRIM
LOWER
UPPER
LENGTH
LOCATE
์ํํจ์
ABS
SQRT
MOD
SIZE
INDEX
๋ ์งํจ์
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMPE ์ด๊ฑด ์ด์ง ๋ฐฉ์ธ๋ฐ์ด๋ผ์... ํ์ํ ๋
CASE
ํฌ๊ฒ 4๊ฐ์ง๊ฐ ์กด์ฌ ๊ธฐ๋ณธ CASE
์ฌํ CASE
COALESCE -๋ฌธ๋ฒ : COALESCE(<์ค์นผ๋ผ์> {, <์ค์นผ๋ผ์>}+) -์ค๋ช : ์ค์นผ๋ผ์์ ์ฐจ๋ก๋๋ก ์กฐํํด์ null์ด ์๋๋ฉด ๋ฐํ
NULLIF -๋ฌธ๋ฒ : NULLIF(<์ค์นผ๋ผ์>, <์ค์นผ๋ผ์>) -์ค๋ช : ๋ ๊ฐ์ด ๊ฐ์ผ๋ฉด null์ ๋ฐํํ๊ณ ๋ค๋ฅด๋ฉด ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค. ์งํฉ ํจ์๋ null์ ํฌํจํ์ง ์์ผ๋ฏ๋ก ๋ณดํต ์งํฉ ํจ์์ ๊ฐ์ด์
Last updated
Was this helpful?