Search

Subquery, JOIN, FUNCTION

ํƒœ๊ทธ
SQL
์„œ๋ธŒ์ฟผ๋ฆฌ
JOIN
FUNCTION
๋ฉ€ํ‹ฐ์บ ํผ์Šค
sql query ์•ˆ์— ํฌํ•จ๋œ ๋˜๋‹ค๋ฅธ SELECT ๋ฌธ์ด๋‹ค. ์„ฑ๋Šฅ์€ ์ฟผ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ์ข‹์ง€ ์•Š๋‹ค. ๋•Œ๋ฌธ์— row ๊ฐ€ ์ ์€ table ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๋ถ„๋ฅ˜
(1) ์‚ฌ์šฉ ์œ„์น˜์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜
SELECT ์ ˆ : ์Šค์นผ๋ผ(๋‹จ์ผ๊ฐ’) ์„œ๋ธŒ์ฟผ๋ฆฌ
FROM ์ ˆ : inline view
WHERE, HAVING : subquery
(2) ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜
๋‹จ์ผํ–‰, ๋‹จ์ผ์—ด ์„œ๋ธŒ์ฟผ๋ฆฌ : ๋น„๊ต์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ
โ€ข
์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์กฐํšŒ๊ฒฐ๊ณผ ํ–‰์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ์„œ๋ธŒ์ฟผ๋ฆฌ
โ€ข
IN (+ NOT IN), ANY, ALL, EXISTS ์—ฐ์‚ฐ์ž์™€ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ
๋‹ค์ค‘์—ด ์„œ๋ธŒ์ฟผ๋ฆฌ : ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์—ด์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ
ANY
์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ’๊ณผ ์ปฌ๋Ÿผ๊ฐ’๊ฐ„์˜ ๋น„๊ต์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ True ๊ฐ€ ๋œ๋‹ค๋ฉด True ์ด๋‹ค. WHERE 1 > ANY(0.1, 100, 200, 300) == TRUE
ALL
์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ’๋“ค๊ณผ ์ปฌ๋Ÿผ๊ฐ’์„ ๋น„๊ต์—ฐ์‚ฐ ํ–ˆ์„ ๋•Œ ๋ชจ๋‘ TRUE ์—ฌ์•ผ์ง€๋งŒ TRUE
EXISTS
์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉด True ์—†์œผ๋ฉด False
์ƒ๊ด€์ฟผ๋ฆฌ(์ƒํ˜ธ์—ฐ๊ด€์ฟผ๋ฆฌ)
๋ฉ”์ธ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•œ ์ปฌ๋Ÿผ๊ฐ’์„ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ๋„ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ.
๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ์ปฌ๋Ÿผ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ’๋„ ๋ฐ”๋€๋‹ค.
์ƒ๊ด€์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฐธ์กฐ๋ฅผ ์œ„ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ FROM ์— ๋ณ„์นญ์„ ์ง€์ •ํ•œ๋‹ค.
์ธ๋ผ์ธ๋ทฐ
FROM ์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ
JOIN
๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ์ด์ƒํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ €์žฅํ•˜๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค.ํ•„์š”ํ•  ๋•Œ ํ…Œ์ด๋ธ”๊ฐ„ JOIN ์„ ํ†ตํ•ด ์›ํ•˜๋Š” ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ๋‹ค.
(1) CROSS JOIN : ์กฐ์ธ ์กฐ๊ฑด์ ˆ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฌด์กฐ๊ฑด ์ฐธ์ธ JOIN
(2) INNER JOIN(=EQUALS JOIN, ๋“ฑ๊ฐ€ ์กฐ์ธ)
JOIN [ํ…Œ์ด๋ธ”๋ช…] ON(์กฐ๊ฑด);
JOIN ํ•  ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋ช…์ด ๊ฐ™์œผ๋ฉด USING() ์„ ์‚ฌ์šฉํ•œ๋‹ค.
(3) OUTER JOIN
ํŠน์ • ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ JOIN ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
ํŠน์ • ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ JOIN ์กฐ๊ฑด์ ˆ์ด False ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋”๋ผ๋„ ํŠน์ • ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์€ Result set ์— ํฌํ•จ์‹œํ‚จ๋‹ค.
LEFT JOIN, RIGHT JOIN, FULL OTHER JOIN
(4) SELF JOIN : ์ž๊ธฐ ์ž์‹ ๊ณผ JOIN
FUNCTION
(1) ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜ ํ•จ์ˆ˜
LENGTH, CHAR_LENGTH, SUBSTR, INSTR, CONCAT, REPLACE, TRIM, LPAD, RPAD
(2) ์ˆซ์ž ๊ด€๋ จ ํ•จ์ˆ˜
ABS(์ ˆ๋Œ€๊ฐ’), MOD(๋‚˜๋จธ์ง€), FLOOR(๋‚ด๋ฆผ์ฒ˜๋ฆฌ), ROUND(๋ฐ˜์˜ฌ๋ฆผ), CEIL(์˜ฌ๋ฆผ์ฒ˜๋ฆฌ), TRUNCATE(์ ˆ์‚ญ)
(3) ๋‚ ์งœ ๊ด€๋ จ ํ•จ์ˆ˜
NOW, DATEDIFF, DATE_ADD, DATE_SUB, TIMESTAMPDIFF, DATE, MONTH, YEAR
(4) ํ˜•๋ณ€ํ™˜ ํ•จ์ˆ˜
CAST
(5) NULL ์ฒ˜๋ฆฌ ํ•จ์ˆ˜
IFNULL(A,B) : A ๊ฐ€ NULL ์ด ์•„๋‹ˆ๋ผ๋ฉด A ๊ฐ€ ๋ฐ˜ํ™˜ ๋ฐ˜๋Œ€๋Š” B ๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.
CASE-WHEN-THEN ์กฐ๊ฑด์‹
IF ELSE ์™€ ๋น„์Šทํ•œ ๊ตฌ๋ฌธ์ด๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค.
CASE WHEN [์กฐ๊ฑด์‹] THEN [๊ฒฐ๊ณผ๊ฐ’] WHEN [์กฐ๊ฑด์‹] THEN [๊ฒฐ๊ณผ๊ฐ’] WHEN [์กฐ๊ฑด์‹] THEN [๊ฒฐ๊ณผ๊ฐ’] ELSE END
SQL
๋ณต์‚ฌ