Raw ํจ์ ๊ฐ์
Raw ํ์ ํจ์
ํ์
๋ณ Raw ํจ์ rawString, rawNumber
WHERE Raw
๋ณต์กํ ์กฐ๊ฑด๋ฌธ whereRaw
CASE WHEN
์กฐ๊ฑด๋ถ ๊ฐ ์ ํ CASE ํํ์
์๋ธ์ฟผ๋ฆฌ
์ค์ฒฉ ์ฟผ๋ฆฌ ์์ฑ Subquery
Raw ํ์ ํจ์
rawString - ๋ฌธ์์ด ๋ฐํ
rawNumber - ์ซ์ ๋ฐํ
rawBoolean - ๋ถ๋ฆฐ ๋ฐํ
rawDate - ๋ ์ง ๋ฐํ
rawStringArray - ๋ฌธ์์ด ๋ฐฐ์ด ๋ฐํ
ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ
Raw ํจ์๋ Knex ์คํ์ผ์ ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ์ ์ง์ํฉ๋๋ค. SQL ๋ฌธ์์ด ๋ด์ ํ๋ ์ด์คํ๋๋ฅผ ์ฌ์ฉํ๊ณ , ๋ ๋ฒ์งธ ์ธ์๋ก ๋ฐ์ธ๋ฉ ๊ฐ ๋ฐฐ์ด์ ์ ๋ฌํฉ๋๋ค.ํ๋ ์ด์คํ๋ ๊ท์น
๊ฐ ๋ฐ์ธ๋ฉ (?)
์ฌ์ฉ์ ์
๋ ฅ์ด๋ ๋์ ๊ฐ์ ๋ฐ๋์ ? ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํฉ๋๋ค.
์๋ณ์ ๋ฐ์ธ๋ฉ (??)
ํ
์ด๋ธ๋ช
์ด๋ ์ปฌ๋ผ๋ช
์ ๋์ ์ผ๋ก ์ง์ ํ ๋๋ ?? ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํฉ๋๋ค. table.column ํํ์ ๋ฌธ์์ด์ ์๋์ผ๋ก "table"."column"์ผ๋ก ๋ณํ๋ฉ๋๋ค.
ํผํฉ ์ฌ์ฉ
ํ๋์ ํํ์์์?์ ??๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
Static SQL ํจ์
Puri๊ฐ ์ ๊ณตํ๋ ๋ด์ฅ SQL ํจ์๋ค์ ๋๋ค.๋ฌธ์์ด ํจ์
์ง๊ณ ํจ์
WHERE Raw
๋ณต์กํ WHERE ์กฐ๊ฑด์ ์ง์ ์์ฑํ ์ ์์ต๋๋ค.๊ธฐ๋ณธ WHERE Raw
๋ณต์กํ ์กฐ๊ฑด
๋ ์ง ํจ์
CASE WHEN - ์กฐ๊ฑด๋ถ ๊ฐ
CASE WHEN ํํ์์ผ๋ก ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ ์ ์์ต๋๋ค.๊ธฐ๋ณธ CASE WHEN
์ซ์ ๊ณ์ฐ
Boolean ๊ฒฐ๊ณผ
์๋ธ์ฟผ๋ฆฌ์ Raw SQL
Scalar ์๋ธ์ฟผ๋ฆฌ
COALESCE - NULL ์ฒ๋ฆฌ
์ค์ ์์
์ฌ์ฉ์ ํต๊ณ ๋์๋ณด๋
์๊ฐ๋๋ณ ์ง๊ณ
์์ ๊ณ์ฐ
์๋์ฐ ํจ์
ROW_NUMBER
RANK / DENSE_RANK
LAG / LEAD - ์ด์ /๋ค์ ํ
JSON ํจ์ (PostgreSQL)
JSON ํ๋ ์ถ์ถ
JSON ์ง๊ณ
์ฑ๋ฅ ์ต์ ํ
EXPLAIN ์ฌ์ฉ
์ธ๋ฑ์ค ํํธ (PostgreSQL์ ์ง์ ์ํจ)
PostgreSQL์ ์ตํฐ๋ง์ด์ ๊ฐ ์๋์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์ ํํฉ๋๋ค. ๋์ ํต๊ณ ์ ๋ฐ์ดํธ:ํ์ ์์ ์ฑ
Raw ํจ์๋ค์ ๋ฐํ ํ์ ์ ๋ช ์ํฉ๋๋ค.Raw ์ฟผ๋ฆฌ์ Hydrate
Raw SQL์ ์ฌ์ฉํ ๋๋ **hydrate()**๋ฅผ ์๋์ผ๋ก ํธ์ถํ๊ฑฐ๋, ํ๋ ๋ค์ด๋ฐ ๊ท์น์ ๋ฐ๋ผ์ผ JOIN๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์กฐํํ ์ ์์ต๋๋ค.Subset vs Raw Puri์ ์ฐจ์ด
Hydrate๊ฐ ํ๋ ์ผ
hydrate()๋ flatํ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ค์ฒฉ๋ ๊ฐ์ฒด ๊ตฌ์กฐ๋ก ๋ณํํฉ๋๋ค.
Before hydrate (Flat):
ํ๋ ๋ค์ด๋ฐ ๊ท์น: ์ธ๋๋ฐ(__) ์ฌ์ฉ
JOIN๋ ํ
์ด๋ธ์ ํ๋๋ ํ
์ด๋ธ๋ช
__ํ๋๋ช
ํ์์ผ๋ก ์ ํํด์ผ ํฉ๋๋ค.
์๋ Hydrate vs ์๋ Hydrate
Subset ์ฟผ๋ฆฌ (์๋ Hydrate)
Raw Puri ์ฟผ๋ฆฌ (์๋ Hydrate)
executeSubsetQuery์์์ ์๋ Hydrate
executeSubsetQuery()๋ ๋ด๋ถ์ ์ผ๋ก hydrate๋ฅผ ์๋ ํธ์ถํฉ๋๋ค.
Hydrate ํธ์ถ ์์ ์ ๋ฆฌ
์ค์ ์์ : Raw ์ฟผ๋ฆฌ + Hydrate
๊ถ์ฅ ์ฌํญ: - ๊ฐ๋ฅํ๋ฉด Subset ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ธ์ (hydrate ์๋) - ๋ณต์กํ Raw SQL์ด ํ์ํ
๋๋ง ์๋ hydrate ์ฌ์ฉ - ํ๋ ๋ค์ด๋ฐ ๊ท์น(
__)์ ์ผ๊ด๋๊ฒ ์ ์ฉ๋ค์ ๋จ๊ณ
Type Safety
Puri์ ํ์
์์ ์ฑ ์ดํดํ๊ธฐ
Advanced Patterns
์๋ธ์ฟผ๋ฆฌ์ ํธ๋์ญ์
Aggregations
์ง๊ณ ํจ์ ์ฌ์ฉํ๊ธฐ
Basic Queries
๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ก ๋์๊ฐ๊ธฐ