header-img
Info :
๋ฐ€๋„
denseยน
์žฅ๋ž˜ํฌ๋ง : ๋‹จ์œ„ ๋ถ€ํ”ผ ๋‹น ์งˆ๋Ÿ‰์ด ๋ณด๋‹ค ๋นฝ๋นฝํ•œ ์‚ฌ๋žŒ ๋˜๊ธฐ
TOOLS 22
list_img
Bigquery: GROUP BY ALL, ์ฟผ๋ฆฌ ์ž๋™ ๊ทธ๋ฃนํ™” ์‹œํ‚ค๊ธฐ
2024.03.24
02์›” 26์ผ์ž๋กœ ๋น…์ฟผ๋ฆฌ์— GROUP BY ALL ๋ฌธ๋ฒ•์ด ์ถ”๊ฐ€๋๋‹ค. ๊ธฐ์กด์—๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋ฌถ๊ณ  ์‹ถ์œผ๋ฉด GROUP BY์— ์ปฌ๋Ÿผ์„ ์ง€์ •ํ•ด์ค˜์•ผ ํ–ˆ๋Š”๋ฐ, GROUP BY ALL ๋ฌธ๋ฒ•์˜ ์ถ”๊ฐ€๋กœ ์ด์ œ ๋น…์ฟผ๋ฆฌ๊ฐ€ SELECT ์ ˆ์—์„œ ๊ทธ๋ฃนํ™”ํ•  ํ‚ค๋ฅผ ์•Œ์•„์„œ ๋ฌถ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค. ๋ฌถ๋Š” ์กฐ๊ฑด์€ ๋‹จ์ˆœํ•œ๋ฐ, ์ง‘๊ณ„ ํ•จ์ˆ˜๋‚˜ ์œˆ๋„์šฐ ํ•จ์ˆ˜ ์™ธ ๋ช‡ ๊ฐ€์ง€ ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์ง€์ •ํ•œ ๋ถˆ๊ฐ€ ํ˜•ํƒœ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์ปฌ๋Ÿผ์€ ๋‹ค ๊ทธGROUP BY์— ํฌํ•จ์‹œํ‚ค๋Š” ์‹์ด๋‹ค. ์ด ๋•Œ ์ƒ๊ธฐ ์กฐ๊ฑด๋“ค์„ ์ œ์™ธํ•˜๊ณ  ๋‚œ ํ›„, ๋‚จ์€ SELECT ํ•ญ๋ชฉ ์ค‘ ๊ทธ๋ฃนํ™” ๋ถˆ๊ฐ€ํ•œ ์œ ํ˜•์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ์—์„œ ์ฟผ๋ฆฌ๋Š” first_name๊ณผ last_name ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”๋œ๋‹ค. total_points๋Š” ์ง‘๊ณ„ ํ•จ์ˆ˜ ๊ฐ’์ด๋ฏ€๋กœ ์ œ์™ธ๋๋‹ค. WITH PlayerStats AS ( ..
list_img
CSS ๋ฌธ๋ฒ• (3) : ๊ฐ€์ƒ ํด๋ž˜์Šค/ ์š”์†Œ, ์„ ํƒ์ž ๊ฐ„์˜ ๊ตฌ์ฒด์„ฑ ์ •์˜
2024.03.14
HTML๊ณผ CSS๋Š” ์ด์šฉ์ž์˜ ๋™์ž‘์— ๋”ฐ๋ฅธ ๋ณ€ํ™”๋ฅผ ์ผ๋ฐ˜์ ์œผ๋กœ ํ™”๋ฉด์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์š”์†Œ ์œ„์— ์ปค์„œ๋ฅผ ์˜ฌ๋ ค ๋†“๊ฑฐ๋‚˜ ๋—์„ ๋•Œ์ฒ˜๋Ÿผ ์ž์ฃผ ๊ตฌํ˜„ํ•  ํ•„์š”์„ฑ์ด ์žˆ๋Š” ๋™์ž‘ ์ผ๋ถ€๋Š” ๊ฐ€์ƒ ํด๋ž˜์Šค๋‚˜ ์š”์†Œ์˜ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ฐ€์ƒ ํด๋ž˜์Šค์™€ ์š”์†Œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์—ฌ๋Ÿฌ ์„ ํƒ์ž๊ฐ€ ํ•œ ์š”์†Œ๋ฅผ ๊พธ๋ฉฐ์ค„ ๋•Œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ‘œ๊ธฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์ฒด์„ฑ์˜ ์ •์˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. ๊ฐ€์ƒ ํด๋ž˜์Šคpseudo class ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ด ์— ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ๋งŒ ํŠน์ • ์Šคํƒ€์ผ์„ ์ฃผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? ํ•ด๋‹น ๋™์ž‘์„ ์œ„ํ•ด ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. (1) ์ž„์˜์˜ ํด๋ž˜์Šค ์„ ํƒ์ž๋ฅผ ์„ ์–ธํ•ด ํŠน์ • ์Šคํƒ€์ผ ๊ทœ์น™์„ ๋งŒ๋“ ๋‹ค. (2) ์š”์†Œ์— ์ปค์„œ๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋ฉด ํด๋ž˜์Šค๋ฅผ ์ง‘์–ด๋„ฃ๋Š”๋‹ค. (3) ์š”์†Œ์—์„œ ..
list_img
CSS ๋ฌธ๋ฒ• (2) : ์„ ํƒ์ž์˜ ์œ ํ˜• ๋ฐ ์กฐํ•ฉ, ๋ฌธ์„œ ๊ตฌ์กฐ์˜ ์ดํ•ด
2024.03.11
์„ ํƒ์ž๋Š” CSS์—์„œ ์Šคํƒ€์ผ์„ ์ž…ํž HTML ๋“ฑ ๋งˆํฌ์—… ์–ธ์–ด์˜ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋œปํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ CSS ์ฝ”๋“œ๋Š” A { (B): (C); } ํ˜•ํƒœ๋กœ ์ด๋ค„์ ธ ์žˆ๋Š”๋ฐ, ์Šคํƒ€์ผ์„ ๋‚˜์—ดํ•œ ์ค‘๊ด„ํ˜ธ ์•ž ๋ถ€๋ถ„์— ์˜ค๋Š” A ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์„ ํƒ์ž๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ๋Š” ์„ ํƒ์ž์˜ ์œ ํ˜•๊ณผ ์กฐํ•ฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์„ ํƒ์ž์™€ ๋ฌธ์„œ์˜ ๊ด€๊ณ„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•ด ๋ณธ๋‹ค. ์š”์†Œ ์„ ํƒ์ž h1 { color: yellow; } h2 { color: yellow; } h3 { color: yellow; } h4 { color: yellow; } h5 { color: yellow; } h6 { color: yellow; } ์„ ํƒ์ž ์ค‘ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์„ ํƒ์ž๋กœ, ์„ ํƒ์ž ๋ถ€๋ถ„์— ํƒœ๊ทธ ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ€๋Š” ์ ์„ ๋”ฐ์„œ ํƒœ๊ทธ ์„ ํƒ์ž๋ผ๊ณ ๋„ ํ•œ๋‹ค. ์š”์†Œ ์„ ..
list_img
CSS ๋ฌธ๋ฒ• (1) : CSS์˜ ์ •์˜, HTML์™€์˜ ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•
2024.03.10
CSS๋Š” ๋งˆํฌ์—… ์–ธ์–ด, ์ฆ‰ HTML์„ ๊พธ๋ฉฐ ์ฃผ๋Š” ํ‘œํ˜„์šฉ ์–ธ์–ด๋‹ค. HTML์ด ๋ฌธ์ €์˜ ์ •๋ณด, ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค๋ฉด CSS๋Š” ๋ฌธ์„œ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ๋””์ž์ธํ•œ๋‹ค. CSS๋Š” HTML๊ณผ๋Š” ๋…๋ฆฝ๋œ ๋‹ค๋ฅธ ์–ธ์–ด์ด์ง€๋งŒ ํ‘œํ˜„์„ ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งˆํฌ์—… ๋ฌธ์„œ ์ž์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋ฌด์šฉ์ง€๋ฌผ์ด ๋œ๋‹ค. ๋•Œ๋ฌธ์—, ๋ณดํ†ต CSS๋Š” HTML๊ณผ ๋ฌถ์–ด ์–˜๊ธฐํ•œ๋‹ค. ์ „ ์„ธ๊ณ„์˜ ๋งŽ์€ ์›น ์‚ฌ์ดํŠธ๋“ค์€ ์ „๋ถ€ HTML ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“ค์–ด์ง„๋‹ค. ํ•˜์ง€๋งŒ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” HTML์˜ ๊ฐœ์ˆ˜๋Š” ์‹ญ์—ฌ ๊ฐœ๋ฐ–์— ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๋ชจ๋“  ์‚ฌ์ดํŠธ๋ฅผ ๊ฐ๊ฐ ๋‹ค์–‘ํ•˜๊ณ  ๋…์ฐฝ์ ์ธ ๋””์ž์ธ์œผ๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” ๊ฒŒ CSS๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ CSS ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. CSS ๊ตฌ๋ฌธ h1 { color: yellow; font-size:2em..
list_img
HTML ์š”์†Œ๋ณ„ ๋ฌธ๋ฒ• ํƒœ๊ทธ ์ •๋ฆฌ
2024.03.10
HTML์€ Hyper Text Markup Language์˜ ์•ฝ์ž๋‹ค. ์ด ๋•Œ์˜ Hyper Text๋Š” ๋ฌธ์„œ ๋„ˆ๋จธ์™€ ์—ฐ๊ฒฐ์„ ํ•ด ์ฃผ๋Š” ํ…์ŠคํŠธ, ์ฆ‰ ๋งํฌ๋ฅผ ์˜๋ฏธํ•˜๊ณ  Markup Language๋Š” ์ •๋ณด๋ฅผ ๊ตฌ์กฐ์ / ๊ณ„์ธต์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ์–ธ์–ด๋ž€ ๋œป์ด๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” HTML์—์„œ ์“ฐ์ด๋Š” ๋ฌธ๋ฒ•, ํƒœ๊ทธ๋ฅผ ์ •๋ฆฌํ•œ๋‹ค. ์ œ๋ชฉHeading ํƒœ๊ทธ ์—ญ์‚ฌ ๊ฐœ๋ฐœ 1980๋…„, ์œ ๋Ÿฝ ์ž…์ž ๋ฌผ๋ฆฌ ์—ฐ๊ตฌ์†Œ(CERN)์˜ ๊ณ„์•ฝ์ž์˜€์—ˆ๋˜ ๋ฌผ๋ฆฌํ•™์ž ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ๊ฐ€ HTML์˜ ์›ํ˜•์ธ ์ธ์ฝฐ์ด์–ด๋ฅผ ์ œ์•ˆํ–ˆ๋‹ค. ... ์ดํ•˜ ์ƒ๋žต ์ตœ์ดˆ ๊ทœ๊ฒฉ HTML ์ตœ์ดˆ์˜ ์ผ๋ฐ˜ ๊ณต๊ฐœ ์„ค๋ช…์€ 1991๋…„ ๋ง์— ๋ฒ„๋„ˆ์Šค๋ฆฌ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ์ธํ„ฐ๋„ท์—์„œ ๋ฌธ์„œ๋ฅผ "HTML ํƒœ๊ทธ"(HTML tag)๋กœ ๋ถ€๋ฅด๋ฉด์„œ ์‹œ์ž‘๋๋‹ค. ... ์ดํ•˜ ์ƒ๋žต ๋ฌธ์„œ ๋‚ด ์ œ๋ชฉ์„ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ๋‹ค. ์ œ๋ชฉ์˜ ๋ ˆ๋ฒจ์— ๋”ฐ..
list_img
SQL: SELECT/ FROM/ WHERE ์ ˆ ์„œ๋ธŒ ์ฟผ๋ฆฌ Subquery
2024.03.07
์„œ๋ธŒ ์ฟผ๋ฆฌSubquery๋ž€ ๋ฉ”์ธ ์ฟผ๋ฆฌMain query๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€๋กœ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๊ฐ€์ ์ธ SELECT๋ฌธ์„ ๋งํ•œ๋‹ค. ์–ด๋–ค ๋ฉ”์ธ ์ฟผ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์—์„œ ๋‚ด๋ถ€ ์ฟผ๋ฆฌInner query๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค. ์ด๋•Œ, ๋ฉ”์ธ ์ฟผ๋ฆฌ๋Š” ์™ธ๋ถ€ ์ฟผ๋ฆฌOuter query๋กœ ์ง€์นญ๋  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ํ˜•ํƒœ / ์‹คํ–‰ ์กฐ๊ฑด SELECT ์—ด FROM ํ…Œ์ด๋ธ” WHERE ์กฐ๊ฑด์‹ ( SELECT ์—ด FROM ํ…Œ์ด๋ธ” WHERE ์กฐ๊ฑด์‹ ) (1) ๋ฐ˜๋“œ์‹œ ๊ด„ํ˜ธ์— ๊ฐ์‹ธ์ง„ ํ˜•ํƒœ๋กœ ์“ฐ์ธ๋‹ค. (2) SELECT๋ฌธ์˜ ํ˜•ํƒœ๋กœ๋งŒ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (3) ์ฟผ๋ฆฌ์˜ ๋์—์„œ ;์„ธ๋ฏธ ์ฝœ๋ก ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. (4) ORDER BY์ ˆ์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†๋‹ค. ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ํŠน์ง• (1) ๋น„๊ต ํ˜น์€ ์กฐํšŒ์˜ ๋Œ€์ƒ์ด ๋  ๋•Œ ์กฐํšŒ ๋Œ€์ƒ..
list_img
SQL ๋ฌธ์ œํ’€์ด: ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด ์กฐํšŒํ•˜๋Š” ์กฐ๊ฑด ์„ค์ •ํ•˜๊ธฐ, LOWER
2024.02.28
๋ณดํ˜ธ์†Œ์— ๋Œ์•„๊ฐ€์‹  ํ• ๋จธ๋‹ˆ๊ฐ€ ๊ธฐ๋ฅด๋˜ ๊ฐœ๋ฅผ ์ฐพ๋Š” ์‚ฌ๋žŒ์ด ์ฐพ์•„์™”๋‹ค. ์ด ์‚ฌ๋žŒ์ด ๋งํ•˜๊ธธ ํ• ๋จธ๋‹ˆ๊ฐ€ ๊ธฐ๋ฅด๋˜ ๊ฐœ๋Š” ์ด๋ฆ„์— 'el'์ด ๋“ค์–ด๊ฐ„๋‹ค๊ณ . ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘ ์ด๋ฆ„์ด 'el'์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฝ‘์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ• ๊นŒ. ๋ฌธ์ œ๋Š”, ๊ฐœ์˜ ์ด๋ฆ„์„ ํŠน์ •ํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ๋Œ€์†Œ๋ฌธ์ž ์—ญ์‹œ ํ™•๋‹ตํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฑฐ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ WHERE์ ˆ์— ๋„ฃ์–ด ์ฃผ๋Š” ๋ฐฉํ–ฅ๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๋ฌธ์ž์—ด์„ ์ „๋ถ€ ๋Œ€๋ฌธ์ž๋‚˜ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ” ๋ฒ„๋ฆฌ๋Š” UPPER๋‚˜ LOWER๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. WHERE name LIKE LOWER('%EL%') ๋‚˜๋จธ์ง€๋Š” ์‰ฝ๋‹ค. ์กฐ๊ฑด์„ ์ฑ„์›Œ์„œ ์ฟผ๋ฆฌ๋ฅผ ๋งˆ์ € ์งœ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค. SELECT animal_id , name FROM animal_ins WHERE name L..
list_img
SQL ๋ฌธ์ œํ’€์ด: ๋ฐ์ดํ„ฐ์˜ ๊ทธ๋ฃน๋ณ„ ํ‰๊ท  ๊ธฐ๊ฐ„ ๋ฝ‘๊ธฐ, DATEDIFF/ AVG
2024.02.28
> ์—ฌ๊ธฐ ์–ด๋–ค ์ž๋™์ฐจ ๋Œ€์—ฌ์ ์ด ์žˆ๋‹ค. ์ด ์ž๋™์ฐจ ๋Œ€์—ฌ์ ์—์„œ๋Š” ๊ธฐ์กด ๊ณ ๊ฐ๋“ค์„ ํ™•์‹คํžˆ ์žก์•„๋‘๊ธฐ ์œ„ํ•ด ์ฃผ ๊ณ ๊ฐ์ธต์— ์ตœ๋Œ€ํ•œ์˜ ๊ฐ€๊ฒฉ ๋ฉ”๋ฆฌํŠธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ฒฉ ์ •์ฑ…์„ ๊ฐœํŽธํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ฒˆ EDAํƒ์ƒ‰์  ๋ฐ์ดํ„ฐ ๋ถ„์„๋Š” ์ด๋ฅผ ์œ„ํ•œ ๊ณ ๊ฐ ์„ธ๋ถ„ํ™” ๊ณผ์ •์ด๋‹ค. ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„์ด 7์ผ ์ด์ƒ์ธ ์ž๋™์ฐจ๋“ค์˜ ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„(์ปฌ๋Ÿผ๋ช…: average_duration) ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? ๋จผ์ € ๋ฌธ์ œ๋ฅผ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ „์ฒด ๋ฆฌ์ŠคํŠธ์˜ ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„์„ ๋ฆฌ์ŠคํŠธํ™”ํ•ด์•ผ ํ•œ๋‹ค. ํŒŒํŽธํ™”๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ์ฃผ๊ณ , GROUP BY car_id ์ด ๋ฐ์ดํ„ฐ์˜ ๊ธฐ์ค€์œผ๋กœ ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„์„ ๋ฝ‘๋Š”๋‹ค. ๋Œ€์—ฌ ๊ธฐ๊ฐ„์€ ๋Œ€์—ฌ์ข…๋ฃŒ์ผ๊ณผ ๋Œ€์—ฌ์‹œ์ž‘์ผ์˜ ์ฐจ๋กœ ๊ณ„์‚ฐ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ ๋Œ€์—ฌ์‹œ์ž‘์ผ ์—ญ์‹œ ํ•˜๋ฃจ๋กœ ๊ณ„์‚ฐ๋˜๊ธฐ ..
list_img
Tableau: ๊ณ„์‚ฐ๊ณผ ํ•„ํ„ฐ์˜ ์ž‘๋™ ์ˆœ์„œ, Order of Operation
2024.02.26
ํƒœ๋ธ”๋กœ์—์„œ ๊ฐ ๊ณ„์‚ฐ๊ณผ ํ•„ํ„ฐ๋Š” ๋‚ด๋ถ€ ์ง€์ •๋œ ์ฟผ๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์— ๋”ฐ๋ผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ๊ณ„์‚ฐ๊ณผ ํ•„ํ„ฐ๊ฐ€ ๋งž๋ฌผ๋ฆฐ ํ˜•ํƒœ๋กœ ์ง„ํ–‰๋˜๋ฉฐ ์„ธ๋ถ€์ ์ธ ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 01) ๋ฐ์ดํ„ฐ ์ถ”์ถœ ํ•„ํ„ฐ> 02) ๋ฐ์ดํ„ฐ ์›๋ณธ ํ•„ํ„ฐ> 03) ์ปจํ…์ŠคํŠธ ํ•„ํ„ฐ> 04) FIXED > 05) ์ฐจ์› ํ•„ํ„ฐ> 06) INCLUDE/ EXCLUDE/ ๋ธ”๋ Œ๋”ฉ> 07) ์ธก์ •๊ฐ’ ํ•„ํ„ฐ> 08) ํ…Œ์ด๋ธ” ๊ณ„์‚ฐ/ Clusters/ Totals/ Forecasts> 09) ํ…Œ์ด๋ธ” ๊ณ„์‚ฐ ํ•„ํ„ฐ> 10) ์ถ”์„ธ์„ / ์ฐธ์กฐ์„  ์–ด๋–ค ์ˆœ์„œ๋กœ ๊ณ„์‚ฐ๊ณผ ํ•„ํ„ฐ๊ฐ€ ์‹คํ–‰๋˜๋Š”์ง€์— ๋”ฐ๋ผ ๋•Œ๋•Œ๋กœ ๊ฒฐ๊ณผ๊ฐ’๋งˆ์ € ๋ฐ”๋€Œ๊ธฐ๋„ ํ•˜๋ฏ€๋กœ ์ž‘๋™ ์ˆœ์„œ๋Š” ๊ผญ ์ˆ™์ง€ํ•ด ๋‘˜ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด์ž. ๋‹น์‹ ์€ Furniture ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด์—์„œ ๋งค์ถœ ์ƒ์œ„ 3๊ฐœ์˜ ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ณด๊ณ  ์‹ถ๋‹ค. ๋ฌธ์ œ๋Š” ์—ฌ๊ธฐ์„œ ๋ฐœ์ƒํ•œ๋‹ค..
list_img
Tableau: LOD(Level of Detail Calculation) 1
2024.02.26
ํƒœ๋ธ”๋กœ์—์„œ ๊ณ„์‚ฐ์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ์ด๋ค„์ง„๋‹ค. ์ฒซ์งธ, ๋ฐ์ดํ„ฐ ์›๋ณธ์— ๋Œ€ํ•ด ๊ณ„์‚ฐ์„ ์ง„ํ–‰ํ•˜๋Š” ๊ธฐ๋ณธ ๊ณ„์‚ฐ. ๋‘˜์งธ, ํ˜„์žฌ ๋น„์ฃผ์–ผ๋ฆฌ์ œ์ด์…˜์— ํ‘œ์‹œ๋œ ํ•ญ๋ชฉ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ’์„ ๋ณ€ํ™˜ํ•ด ์…ˆํ•˜๋Š” ํ…Œ์ด๋ธ” ๊ณ„์‚ฐ. ์…‹์งธ, ์—ฐ์‚ฐํ•  ์„ธ๋ถ€ ์ˆ˜์ค€์„ ์ง€์ •ํ•ด ์…ˆํ•˜๋Š” LOD ๊ณ„์‚ฐ. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ด ์„ธ ๊ฐœ์˜ ๊ณ„์‚ฐ ์ค‘์—์„œ LOD ๊ณ„์‚ฐ์˜ ์ •์˜์™€ ์˜ˆ์ œ์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ๋‹ค๋ฃฌ๋‹ค. ํ…Œ์ด๋ธ” ๊ณ„์‚ฐ์„ ํ•  ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ž. ์›”๋งค์ถœ ๊ฐ’์„ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์ชผ๊ฐœ๋ฉด ๋ ˆ์ €, ๊ฐ€๊ตฌ, ์‹ํ’ˆ์˜ ์›”๋งค์ถœ ๊ฐ’์„ ๊ฐ๊ฐ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋ญ‰ํ……์ด๋กœ ์ชผ๊ฐœ ๋ฒ„๋ฆฐ๋‹ค๋ฉด ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ, ์ฆ‰ ๋‚š์‹œ๋Œ€์™€ ์บ ํ•‘ ํ…ํŠธ, ์˜์ž์™€ ์ฑ…์ƒ, ๋ฐ€ํ‚คํŠธ์™€ ๋ƒ‰๋™ ์‹ํ’ˆ์˜ ์›”๋งค์ถœ ๊ฐ’์„ ๋ณผ ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋Œ€๋กœ ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์›”๋งค์ถœ์„ ์ชผ๊ฐ ๋‹ค๋ฉด '๊ทธ๋ƒฅ ์นดํ…Œ๊ณ ๋ฆฌ'์˜ ์›”๋งค์ถœ ๊ฐ’์„ ๊ฐ๊ฐ ๋ณด๊ธฐ๋Š” ํž˜๋“ค๋‹ค. ๋‹ค์‹œ ..
list_img
SQL: mysql์—์„œ์˜ FULL OUTER JOIN
2024.02.21
์‹ค๋ฌด์—์„œ๋Š” ์ข…์ข… ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐใ…ก๊ธฐ์ค€ํ‚ค๊ฐ€ ๊ณต๋ฐฑ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ, ๋‹ค์‹œ ๋งํ•ด ํ•ฉ์ง‘ํ•ฉใ…ก๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค. ํƒ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์ด๋ฅผ FULL OUTER JOIN์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ง€์›ํ•˜์ง€๋งŒ, mysql์—์„œ๋Š” ์•„์‰ฝ๊ฒŒ๋„ ์ด๋ฅผ ๊ณต์‹์ ์œผ๋กœ ์ง€์›ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค. ๊ทธ๋Ÿฌ๋ฉด mysql์—์„œ๋Š” ํ•ฉ์ง‘ํ•ฉ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†๋ƒ๊ณ ? ๊ทธ๊ฑด ์•„๋‹ˆ๋‹ค. LEFT JOIN๊ณผ RIGHT JOIN์„ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ mysql์—์„œ๋„ ์ด๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์™ธ๊ตญ ๋ธ”๋กœ๊ทธ์— ํ•ด๋‹น ๋‚ด์šฉ์— ๋Œ€ํ•ด ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ํ‘œ์‹œํ•œ ํฌ์ŠคํŠธ๊ฐ€ ์žˆ์–ด ๋ฒˆ์—ญํ•ด ๊ฐ€์ ธ์™€ ๋ณธ๋‹ค. sales์™€ orders๋ผ๋Š” ๋‘ ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. sales์™€ orders์—๋Š” ๋™์ผํ•˜๊ฒŒ id์ฃผ๋ฌธ ์•„์ด๋””์™€ order_date(ํ˜•์‹์ด ์‚ด์ง ๋‹ค๋ฅธ)์ฃผ๋ฌธ ์ผ์ž, a..
list_img
SQL ๋ฌธ์ œํ’€์ด: ์กฐ๊ฑด์— ๋งž๋Š” ๋‹ค์ค‘ํ–‰ ์ถœ๋ ฅ, ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ+ ์œˆ๋„์šฐ ํ•จ์ˆ˜
2024.02.21
๋‹น์‹ ์€ A์‹ํ’ˆ ์˜์—…ํŒ€ ๋‹ด๋‹น์ž๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ์ •๋Ÿ‰์ ์œผ๋กœ ์ œํ’ˆ๋ณ„ ํŒ๋งค ์„ฑ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ ์ž ๋งˆํŠธ ์ „์‚ฐ ๊ธฐ์žฌ๋œ ์ž์‚ฌ ์ƒํ’ˆ ๊ธฐ๋ฐ˜์œผ๋กœ EDAํƒ์ƒ‰์  ๋ฐ์ดํ„ฐ ๋ถ„์„๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. food_product ํ…Œ์ด๋ธ”์—์„œ ์‹ํ’ˆ๋ถ„๋ฅ˜๋ณ„๋กœ ๊ฐ€๊ฒฉ์ด ๊ฐ€์žฅ ๋น„์‹ธ๊ฑฐ๋‚˜ ์‹ผ '๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ '์˜ category, price, product_name์„ ์กฐํšŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ์งœ์•ผ ํ• ๊นŒ? '์‹ํ’ˆ๋ถ„๋ฅ˜๋ณ„' ์ด๋ผ ํ–ˆ์œผ๋‹ˆ ์ƒํ’ˆ์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด์•ผ ํ•œ๋‹ค. ๋˜, GROUP BY์™€ ์œˆ๋„์šฐ ํ•จ์ˆ˜ ์ค‘์—๋Š” ์œˆ๋„์šฐ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์™œ๋ƒ๋ฉด ์—ฐ์‚ฐ๋œ ๊ฒฐ๊ณผ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์—ฐ์‚ฐ์— ๋งž๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋กœ์šฐ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ. ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ข€ ๋” ๊นŠ์ด ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์œˆ๋„์šฐ ํ•จ์ˆ˜Window Function VS GROUP BY ํฌ์ŠคํŠธ๋ฅผ..

 

 

 

02์›” 26์ผ์ž๋กœ ๋น…์ฟผ๋ฆฌ์— GROUP BY ALL ๋ฌธ๋ฒ•์ด ์ถ”๊ฐ€๋๋‹ค. ๊ธฐ์กด์—๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋ฌถ๊ณ  ์‹ถ์œผ๋ฉด GROUP BY์— ์ปฌ๋Ÿผ์„ ์ง€์ •ํ•ด์ค˜์•ผ ํ–ˆ๋Š”๋ฐ, GROUP BY ALL ๋ฌธ๋ฒ•์˜ ์ถ”๊ฐ€๋กœ ์ด์ œ ๋น…์ฟผ๋ฆฌ๊ฐ€ SELECT ์ ˆ์—์„œ ๊ทธ๋ฃนํ™”ํ•  ํ‚ค๋ฅผ ์•Œ์•„์„œ ๋ฌถ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค.

 

 

๋ฌถ๋Š” ์กฐ๊ฑด์€ ๋‹จ์ˆœํ•œ๋ฐ, ์ง‘๊ณ„ ํ•จ์ˆ˜๋‚˜ ์œˆ๋„์šฐ ํ•จ์ˆ˜ ์™ธ ๋ช‡ ๊ฐ€์ง€ ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์ง€์ •ํ•œ ๋ถˆ๊ฐ€ ํ˜•ํƒœ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์ปฌ๋Ÿผ์€ ๋‹ค ๊ทธGROUP BY์— ํฌํ•จ์‹œํ‚ค๋Š” ์‹์ด๋‹ค. ์ด ๋•Œ ์ƒ๊ธฐ ์กฐ๊ฑด๋“ค์„ ์ œ์™ธํ•˜๊ณ  ๋‚œ ํ›„, ๋‚จ์€ SELECT ํ•ญ๋ชฉ ์ค‘ ๊ทธ๋ฃนํ™” ๋ถˆ๊ฐ€ํ•œ ์œ ํ˜•์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

 

 

๋‹ค์Œ ์˜ˆ์ œ์—์„œ ์ฟผ๋ฆฌ๋Š” first_name๊ณผ last_name ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”๋œ๋‹ค. total_points๋Š” ์ง‘๊ณ„ ํ•จ์ˆ˜ ๊ฐ’์ด๋ฏ€๋กœ ์ œ์™ธ๋๋‹ค.

 

WITH PlayerStats AS (
  SELECT 'Adams' as LastName, 'Noam' as FirstName, 3 as PointsScored UNION ALL
  SELECT 'Buchanan', 'Jie', 0 UNION ALL
  SELECT 'Coolidge', 'Kiran', 1 UNION ALL
  SELECT 'Adams', 'Noam', 4 UNION ALL
  SELECT 'Buchanan', 'Jie', 13)
  
SELECT SUM(PointsScored) AS total_points
  		, FirstName AS first_name
  		, LastName AS last_name
FROM PlayerStats
GROUP BY ALL;

 

/*--------------+------------+-----------+
 | total_points | first_name | last_name |
 +--------------+------------+-----------+
 | 7            | Noam       | Adams     |
 | 13           | Jie        | Buchanan  |
 | 1            | Kiran      | Coolidge  |
 +--------------+------------+-----------*/

 

 

๋‹ค์Œ ์˜ˆ์ œ ์—ญ์‹œ ์ฟผ๋ฆฌ๋Š” first_name๊ณผ last_name ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”๋œ๋‹ค. total_points๋Š” ์œˆ๋„์šฐ ํ•จ์ˆ˜ ๊ฐ’์ด๋ฏ€๋กœ ์ œ์™ธ๋๋‹ค.

 

WITH PlayerStats AS (
  SELECT 'Adams' as LastName, 'Noam' as FirstName, 3 as PointsScored UNION ALL
  SELECT 'Buchanan', 'Jie', 0 UNION ALL
  SELECT 'Coolidge', 'Kiran', 1 UNION ALL
  SELECT 'Adams', 'Noam', 4 UNION ALL
  SELECT 'Buchanan', 'Jie', 13)
  
SELECT COUNT(*) OVER () AS total_people
  		, FirstName AS first_name
  		, LastName AS last_name
FROM PlayerStats
GROUP BY ALL;

 

/*--------------+------------+-----------+
 | total_people | first_name | last_name |
 +--------------+------------+-----------+
 | 3            | Noam       | Adams     |
 | 3            | Jie        | Buchanan  |
 | 3            | Kiran      | Coolidge  |
 +--------------+------------+-----------*/

 

 

์—ฌ๋Ÿฌ SELECT ํ•ญ๋ชฉ์ด FROM ์ ˆ์˜ ๋™์ผํ•œ ๋ถ€๋ถ„์„ ์ฐธ๊ณ ํ•œ๋‹ค๋ฉด ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์žฅ ์ง์ ‘์ ์œผ๋กœ ์ง€์ •ํ•œ ํ•˜๋‚˜๋งŒ GROUP BY์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค. ์•„๋ž˜ ์˜ˆ์ œ์—์„œ coordinates์˜ ๋‘ ๊ตฌ์„ฑ ์š”์†Œ์ธ Values.x์™€ Values.y๊ฐ€ ์ด๋ฏธ ์ง์ ‘ ๊ฒฝ๋กœ๋กœ ์ง€์ •๋ผ ์žˆ๋Š” ์ƒํƒœ์ด๋ฏ€๋กœ coordinates ์ปฌ๋Ÿผ์€ GROUP BY์—์„œ ์ œ์™ธ๋๋‹ค.

 

WITH Values AS (
  SELECT 1 AS x, 2 AS y
  UNION ALL SELECT 1 AS x, 4 AS y
  UNION ALL SELECT 2 AS x, 5 AS y
)

SELECT Values.x AS x_coordinate
  	, Values.y AS y_coordinate
  	, [Values.x, Values.y] AS coordinates
FROM Values
GROUP BY ALL

 

/*--------------+--------------+-------------+
 | x_coordinate | y_coordinate | coordinates |
 +--------------+--------------+-------------+
 | 1            | 4            | [1, 4]      |
 | 1            | 2            | [1, 2]      |
 | 2            | 5            | [2, 5]      |
 +--------------+--------------+-------------*/

 

 

 

 

 

๋”๋ณด๊ธฐ
TOOLS/SQL

 

 

 

HTML๊ณผ CSS๋Š” ์ด์šฉ์ž์˜ ๋™์ž‘์— ๋”ฐ๋ฅธ ๋ณ€ํ™”๋ฅผ ์ผ๋ฐ˜์ ์œผ๋กœ ํ™”๋ฉด์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์š”์†Œ ์œ„์— ์ปค์„œ๋ฅผ ์˜ฌ๋ ค ๋†“๊ฑฐ๋‚˜ ๋—์„ ๋•Œ์ฒ˜๋Ÿผ ์ž์ฃผ ๊ตฌํ˜„ํ•  ํ•„์š”์„ฑ์ด ์žˆ๋Š” ๋™์ž‘ ์ผ๋ถ€๋Š” ๊ฐ€์ƒ ํด๋ž˜์Šค๋‚˜ ์š”์†Œ์˜ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ฐ€์ƒ ํด๋ž˜์Šค์™€ ์š”์†Œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์—ฌ๋Ÿฌ ์„ ํƒ์ž๊ฐ€ ํ•œ ์š”์†Œ๋ฅผ ๊พธ๋ฉฐ์ค„ ๋•Œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ‘œ๊ธฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์ฒด์„ฑ์˜ ์ •์˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. <ํ•ด๋‹น ํฌ์ŠคํŠธ๋Š” ๋น„์ „๊ณต์ž๋ฅผ ์œ„ํ•œ HTML/CSS ๊ฐ•์˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋๋‹ค>

 

 

 

๊ฐ€์ƒ ํด๋ž˜์Šคpseudo class

 

์˜ˆ๋ฅผ ๋“ค์–ด, <p>๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ด <p>์— ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ๋งŒ ํŠน์ • ์Šคํƒ€์ผ์„ ์ฃผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? ํ•ด๋‹น ๋™์ž‘์„ ์œ„ํ•ด ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

 

(1) ์ž„์˜์˜ ํด๋ž˜์Šค ์„ ํƒ์ž๋ฅผ ์„ ์–ธํ•ด ํŠน์ • ์Šคํƒ€์ผ ๊ทœ์น™์„ ๋งŒ๋“ ๋‹ค.

(2) <p> ์š”์†Œ์— ์ปค์„œ๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋ฉด ํด๋ž˜์Šค๋ฅผ ์ง‘์–ด๋„ฃ๋Š”๋‹ค.

(3) <p> ์š”์†Œ์—์„œ ์ปค์„œ๊ฐ€ ๋น ์ง€๋ฉด ํด๋ž˜์Šค๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

 

์ด๋Ÿฐ ํ˜•ํƒœ์˜ ๊ธฐ๋Šฅ์€ HTML๊ณผ CSS์—์„œ๋Š” ๋งŒ๋“ค์–ด ๋‚ด๊ธฐ ์–ด๋ ต๋‹ค. 2, 3๋ฒˆ์€ ๋™์ ์œผ๋กœ ๋ณ€ํ™”๋ผ์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ธ๋ฐ, ๋‘ ์–ธ์–ด๋Š” ์ •์ ์ธ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ CSS์—์„œ๋Š” ํ”ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ์—ฌ๋Ÿฌ ํŒจํ„ด์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ์ •์˜ํ•ด ๋†“๊ณ  ์ด๋ฅผ ๊ฐ€์ƒ ํด๋ž˜์Šค ํ˜•ํƒœ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๋‹ค.

 

:pseudo-class {
    property: value;
}

 

๊ฐ€์ƒ ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธํ˜•์€ ์œ„์™€ ๊ฐ™๋‹ค. ๊ฐ€์ƒ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด, ๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ๋Œ์–ด์˜ค์ง€ ์•Š๊ณ ๋„ CSS ๋‚ด์—์„œ ๋™์ ์ธ ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค. ์•„๋ž˜๋ถ€ํ„ฐ๋Š”, ๊ธฐ๋ณธ์ ์ธ ๊ฐ€์ƒ ํด๋ž˜์Šค์˜ ์œ ํ˜•์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค.

 



๋ฌธ์„œ ๊ตฌ์กฐ์™€ ๊ด€๋ จ๋œ ๊ฐ€์ƒ ํด๋ž˜์Šค

 

first-child : ์ฒซ ๋ฒˆ์งธ ์ž์‹ ์š”์†Œ ์„ ํƒ.
last-child : ๋งˆ์ง€๋ง‰ ์ž์‹ ์š”์†Œ ์„ ํƒ.

 

<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JS</li>
</ul>

 

li:first-child { color: red; }
li:last-child { color: blue; }

 

ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฒ˜์Œ <li>์™€ ๋งˆ์ง€๋ง‰ <li>์— ๊ฐ๊ฐ ์ƒ‰์ƒ์ด ์ ์šฉ๋œ๋‹ค. ์ฆ‰, ๊ฐ€์ƒ ์„ ํƒ์ž๋กœ ์œ„์™€ ๊ฐ™์ด ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๊ฐ€์ƒ ์„ ํƒ์ž ์—†์ด ๊ตฌํ˜„๋  ์ˆ˜๋„ ์žˆ๋‹ค.

 

<ul>
    <li class="first-child">HTML</li>
    <li>CSS</li>
    <li class="last-child">JS</li>
</ul>

 

 

 

์•ต์ปค ์š”์†Œ์™€ ๊ด€๋ จ๋œ ๊ฐ€์ƒ ํด๋ž˜์Šค

 

:link : ํ•˜์ดํผ ๋งํฌ์ด๋ฉด์„œ ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์•ต์ปค.
:visited : ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ํ•˜์ดํผ๋งํฌ๋ฅผ ์˜๋ฏธ.

 

a:link { color: blue; }
a:visited { color: gray; }

 

 

 

์‚ฌ์šฉ์ž ๋™์ž‘๊ณผ ๊ด€๋ จํ•œ ๊ฐ€์ƒ ํด๋ž˜์Šค

 

์ด๊ฒƒ๋“ค๋„ ์ฃผ๋กœ <a>์— ๋งŽ์ด ์“ฐ์ธ๋‹ค. ๋‹ค๋งŒ ์•ต์ปค ๊ด€๋ จ ํด๋ž˜์Šค์™€ ๋‹ฌ๋ฆฌ ์กฐ๊ฑด๋งŒ ๋งž์œผ๋ฉด ๋‹ค๋ฅธ ์š”์†Œ์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.


focus: ํ˜„์žฌ ์ž…๋ ฅ ์ดˆ์ ์„ ๊ฐ€์ง„ ์š”์†Œ์— ์ ์šฉ
hover: ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ๊ฐ€ ์žˆ๋Š” ์š”์†Œ์— ์ ์šฉ
active: ์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ ํ™œ์„ฑํ™”๋œ ์š”์†Œ์— ์ ์šฉ

 

a:focus { background-color: yellow; }
a:hover { font-weight: bold; }
a:active { color: red; }

 



๊ฐ€์ƒ ์š”์†Œ pseudo element

 

::pseudo-element {
    property: value;
}

 

๊ฐ€์ƒ ํด๋ž˜์Šค์ฒ˜๋Ÿผ ๋ฌธ์„œ ๋‚ด์— ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ๋ฏธ๋ฆฌ ์ •์˜ํ•œ ์œ„์น˜์— ์‚ฝ์ž…๋˜๋„๋ก ์•ฝ์†๋˜์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ, ๊ฐ€์ƒ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค. ๊ฐ€์ƒ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด HTML ์ฝ”๋“œ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ตฌ์กฐ ์š”์†Œ์— ์Šคํƒ€์ผ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์ƒ ํด๋ž˜์Šค์™€ ๋™์ผํ•˜๊ฒŒ ์ฝœ๋ก ์œผ๋กœ ์„ ์–ธํ–ˆ์œผ๋‚˜, CSS3๋ถ€ํ„ฐ๋Š” ๊ฐ€์ƒ ํด๋ž˜์Šค์™€์˜ ๊ตฌ๋ถ„์„ ์œ„ํ•ด ::(๋”๋ธ” ์ฝœ๋ก ) ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๊ฐœํŽธ๋๋‹ค. ๋‹ค๋งŒ ํ•˜์œ„ ๋ธŒ๋ผ์šฐ์ €์—์„œ :: ๋ฌธ๋ฒ•์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ์ด ๋•Œ๋Š” ; ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

before : ๊ฐ€์žฅ ์•ž์— ์š”์†Œ๋ฅผ ์‚ฝ์ž….
after : ๊ฐ€์žฅ ๋’ค์— ์š”์†Œ๋ฅผ ์‚ฝ์ž….
first-line : ์š”์†Œ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์žˆ๋Š” ํ…์ŠคํŠธ.
first-letter : ๋ธ”๋ก ๋ ˆ๋ฒจ ์š”์†Œ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž.

 

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>

 

p::before { content: "###" }
p::after { content: "!!!" }
p::first-line { ... }
p::first-letter { ... }

 

before์™€ after ๊ฐ€์ƒ ์š”์†Œ๋Š” ์• ์ดˆ์— ๋‚ด์šฉ์ด ์—†๋Š” ์ƒํƒœ๋กœ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด์šฉ์„ ๋„ฃ๊ธฐ ์œ„ํ•ด์„œ๋Š” content ์†์„ฑ์„ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋Š” ์š”์†Œ๋ฅผ ๊ตฌ์ฒดํ™”ํ•ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

<p>
    <first-letter>L</first-letter>orem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
<p>
    <!-- ๋ชจ๋‹ˆํ„ฐ ๊ฐ€๋กœ ํ•ด์ƒ๋„์— ๋”ฐ๋ผ ์š”์†Œ๊ฐ€ ํฌํ•จํ•˜๋Š” ๋‚ด์šฉ์ด ๋ณ€๋™๋ฉ๋‹ˆ๋‹ค. -->
    <first-line>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiu ..(..์–ด๋”˜๊ฐ€์ฏค..) </first-line>... unt ut labore et dolore magna aliqua.
</p>

 

 

 

์„ ์–ธ์˜ ๊ตฌ์ฒด์„ฑ

 

h1 { color: red; }
body h1 { color: green; }

 

์š”์†Œ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์„ ํƒ์ž๋ฅผ ์ด์šฉํ•ด ๊ฐ™์€ ์š”์†Œ๋ฅผ ์„ ํƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์œ„ ์ฝ”๋“œ์—์„œ, ๋‘ ๊ทœ์น™์€ ๋ชจ๋‘ <h1>์„ ์ง€์ •ํ•˜์ง€๋งŒ ๋‘ ๊ทœ์น™์ด ์ง€์ •ํ•˜๋Š” ์Šคํƒ€์ผ์€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค. ์ด๋Ÿด ๋•Œ <h1>์€ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„๋ ๊นŒ.

 

์„ ํƒ์ž์—๋Š” ์–ด๋–ค ๊ทœ์น™์ด ์šฐ์„ ์œผ๋กœ ์ ์šฉ๋ผ์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ •ํ•ด์ง„ ๊ทœ์น™์ด ์žˆ๋‹ค. ์ด ๊ทœ์น™์„ '๊ตฌ์ฒด์„ฑ'์ด๋ผ๊ณ  ํ•œ๋‹ค. ๊ตฌ์ฒด์„ฑ์€ ์„ ํƒ์ž๋ฅผ ์–ผ๋งˆ๋‚˜ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ–ˆ๋А๋ƒ๋ฅผ ์ˆ˜์น˜ํ™”ํ•œ ๊ฒƒ์œผ๋กœ, ๊ตฌ์ฒด์„ฑ์˜ ๊ฐ’์ด ํด ์ˆ˜๋ก ์šฐ์„ ์œผ๋กœ ์ ์šฉ๋œ๋‹ค.

 

0, 0, 0, 0

 

๊ตฌ์ฒด์„ฑ์€ ์œ„์™€ ๊ฐ™์ด ๋„ค ๊ฐœ์˜ ์ˆซ์ž ๊ฐ’์œผ๋กœ ์ด๋ค„์ ธ ์žˆ๋‹ค. ๊ฐ’์„ ๋น„๊ตํ•  ๋•Œ๋Š” ์ขŒ์ธก์— ์žˆ๋Š” ๊ฐ’๋ถ€ํ„ฐ ๋น„๊ตํ•˜๋ฉฐ, ์ขŒ์ธก ๋ถ€๋ถ„์˜ ์ˆซ์ž๊ฐ€ ํด ์ˆ˜๋ก ๋†’์€ ๊ตฌ์ฒด์„ฑ์„ ๊ฐ–๋Š”๋‹ค. ๊ตฌ์ฒด์„ฑ์€ ์•„๋ž˜์˜ ๊ทœ์น™๋Œ€๋กœ ๊ณ„์‚ฐ๋œ๋‹ค. 

 0, 1, 0, 0 : ์„ ํƒ์ž์— ์žˆ๋Š” ๋ชจ๋“  id ์†์„ฑ๊ฐ’
 0, 0, 1, 0 : ์„ ํƒ์ž์— ์žˆ๋Š” ๋ชจ๋“  class ์†์„ฑ๊ฐ’, ๊ธฐํƒ€ ์†์„ฑ, ๊ฐ€์ƒ ํด๋ž˜์Šค
 0, 0, 0, 1 : ์„ ํƒ์ž์— ์žˆ๋Š” ๋ชจ๋“  ์š”์†Œ, ๊ฐ€์ƒ ์š”์†Œ

 0, 0, 0, 0 : ์ „์ฒด ์„ ํƒ์ž

 

h1 { ... }  /* 0,0,0,1 */
body h1 { ... }  /* 0,0,0,2 */
.grape { ... }  /* 0,0,1,0 */
*.bright { ... }  /* 0,0,1,0 */
p.bright em.dark { ... }  /* 0,0,2,2 */
#page { ... }  /* 0,1,0,0 */
div#page { ... }  /* 0,1,0,1 */

 

 


์ธ๋ผ์ธ ์Šคํƒ€์ผ

 

p#page { color: red; }

 

<p id="page" style="color:blue">Lorem impusm dolor sit.</p>

 

์œ„ ๋‘ ์Šคํƒ€์ผ ์„ ์–ธ๋ฌธ์„ ๋ณด์ž. ์ „์ž๋Š” 0, 1, 0, 1์˜ ๊ตฌ์ฒด์„ฑ์„ ๊ฐ€์ง€๋Š” ์„ ํƒ์ž๋กœ ์Šคํƒ€์ผ์„ ์„ ์–ธํ•œ ๊ฒƒ์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ์š”์†Œ์— ์ง์ ‘ ์ธ๋ผ์ธ ์Šคํƒ€์ผ ๋ฐฉ์‹์œผ๋กœ ์„ ์–ธํ•œ ๊ฒƒ์ด๋‹ค. ๋‘˜ ์ค‘ ๋ฌด์—‡์ด ์šฐ์„ ์ˆœ์œ„๋กœ ์ ์šฉ๋ ๊นŒ? ์ •๋‹ต์€ ํ›„์ž๋‹ค. ์ธ๋ผ์ธ ์Šคํƒ€์ผ์˜ ๊ตฌ์ฒด์„ฑ ๊ฐ’์€ 1, 0, 0, 0์ด๋ฉฐ ๊ทœ์น™๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ๊ตฌ์ฒด์„ฑ์„ ๊ฐ–๋Š”๋‹ค. 
 



๊ทœ์น™์— ์šฐ์„ ๊ถŒ ์ ์šฉํ•˜๊ธฐ, important

 

p#page { color: red !important; }

 

<p id="page" style="color:blue">Lorem impusm dolor sit.</p>

 

important ํ‚ค์›Œ๋“œ๋Š” ๋ณ„๋„์˜ ๊ตฌ์ฒด์„ฑ ๊ฐ’์€ ์—†์ง€๋งŒ ๋ชจ๋“  ๊ตฌ์ฒด์„ฑ์„ ๋ฌด์‹œํ•˜๊ณ  ์šฐ์„ ๊ถŒ์„ ๊ฐ–๋Š”๋‹ค. ์†์„ฑ๊ฐ’ ๋’ค์— ํ•œ ์นธ ๊ณต๋ฐฑ์„ ์ฃผ๊ณ  ๋А๋‚Œํ‘œ ๊ธฐํ˜ธ์™€ ํ•จ๊ป˜ ์“ฐ๋ฉด important๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ <p>์—๋Š” important๋กœ ์ธํ•ด color: red๊ฐ€ ์ ์šฉ๋œ๋‹ค.
 


์†์„ฑ์˜ ์ƒ์†

 

h1 { color: gray; }

 

<h1>Hello, <em>CSS</em></h1>

 

์œ„ ์ฝ”๋“œ์—์„œ <em>์€ ๋ถ€๋ชจ์ธ <h1>์˜ color: grey๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. ๋‹ค๋งŒ, ๋ชจ๋“  ๋ถ€๋ชจ์˜ ์†์„ฑ์ด ์ž์‹์—๊ฒŒ ์ƒ์†๋˜๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค. ์ƒ์‹์ ์œผ๋กœ ๊ตฌ๋ถ„๋  ๋งŒํ•œ ์†์„ฑ ์™ธ, margin/ padding/ background/ border ๋“ฑ์€ ์ƒ์†๋˜์ง€ ์•Š๋Š”๋‹ค.

 



์ƒ์† ์†์„ฑ์˜ ๊ตฌ์ฒด์„ฑ

 

* { color: red; }
h1#page { color: gray; }

  

<h1 id="page">Hello, <em>CSS</em></h1>

 

์œ„ ์ฝ”๋“œ์—์„œ, <em>์—๋Š” color: red๊ฐ€ ์ ์šฉ๋œ๋‹ค. ์ƒ์†๋œ ์†์„ฑ์€ ๊ตฌ์ฒด์„ฑ์„ ๊ฐ€์ง€์ง€ ๋ชป ํ•˜๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์ž.

 

 

 

 

 

 

๋”๋ณด๊ธฐ
TOOLS/Frontend

 

 

 

์„ ํƒ์ž๋Š” CSS์—์„œ ์Šคํƒ€์ผ์„ ์ž…ํž HTML ๋“ฑ ๋งˆํฌ์—… ์–ธ์–ด์˜ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋œปํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ CSS ์ฝ”๋“œ๋Š” A { (B): (C); } ํ˜•ํƒœ๋กœ ์ด๋ค„์ ธ ์žˆ๋Š”๋ฐ, ์Šคํƒ€์ผ์„ ๋‚˜์—ดํ•œ ์ค‘๊ด„ํ˜ธ ์•ž ๋ถ€๋ถ„์— ์˜ค๋Š” A ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์„ ํƒ์ž๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ๋Š” ์„ ํƒ์ž์˜ ์œ ํ˜•๊ณผ ์กฐํ•ฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์„ ํƒ์ž์™€ ๋ฌธ์„œ์˜ ๊ด€๊ณ„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•ด ๋ณธ๋‹ค. <ํ•ด๋‹น ํฌ์ŠคํŠธ๋Š” ๋น„์ „๊ณต์ž๋ฅผ ์œ„ํ•œ HTML/CSS ๊ฐ•์˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋๋‹ค>

 

 

 

์š”์†Œ ์„ ํƒ์ž

 

h1 { color: yellow; }
h2 { color: yellow; }
h3 { color: yellow; }
h4 { color: yellow; }
h5 { color: yellow; }
h6 { color: yellow; }

 

์„ ํƒ์ž ์ค‘ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์„ ํƒ์ž๋กœ, ์„ ํƒ์ž ๋ถ€๋ถ„์— ํƒœ๊ทธ ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ€๋Š” ์ ์„ ๋”ฐ์„œ ํƒœ๊ทธ ์„ ํƒ์ž๋ผ๊ณ ๋„ ํ•œ๋‹ค. ์š”์†Œ ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์„œ ๋‚ด ์„ ํƒ์ž์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ์— ์Šคํƒ€์ผ ๊ทœ์น™์ด ์ ์šฉ๋œ๋‹ค.

 

 

 

๊ทธ๋ฃนํ™”

 

h1, h2, h3, h4, h5, h6 { color: yellow; }
* { color: yellow; }


์„ ํƒ์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‰ผํ‘œ๋ฅผ ์ด์šฉํ•ด์„œ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ๊ณ , asterisk ๊ธฐํ˜ธ(*)๋กœ ๋ฌธ์„œ ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์„ ํƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

 

h1 { color: yellow; font-size: 2em; background-color: gray; }
h1, h2, h3, h4, h5, h6 { color: yellow; font-size: 2em; background-color: gray; }


 ์„ ํƒ์ž ๋ฟ ์•„๋‹ˆ๋ผ ์„ ์–ธ๋„ ๊ทธ๋ฃนํ™” ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฌผ๋ก  ์„ ํƒ์ž์™€ ์„ ์–ธ์„ ๋™์‹œ์— ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

์š”์†Œ ์„ ํƒ์ž์˜ ํ•œ๊ณ„

 

์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

 

<dl>
    <dt>HTML</dt>
    <dd><span>HTML</span>์€ ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.</dd>
    <dt>CSS</dt>
    <dd><span>CSS</span>๋Š” ๋ฌธ์„œ์˜ ํ‘œํ˜„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.</dd>
</dl>

 

๋‹น์‹ ์€ ํ•ด๋‹น HTML ๋ฌธ์„œ์˜ "HTML" ๋ถ€๋ถ„์—๋Š” ๋ณด๋ผ์ƒ‰ ๊ธ€์ž๋ฅผ ์ง€์ •ํ•˜๊ณ , "CSS" ๋ถ€๋ถ„์—๋Š” ๋ฐ‘์ค„์„ ์„ ์–ธํ•˜๊ณ  ์‹ถ๋‹ค. ํ•˜์ง€๋งŒ ์š”์†Œ ์„ ํƒ์ž๋กœ๋Š” ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ๋ฌถ์—ฌ ์žˆ๋Š” ์š”์†Œ๋ฅผ ๊ฐ๊ฐ ์„ ํƒํ•ด์„œ ๊ทœ์น™์„ ์ ์šฉํ•˜๊ธฐ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. <dt>์— ๋ณด๋ผ์ƒ‰์„ ์ง€์ •ํ•˜๋ฉด "CSS"๋„ ๋ณด๋ผ์ƒ‰์œผ๋กœ ๋ณ€ํ•  ๊ฒƒ์ด๊ณ , ๋ฐ˜๋Œ€๋กœ <dt>์— ๋ฐ‘์ค„์„ ๊ทธ์œผ๋ฉด "HTML"์—๋„ ๋™์ผํ•˜๊ฒŒ ๋ฐ‘์ค„์ด ๊ทธ์–ด์งˆ ๊ฒƒ์ด๋‹ค. ๋‹น์‹ ์ด ์›ํ•˜๋Š” ๋ฐฉ์‹๋Œ€๋กœ ๋ฌธ๋งฅ๋งˆ๋‹ค ์Šคํƒ€์ผ์„ ๊ฐ๊ฐ ์ ์šฉํ•  ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ? 

 

 

 

class ์„ ํƒ์ž

 

.foo { font-size: 30px; }

 

<p class="foo"> ... </p>

 

์š”์†Œ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  ์Šคํƒ€์ผ ๊ทœ์น™์„ ์ ์šฉ์‹œํ‚ค๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€ class ์„ ํƒ์ž๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. HTML์—์„œ ๋™์ผํ•œ ์Šคํƒ€์ผ์„ ์ ์šฉ๋ฐ›์„ class๋ช…์„ ์ ์–ด ๋†“๊ณ  CSS์—์„œ ์ ์šฉํ•  ๊ทœ์น™์„ ์จ ๋†“์œผ๋ฉด ๋™์ผํ•œ class๋ช…์„ ๊ฐ€์ง„ ๋ชจ๋“  ์š”์†Œ์— ๋™์ผํ•œ ์Šคํƒ€์ผ ๊ทœ์น™์ด ์ ์šฉ๋œ๋‹ค. ๊ทธ๋Ÿผ class ์„ ํƒ์ž๋ฅผ ์ด์šฉํ•ด ์š”์†Œ ์„ ํƒ์ž๋กœ ๊ตฌํ˜„ํ•ด๋‚ด์ง€ ๋ชป ํ–ˆ๋˜ ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•ด ๋ณด์ž.

 

.html { color: purple; }
.css { text-decoration: underline; }

 

<dl>
    <dt class="html">HTML</dt>
    <dd><span class="html">HTML</span>์€ ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.</dd>
    <dt class="css">CSS</dt>
    <dd><span class="css">CSS</span>๋Š” ๋ฌธ์„œ์˜ ํ‘œํ˜„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.</dd>
</dl>

 

์ด๋•Œ, ํ•œ ์š”์†Œ๋Š” class ์†์„ฑ์„ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ class ๊ฐ’์„ ๋„ฃ์–ด ์ฃผ๋ฉด ๋œ๋‹ค. 

 

.foo { font-size: 30px; }
.bar { color: blue; }

 

<p class="foo bar"> ... </p>

 

์œ„ HTML๋ฌธ์˜ <p> ์•ˆ์—๋Š” "foo"์™€ "bar"๋ผ๋Š” ๋‘ ๊ฐœ์˜ class๊ฐ€ ์„ ์–ธ๋ผ ์žˆ๋‹ค. CSS๋ฌธ์—๋Š” ๋˜ foo class๊ฐ€ 30px์˜ ํฐํŠธ ํฌ๊ธฐ๋ฅผ ๊ฐ–๊ฒŒ, bar class๋Š” ๊ธ€์ž๋ฅผ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ์ ์šฉํ•˜๋„๋ก ์„ค์ •๋ผ ์žˆ๋‹ค. ์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, <p>์— foo, bar ๋‘˜ ๋ชจ๋‘์˜ ๊ทœ์น™์ด ์ ์šฉ๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

id ์„ ํƒ์ž

 

#bar { background-color: yellow; }

 

<p id="bar"> ... </p>

 

id ์„ ํƒ์ž๋Š” class ์„ ํƒ์ž์™€ ๊ฑฐ์˜ ์œ ์‚ฌํ•˜๋‹ค. ๋‹ค๋งŒ .(๋งˆ์นจํ‘œ) ๋Œ€์‹  #(ํ•ด์‹œ) ๊ธฐํ˜ธ๋ฅผ ์“ด๋‹ค๋Š” ์ ๊ณผ, ์š”์†Œ์— class ์†์„ฑ ๋Œ€์‹  id ์†์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค. ๋˜, ์—ฌ๋Ÿฌ ์š”์†Œ์— ์ค‘๋ณต ์„ ์–ธ๋  ์ˆ˜ ์žˆ๋Š” class์™€ ๋‹ค๋ฅด๊ฒŒ id๋Š” ๋ฌธ์„œ ๋‚ด์—์„œ ๋‹จ ํ•œ ๋ฒˆ๋งŒ ์“ฐ์ผ ์ˆ˜ ์žˆ๋‹ค. 
 

 

์„ ํƒ์ž์˜ ์กฐํ•ฉ

 

/* ์š”์†Œ์™€ class์˜ ์กฐํ•ฉ */
p.bar { ... }

/* ๋‹ค์ค‘ class */
.foo.bar { ... }

/* id์™€ class์˜ ์กฐํ•ฉ */
#foo.bar { ... }

 

์œ„ ์˜ˆ์ œ์™€ ๊ฐ™์ด, ์—ฌ๋Ÿฌ ์„ ํƒ์ž๋ฅผ ์กฐํ•ฉํ•ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 


์†์„ฑ ์„ ํƒ์ž

 

p[class] { color: silver; }
p[class][id] { text-decoration: underline; }

 

<p class="foo">Hello</p>
<p class="bar">CSS</p>
<p class="baz" id="title">HTML</p>

 

์†์„ฑ ์„ ํƒ์ž๋Š” ํƒ€ ์„ ํƒ์ž์™€ ๋‹ฌ๋ฆฌ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด ๋ฌถ๊ณ  ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ์†์„ฑ ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ€๋Š” ์„ ํƒ์ž๋‹ค. ์š”์†Œ์— ํ•ด๋‹น ์ด๋ฆ„์˜ ์†์„ฑ์ด ์žˆ๋‹ค๋ฉด ์ ์šฉ๋œ๋‹ค.

 

 

 

์ •ํ™•ํ•œ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ ํƒ

 

<p class="foo">Hello</p>
<p class="bar">CSS</p>
<p class="baz" id="title">HTML</p>

 

class, id๊ฐ’ ์กด์žฌ ์ž์ฒด๋กœ ๋‘๋ฃจ๋ญ‰์ˆ  ๋ฌถ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด์ฒ˜๋Ÿผ ๋ช…ํ™•ํ•œ ์†์„ฑ์„ ์ง€์ •ํ•ด ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์†์„ฑ ์„ ํƒ์ž์— ์†์„ฑ๊ฐ’๊นŒ์ง€ ์ง€์ •ํ•ด ์ฃผ๋ฉด ๋™์ผํ•œ ์†์„ฑ์— ๋™์ผํ•œ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง„ ๋ถ€๋ถ„์—๋งŒ ์Šคํƒ€์ผ์ด ์ ์šฉ๋œ๋‹ค.

 

๋ถ€๋ถ„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ ํƒ

 

<p class="color hot">red</p>
<p class="cool color">blue</p>
<p class="colorful nature">rainbow</p>

 

p[class~="color"] { font-style: italic; }
p[class^="color"] { font-style: italic; }
p[class$="color"] { font-style: italic; }
p[class*="color"] { font-style: italic; }

 

[class~="bar"] : class ์†์„ฑ์˜ ๊ฐ’์ด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ "bar" ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋˜๋Š” ์š”์†Œ ์„ ํƒ.
[class^="bar"] : class ์†์„ฑ์˜ ๊ฐ’์ด "bar"๋กœ ์‹œ์ž‘ํ•˜๋Š” ์š”์†Œ ์„ ํƒ.
[class$="bar"] : class ์†์„ฑ์˜ ๊ฐ’์ด "bar"๋กœ ๋๋‚˜๋Š” ์š”์†Œ ์„ ํƒ.
[class*="bar"] : class ์†์„ฑ์˜ ๊ฐ’์ด "bar" ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜๋Š” ์š”์†Œ ์„ ํƒ.

 

p[class~="color"] { font-style: italic; } /* 1, 2๋ฒˆ์งธ ์š”์†Œ */
p[class^="color"] { font-style: italic; } /* 1, 3๋ฒˆ์งธ ์š”์†Œ */
p[class$="color"] { font-style: italic; } /* 2๋ฒˆ์งธ ์š”์†Œ */
p[class*="color"] { font-style: italic; } /* 1, 2, 3๋ฒˆ์งธ ์š”์†Œ */

 

 

 

๋ฌธ์„œ ๊ตฌ์กฐ์˜ ์ดํ•ด

 

<html>
<body>
    <div>
        <h1><span>HTML</span>: Hyper Text Markup Language</h1>
    </div>
    <p>HTML๊ณผ CSS์™€ JAVASCRIPT๋ฅผ ์ด์šฉํ•ด์„œ ๋ฉ‹์ง„ ์›น ์‚ฌ์ดํŠธ๋ฅผ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
</body>
</html>

 

์„ ํƒ์ž์™€ ๋ฌธ์„œ์˜ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ์–ด๋–ป๊ฒŒ ๋ฌธ์„œ๊ฐ€ ๊ตฌ์กฐํ™”๋˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž. ์ด๋“ค์˜ ๊ด€๊ณ„๋Š” ๋ถ€๋ชจ์™€ ์ž์‹, ์กฐ์ƒ๊ณผ ์ž์†, ๊ทธ๋ฆฌ๊ณ  ํ˜•์ œ ๊ด€๊ณ„๋กœ ๋ถ„๋ฅ˜๋  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๋ถ€๋ชจ์™€ ์ž์‹ ๊ด€๊ณ„

 

๋ถ€๋ชจ ์š”์†Œ๋Š” ๊ทธ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ƒ์œ„ ์š”์†Œ๋กœ, ํ•œ ์š”์†Œ์˜ ๋ถ€๋ชจ ์š”์†Œ๋Š” ํ•˜๋‚˜๋ฟ์ด๋‹ค. ์ž์‹ ์š”์†Œ๋Š” ๋ถ€๋ชจ ์š”์†Œ์˜ ๋ฐ˜๋Œ€๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๋‹ค๋งŒ ํ•œ ์š”์†Œ์˜ ๋ถ€๋ชจ ์š”์†Œ๋Š” ํ•œ ๊ฐœ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด ํ•œ ๋ถ€๋ชจ ์•„๋ž˜์˜ ์ž์‹ ์š”์†Œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

<body>์˜ ๋ถ€๋ชจ ์š”์†Œ : <html> ↔ <html>์˜ ์ž์‹ ์š”์†Œ : <body>
<div>์˜ ๋ถ€๋ชจ ์š”์†Œ : <body> ↔ <body>์˜ ์ž์‹ ์š”์†Œ : <div>, <p>
<h1>์˜ ๋ถ€๋ชจ ์š”์†Œ : <div> ↔ <div>์˜ ์ž์‹ ์š”์†Œ : <h1>
<span>์˜ ๋ถ€๋ชจ ์š”์†Œ : <h1> ↔ <h1>์˜ ์ž์‹ ์š”์†Œ : <span> 
<p>์˜ ๋ถ€๋ชจ ์š”์†Œ : <body> ↔ <body>์˜ ์ž์‹ ์š”์†Œ : <div>, <p>
 

 

 

์กฐ์ƒ๊ณผ ์ž์† ๊ด€๊ณ„

 

์กฐ์ƒ๊ณผ ์ž์†์˜ ๊ด€๊ณ„ ์—ฌ๋Ÿฌ ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„๋ฅผ ํฌํ•จํ•ด ํ™•์žฅํ•œ ๊ด€๊ณ„๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ์กฐ์ƒ ์š”์†Œ๋Š” ํ•œ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” (๋ถ€๋ชจ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ) ๋ชจ๋“  ์š”์†Œ๊ณ , ์ž์† ์š”์†Œ๋Š” ๋ฐ˜๋Œ€๋กœ ๊ทธ ์š”์†Œ๊ฐ€ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์š”์†Œ๋‹ค.

<body>์˜ ์กฐ์ƒ ์š”์†Œ : <html> ↔ <html>์˜ ์ž์† ์š”์†Œ : <body>, <div>, <h1>, <span>, <p>
<div>์˜ ์กฐ์ƒ ์š”์†Œ : <html>, <body> ↔ <body>์˜ ์ž์† ์š”์†Œ : <div>, <h1>, <span>, <p>
<h1>์˜ ์กฐ์ƒ ์š”์†Œ : <html>, <body>, <div> ↔ <div>์˜ ์ž์† ์š”์†Œ : <h1>, <span>
<span>์˜ ์กฐ์ƒ ์š”์†Œ : <html>, <body>, <div>, <h1> ↔ <h1>์˜ ์ž์† ์š”์†Œ : <span>
<p>์˜ ์กฐ์ƒ ์š”์†Œ : <html>, <body> ↔ <body>์˜ ์ž์† ์š”์†Œ : <div>, <h1>, <span>, <p>

 

 


ํ˜•์ œ ๊ด€๊ณ„

 

์„œ๋กœ ๊ฐ™์€ ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์š”์†Œ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ํ˜•์ œ ๊ด€๊ณ„๋ผ๊ณ  ํ•œ๋‹ค. ์œ„ ์ฝ”๋“œ ์ค‘ <div>, <p>๊ฐ€ ํ˜•์ œ ๊ด€๊ณ„๋‹ค. ํ˜•์ œ ๊ด€๊ณ„ ์ค‘ ๋ฐ”๋กœ ๋’ค์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ง€์นญํ•  ๊ฒฝ์šฐ๋Š” ์ธ์ ‘ํ•œ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค, ํ˜น์€ ์ธ์ ‘ํ•œ๋‹ค๊ณ  ๋ถ€๋ฅธ๋‹ค. ์œ„ ์ฝ”๋“œ์—์„œ๋Š” <p>๊ฐ€ <div>์— ์ธ์ ‘ํ•œ ํ˜•์ œ ์š”์†Œ๊ฐ€ ๋œ๋‹ค.  

 

 

๋ฌธ์„œ ๊ตฌ์กฐ ๊ด€๋ จ ์„ ํƒ์ž

 

๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ ์„ ํƒ์ž๋กœ ์ž์† ์„ ํƒ์ž, ์ž์‹ ์„ ํƒ์ž, ์ธ์ ‘ ์„ ํƒ์ž๊ฐ€ ์žˆ๋‹ค.


 

์ž์† ์„ ํƒ์ž

 

div span { color: red; }


์ž์† ์„ ํƒ์ž๋Š” ์„ ํƒ์ž ์‚ฌ์ด์— ์•„๋ฌด ๊ธฐํ˜ธ ์—†์ด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์ด ์„ ํƒ์ž๋Š” <div>์˜ ์ž์† ์š”์†Œ์ธ <span>์„ ์„ ํƒํ•˜๋Š” ์„ ํƒ์ž๋‹ค.
 

 


์ž์‹ ์„ ํƒ์ž

 

div > h1 { color: red; }


์ž์‹ ์„ ํƒ์ž๋Š” ์„ ํƒ์ž ์‚ฌ์ด์— ๋‹ซ๋Š” ๊บฝ์‡  ๊ธฐํ˜ธ(>)๋ฅผ ๋„ฃ๋Š”๋‹ค. ์ด ์„ ํƒ์ž๋Š” <div>์˜ ์ž์‹ ์š”์†Œ์ธ <h1>์„ ์„ ํƒํ•˜๋Š” ์„ ํƒ์ž๋‹ค. 

 



์ธ์ ‘ ํ˜•์ œ ์„ ํƒ์ž

 

div + p { color: red; }


์ธ์ ‘ ํ˜•์ œ ์„ ํƒ์ž๋Š” ์„ ํƒ์ž ์‚ฌ์ด์— +๋ฅผ ๋„ฃ์–ด ํ‘œํ˜„ํ•œ๋‹ค. 

 

 

 

 



 

๋”๋ณด๊ธฐ
TOOLS/Frontend

 

 

 

 

 

CSS๋Š” ๋งˆํฌ์—… ์–ธ์–ด, ์ฆ‰ HTML์„ ๊พธ๋ฉฐ ์ฃผ๋Š” ํ‘œํ˜„์šฉ ์–ธ์–ด๋‹ค. HTML์ด ๋ฌธ์ €์˜ ์ •๋ณด, ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค๋ฉด CSS๋Š” ๋ฌธ์„œ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ๋””์ž์ธํ•œ๋‹ค. CSS๋Š” HTML๊ณผ๋Š” ๋…๋ฆฝ๋œ ๋‹ค๋ฅธ ์–ธ์–ด์ด์ง€๋งŒ ํ‘œํ˜„์„ ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งˆํฌ์—… ๋ฌธ์„œ ์ž์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋ฌด์šฉ์ง€๋ฌผ์ด ๋œ๋‹ค. ๋•Œ๋ฌธ์—, ๋ณดํ†ต CSS๋Š” HTML๊ณผ ๋ฌถ์–ด ์–˜๊ธฐํ•œ๋‹ค.

 

์ „ ์„ธ๊ณ„์˜ ๋งŽ์€ ์›น ์‚ฌ์ดํŠธ๋“ค์€ ์ „๋ถ€ HTML ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“ค์–ด์ง„๋‹ค. ํ•˜์ง€๋งŒ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” HTML์˜ ๊ฐœ์ˆ˜๋Š” ์‹ญ์—ฌ ๊ฐœ๋ฐ–์— ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๋ชจ๋“  ์‚ฌ์ดํŠธ๋ฅผ ๊ฐ๊ฐ ๋‹ค์–‘ํ•˜๊ณ  ๋…์ฐฝ์ ์ธ ๋””์ž์ธ์œผ๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” ๊ฒŒ CSS๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ CSS ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. <ํ•ด๋‹น ํฌ์ŠคํŠธ๋Š” ๋น„์ „๊ณต์ž๋ฅผ ์œ„ํ•œ HTML/CSS ๊ฐ•์˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋๋‹ค>

 

 

 

 

CSS ๊ตฌ๋ฌธ

 

h1 { color: yellow; font-size:2em; }

 

์„ ํƒ์žselector : "h1"

์†์„ฑproperty : "color"

๊ฐ’value : "yellow"

์„ ์–ธdeclaration : "color: yellow", "font-size: 2em"

์„ ์–ธ๋ถ€declaration block : "{ color: yellow; font-size:2em; }"

๊ทœ์น™rule set : "h1 { color: yellow; font-size:2em; }"

 

CSS ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ทœ์น™์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ตฌ๋ฌธ์„ ์ž‘์„ฑํ•  ๋•Œ๋Š” ๊ฐœํ–‰์— ์ฃผ์˜ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์„ ํƒ์ž์™€ ์„ ์–ธ๋ถ€ ์‚ฌ์ด๋‚˜ ์„ ์–ธ๊ณผ ์„ ์–ธ ์‚ฌ์ด๋Š” ๊ฐœํ–‰ ํ•ด๋„ ์ƒ๊ด€ ์—†์œผ๋‚˜ ์†์„ฑ์ด๋ฆ„๊ณผ ์†์„ฑ๊ฐ’ ์‚ฌ์ด์—๋Š” ๊ฐœํ–‰ํ•ด์„  ์•ˆ ๋œ๋‹ค.
 

/* ์˜ฌ๋ฐ”๋ฅธ ์˜ˆ */

h1
{ color: yellow; font-size:2em; }

h1 {
    color: yellow;
    font-size:2em;
}

 

/* ์ž˜๋ชป๋œ ์˜ˆ */

h1 {
    color:
    yellow;
}



 

CSS์™€ ๋งˆํฌ์—… ๋ฌธ์„œ ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•

 

(1) ์ธ๋ผ์ธInline ๋ฐฉ์‹

 

<div style="color:red;"> ๋‚ด์šฉ </div>

 

์ธ๋ผ์ธ ๋ฐฉ์‹์€ ํ•ด๋‹น ์š”์†Œ์— ์ง์ ‘ ์Šคํƒ€์ผ ์†์„ฑ์„ ์‚ฌ์šฉํ•ด์„œ ๊ทœ์น™๋“ค์„ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋œปํ•œ๋‹ค. ํ•ด๋‹น ์š”์†Œ์— ์ง์ ‘ ์ž…๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ ํƒ์ž๋Š” ํ•„์š” ์—†๊ณ , ์„ ์–ธ๋ถ€์— ๋‚ด์šฉ๋งŒ ์Šคํƒ€์ผ ์†์„ฑ์˜ ๊ฐ’์œผ๋กœ ๋„ฃ์–ด ์ฃผ๋ฉด ๋œ๋‹ค. ์ธ๋ผ์ธ ๋ฐฉ์‹์€ ์ฝ”๋“œ์˜ ์žฌํ™œ์šฉ์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

 


(2) ์ธํ„ฐ๋„Internal ๋ฐฉ์‹

 

<style> div {color: red;} </style>


์ธํ„ฐ๋„ ๋ฐฉ์‹์€ <head>์— <style> ํƒœ๊ทธ๋ฅผ ํ™œ์šฉํ•ด ๋ฌธ์„œ๋งˆ๋‹ค ์Šคํƒ€์ผ์„ ์„ ์–ธํ•ด ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด ๋ฐฉ์‹์„ ํ™œ์šฉํ•˜๋ฉด ๋ฌธ์„œ ๋‚ด์˜ ๋ชจ๋“  <div>์— ๊ฐ™์€ ์Šคํƒ€์ผ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ, ๋งŽ์€ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๊นŒ๋‹ค๋กœ์šด ๊ฑด ๋งคํ•œ๊ฐ€์ง€๋‹ค.
 

(3) ์ต์Šคํ„ฐ๋„External ๋ฐฉ์‹

 

div {color: red;}

 

์ต์Šคํ„ฐ๋„ ๋ฐฉ์‹์€ ์™ธ๋ถ€ ์Šคํƒ€์ผ ์‹œํŠธ ํŒŒ์ผ์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ํ•œ ๊ฐœ ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค์–ด ๊ฑฐ๊ธฐ์— ์ „์ฒด ๋ฌธ์„œ๊ฐ€ ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  ์Šคํƒ€์ผ ๊ทœ์น™์„ ๋งŒ๋“ค์–ด ๋„ฃ๊ณ , .css ํ™•์žฅ์ž๋กœ ์ €์žฅํ•œ ํ›„ ํŽ˜์ด์ง€๋งˆ๋‹ค ๋งํฌ๋กœ CSS ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

 

<link rel="stylesheet" href="css/style.css">


์ด๋ ‡๊ฒŒ <head> ๋‚ด๋ถ€์— <link>๋ฅผ ์„ ์–ธํ•œ ํ›„ href ์†์„ฑ์„ ์ด์šฉํ•ด ๊ฒฝ๋กœ๋ฅผ ์ ์–ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ, ์ด ๋•Œ rel ์†์„ฑ์€ ์—ฐ๊ฒฐ๋˜๋Š” ํŒŒ์ผ์ด ๋ฌธ์„œ์™€ ์–ด๋–ค ๊ด€๊ณ„์ธ์ง€๋ฅผ ๋ช…์‹œํ•˜๋Š” ์†์„ฑ์œผ๋กœ, CSS ํŒŒ์ผ์€ 'stylesheet'๋ผ๊ณ  ์ ์–ด์•ผ ํ•œ๋‹ค. ์ด ๋ฐฉ์‹์œผ๋กœ ์Šคํƒ€์ผ์„ ์„ ์–ธํ•˜๋ฉด ๋งŽ์€ ํŽ˜์ด์ง€๊ฐ€ ์žˆ๋”๋ผ๋„ ์ด ํ•œ ์ค„๋กœ ๋ชจ๋“  ํŽ˜์ด์ง€์— ๊ฐ™์€ ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ˆ˜์ •ํ•  ๋•Œ๋„ ํ•œ ๋ฒˆ์— ๋ชจ๋“  ํŽ˜์ด์ง€์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ต์Šคํ„ฐ๋„ ๋ฐฉ์‹์€ ํŒŒ์ผ ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•˜๋ฉด์„œ๋„ ์šฉ๋Ÿ‰์ด ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
 

 

 

 

 

๋”๋ณด๊ธฐ
TOOLS/Frontend

 

 

 

 

 

HTML์€ Hyper Text Markup Language์˜ ์•ฝ์ž๋‹ค. ์ด ๋•Œ์˜ Hyper Text๋Š” ๋ฌธ์„œ ๋„ˆ๋จธ์™€ ์—ฐ๊ฒฐ์„ ํ•ด ์ฃผ๋Š” ํ…์ŠคํŠธ, ์ฆ‰ ๋งํฌ๋ฅผ ์˜๋ฏธํ•˜๊ณ  Markup Language๋Š” ์ •๋ณด๋ฅผ ๊ตฌ์กฐ์ / ๊ณ„์ธต์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ์–ธ์–ด๋ž€ ๋œป์ด๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” HTML์—์„œ ์“ฐ์ด๋Š” ๋ฌธ๋ฒ•, ํƒœ๊ทธ๋ฅผ ์ •๋ฆฌํ•œ๋‹ค. <ํ•ด๋‹น ํฌ์ŠคํŠธ๋Š” ๋น„์ „๊ณต์ž๋ฅผ ์œ„ํ•œ HTML/CSS ๊ฐ•์˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋๋‹ค>

 

 

 

์ œ๋ชฉHeading ํƒœ๊ทธ

 

<h1>์—ญ์‚ฌ</h1>
<h2>๊ฐœ๋ฐœ</h2>
1980๋…„, ์œ ๋Ÿฝ ์ž…์ž ๋ฌผ๋ฆฌ ์—ฐ๊ตฌ์†Œ(CERN)์˜ ๊ณ„์•ฝ์ž์˜€์—ˆ๋˜ ๋ฌผ๋ฆฌํ•™์ž ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ๊ฐ€ HTML์˜ ์›ํ˜•์ธ ์ธ์ฝฐ์ด์–ด๋ฅผ ์ œ์•ˆํ–ˆ๋‹ค.
... ์ดํ•˜ ์ƒ๋žต
<h2>์ตœ์ดˆ ๊ทœ๊ฒฉ</h2>
HTML ์ตœ์ดˆ์˜ ์ผ๋ฐ˜ ๊ณต๊ฐœ ์„ค๋ช…์€ 1991๋…„ ๋ง์— ๋ฒ„๋„ˆ์Šค๋ฆฌ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ์ธํ„ฐ๋„ท์—์„œ ๋ฌธ์„œ๋ฅผ "HTML ํƒœ๊ทธ"(HTML tag)๋กœ ๋ถ€๋ฅด๋ฉด์„œ ์‹œ์ž‘๋๋‹ค.
... ์ดํ•˜ ์ƒ๋žต

 

๋ฌธ์„œ ๋‚ด ์ œ๋ชฉ์„ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ๋‹ค. ์ œ๋ชฉ์˜ ๋ ˆ๋ฒจ์— ๋”ฐ๋ผ์„œ <h1> ~ <h6>๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. <h1>์€ ๋ณดํ†ต ํŽ˜์ด์ง€๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ํฐ ์ œ๋ชฉ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ˆซ์ž๊ฐ€ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜๋ก ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์†Œ์ œ๋ชฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค. ์ œ๋ชฉ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋ณด๋‹ค ํฌ๊ธฐ์™€ ๊ตต๊ธฐ๊ฐ€ ๋” ๊ฐ•์กฐ๋ผ ๋ณด์ด๋Š”๋ฐ, ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๋ชฉ ํƒœ๊ทธ์— ์ œ๊ณตํ•˜๋Š” ์Šคํƒ€์ผ์ด๋‹ค.

 

 


๋‹จ๋ฝParagraph ํƒœ๊ทธ

 

<h1>์—ญ์‚ฌ</h1>
<h2>๊ฐœ๋ฐœ</h2>
<p>
    1980๋…„, ์œ ๋Ÿฝ ์ž…์ž ๋ฌผ๋ฆฌ ์—ฐ๊ตฌ์†Œ(CERN)์˜ ๊ณ„์•ฝ์ž์˜€์—ˆ๋˜ ๋ฌผ๋ฆฌํ•™์ž ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ๊ฐ€ HTML์˜ ์›ํ˜•์ธ ์ธ์ฝฐ์ด์–ด๋ฅผ ์ œ์•ˆํ–ˆ๋‹ค.
    ... ์ดํ•˜ ์ƒ๋žต
</p>
<h2>์ตœ์ดˆ ๊ทœ๊ฒฉ</h2>
<p>
    HTML ์ตœ์ดˆ์˜ ์ผ๋ฐ˜ ๊ณต๊ฐœ ์„ค๋ช…์€ 1991๋…„ ๋ง์— ๋ฒ„๋„ˆ์Šค๋ฆฌ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ์ธํ„ฐ๋„ท์—์„œ ๋ฌธ์„œ๋ฅผ "HTML ํƒœ๊ทธ"(HTML tag)๋กœ ๋ถ€๋ฅด๋ฉด์„œ ์‹œ์ž‘๋๋‹ค.
    ... ์ดํ•˜ ์ƒ๋žต
</p>


๋‹จ๋ฝ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด ์ œ๋ชฉ ์™ธ ๋ณธ๋ฌธ ๋‚ด์šฉ์˜ ๊ณ„์ธต์„ ๊ตฌ๋ถ„ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์œ„ ์˜ˆ์ œ๋Š” ์ œ๋ชฉ ํƒœ๊ทธ ์˜ˆ์ œ์™€ ๋™์ผํ•œ ํ˜•ํƒœ๋กœ ๋…ธ์ถœ๋˜์ง€๋งŒ, ์ด์ „ ์˜ˆ์ œ๋ณด๋‹ค ์˜๋ฏธ์— ๋งž๊ฒŒ ์งœ์ธ ๋งˆํฌ์—… ๊ตฌ์กฐ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค.
 

 

๊ฐœํ–‰Linebreak ํƒœ๊ทธ

 

1980๋…„, <br>
์œ ๋Ÿฝ ์ž…์ž ๋ฌผ๋ฆฌ ์—ฐ๊ตฌ์†Œ(CERN)์˜ ๊ณ„์•ฝ์ž์˜€์—ˆ๋˜ ๋ฌผ๋ฆฌํ•™์ž ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ๊ฐ€ <br>
HTML์˜ ์›ํ˜•์ธ ์ธ์ฝฐ์ด์–ด๋ฅผ ์ œ์•ˆํ–ˆ๋‹ค. <br>

 

HTML์€ ๋‘ ์นธ ์ด์ƒ์˜ ๊ณต๋ฐฑ ๋ฐ ๊ฐœํ–‰์„ ๋ฌด์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์นธ์„ ์ŠคํŽ˜์ด์Šค ๋ฐ”๋กœ ๊ฐœํ–‰ํ•˜๋”๋ผ๋„ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์ด๋Ÿด ๋•Œ ์“ฐ์ด๋Š” ํƒœ๊ทธ๊ฐ€ <br>์ด๋‹ค. ๊ฐœํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์„œ <br>์„ ์„ ์–ธํ•˜๋ฉด ๊ฐœํ–‰๋œ๋‹ค. <br>์€ ๊ฐœํ–‰ ์—ญํ•  ์™ธ ๋‚ด์šฉ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋นˆ ํƒœ๊ทธ์ด๋ฉฐ ๋ณ„๋„๋กœ ๋‹ซ๊ธฐ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

 

 

ํ…์ŠคํŠธ ํ‘œํ˜„ ํƒœ๊ทธ

 

<b> : bold. ๊ธ€์ž๋ฅผ ๊ตต๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ํƒœ๊ทธ.

<i> : italic. ๊ธ€์ž๋ฅผ ๊ธฐ์šธ์—ฌ ํ‘œํ˜„ํ•˜๋Š” ํƒœ๊ทธ.

<u> : underline. ๊ธ€์ž์˜ ๋ฐ‘์ค„์„ ํ‘œํ˜„ํ•˜๋Š” ํƒœ๊ทธ.

<s> : strike. ๊ธ€์ž์˜ ์ค‘๊ฐ„์„ ์„ ํ‘œํ˜„ํ•˜๋Š” ํƒœ๊ทธ.

 

์ƒ๊ธฐ ํƒœ๊ทธ๋“ค์€ ํ…์ŠคํŠธ๋ฅผ ๋ณ€ํ˜•ํ•ด ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ํƒœ๊ทธ๊ณ , ๊ธ€์”จ์˜ ๊ฐ•์กฐ ์—ญํ• ์—๋Š” ๊ธฐ์—ฌํ•˜์ง€ ๋ชป ํ•œ๋‹ค. ๋‹จ, HTML5 ๋ฒ„์ „์—์„œ๋Š” <i> ํƒœ๊ทธ๋งŒ ๊ธฐ์ˆ ์ ์ธ ์šฉ์–ด/ ์™ธ๊ตญ์–ด ๋ฌธ๊ตฌ/ ์†Œ์„ค ์† ์ธ๋ฌผ์˜ ์ƒ๊ฐ ๋“ฑ์˜ ํ‘œํ˜„์„ ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์ถ”๊ฐ€๋๋‹ค. ๋‹ค๋ฅธ ํ‘œํ˜„ํ˜• ํƒœ๊ทธ์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜ ์‹œ๋ฉ˜ํ‹ฑ ๋งˆํฌ์—… ํƒœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

 

 

 

์‹œ๋ฉ˜ํ‹ฑ ๋งˆํฌ์—…Semantic Markup

 

<b>๊ตต์€</b> vs <strong>์ค‘์š”ํ•œ</strong>
<i>๊ธฐ์šธ์–ด์ง„</i> vs <em>๊ฐ•์กฐํ•˜๋Š”</em>
<u>๋ฐ‘์ค„์นœ</u> vs <ins>์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ</ins>
<s>์ค‘๊ฐ„์„ ์ด ์žˆ๋Š”</s> vs <del>์‚ญ์ œ๋œ</del>

 

 

 

์•ต์ปคanchor ํƒœ๊ทธ

 

<a href="http://www.naver.com/" target="_blank">๋„ค์ด๋ฒ„</a>

 

์•ต์ปค ํƒœ๊ทธ๋Š” ๋งํฌ๋ฅผ ๋งŒ๋“œ๋Š” ํƒœ๊ทธ๋‹ค. ์•ต์ปค ํƒœ๊ทธ์˜ ๊ธฐ๋ณธํ˜•์€ ์œ„์™€ ๊ฐ™๋‹ค. ๋งํฌ๋กœ ์ด๋™ํ•  ๋ชฉ์ ์ง€์ธ hrefhypertext reference URL ๊ฐ’์„ ์„ ์–ธํ•ด ์ค˜์•ผ ์ž‘๋™ํ•˜๋ฉฐ, target ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋งํฌ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์–ด๋””์— ํ‘œ์‹œํ• ์ง€๋„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. target ์†์„ฑ์— _self๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ์ฐฝ์—, _blank๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒˆ๋กœ์šด ์ฐฝ์— ๊ฐ๊ฐ ๋งํฌ ํŽ˜์ด์ง€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณ„๋„๋กœ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ _self๊ฐ’์œผ๋กœ, ํ˜„์žฌ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค. 

์ด๋•Œ <a>์— ๋“ค์–ด๊ฐ€๋Š” href ๊ฐ’์„ ๊ผญ ์™ธ๋ถ€ ํŽ˜์ด์ง€๋กœ ์„ค์ •ํ•  ํ•„์š”๋Š” ์—†๋‹ค. ํŽ˜์ด์ง€ ๋‚ด๋ถ€์˜ ํŠน์ • ์š”์†Œ๋กœ ์ดˆ์ ์„ ๋‘๊ณ  ์ด๋™ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ๋‚ด๋ถ€ ๋งํฌ๋ผ๊ณ  ํ•œ๋‹ค. ์ด ๋•Œ๋Š” href ์†์„ฑ๊ฐ’์— #์„ ์“ฐ๊ณ  ๊ทธ ๋’ค์— ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์ด๋™ํ•˜๊ณ ์ž ํ•˜๋Š” ์š”์†Œ์˜ id ์†์„ฑ๊ฐ’์„ ์ ์œผ๋ฉด ๋œ๋‹ค.

<a href="#some-element-id">ํšŒ์‚ฌ ์†Œ๊ฐœ๋กœ ์ด๋™ํ•˜๊ธฐ</a>
<h1 id="some-element-id">ํšŒ์‚ฌ ์†Œ๊ฐœ</h1>


๋ณดํ†ต ํŽ˜์ด์ง€์— ๋‚ด์šฉ์ด ๋งŽ์•„ ์Šคํฌ๋กค์ด ๊ธธ์–ด์งˆ ๊ฒฝ์šฐ์—, ๋น ๋ฅด๊ฒŒ ํ™”๋ฉด ์ตœ์ƒ๋‹จ์œผ๋กœ ์ด๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์›นํŽ˜์ด์ง€ ํ™”๋ฉด ํ•˜๋‹จ์— ์žˆ๋Š” 'top', '๋งจ ์œ„๋กœ ์ด๋™ํ•˜๊ธฐ' ๋ฒ„ํŠผ์ด ์ด์— ํ•ด๋‹นํ•œ๋‹ค.

 

 

 

์ปจํ…Œ์ด๋„ˆContainer ํƒœ๊ทธ

 

<div>
    <span>Lorem</span> ipsum dolor sit.
</div>

 

์ปจํ…Œ์ด๋„ˆ ํƒœ๊ทธ๋Š” ์š”์†Œ๋“ค์„ ๋ฌถ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ๋‹ค. ์Šคํƒ€์ผ์„ ์ฃผ๊ฑฐ๋‚˜ ์„œ๋ฒ„์— ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์ด๋Ÿฐ ์ปจํ…Œ์ด๋„ˆ ํƒœ๊ทธ๋“ค์ด ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์ปจํ…Œ์ด๋„ˆ ํƒœ๊ทธ๋Š” <div>, <span>์ด๋‹ค. ์ด ๋•Œ <div>๋Š” ๋ธ”๋ก ๋ ˆ๋ฒจ(๋ถ€๋ชจ ์š”์†Œ์˜ ๊ฐ€๋กœ ์˜์—ญ์— ๋งž๊ฒŒ ๊ฝ‰ ์ฑ„์›Œ์ ธ ํ‘œํ˜„๋˜๋Š” ์š”์†Œ)์ด๊ณ  <span>์€ ์ธ๋ผ์ธ ๋ ˆ๋ฒจ(ํ•˜๋‚˜์˜ ๋ผ์ธ ์•ˆ์—์„œ ์ž์‹ ์˜ ๋‚ด์šฉ๋งŒํผ๋งŒ ๋ฐ•์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์š”์†Œ)์ด๋‹ค.

 

 

 

๋ฆฌ์ŠคํŠธList ํƒœ๊ทธ

 

๋ฆฌ์ŠคํŠธ๋Š” ์ผ๋ จ๋œ ํ•ญ๋ชฉ๋“ค์ด ๋‚˜์—ด๋œ ๊ฒƒ๋“ค์„ ์˜๋ฏธํ•œ๋‹ค. ์ฝ˜ํ…์ธ ๊ฐ€ ๋งŽ์€ ํฌํ„ธ์ด๋‚˜ ๊ฒ€์ƒ‰ ์—”์ง„๊ฐ™์€ ์‚ฌ์ดํŠธ์—๋Š” ๋ถ„์•ผ๋‚˜ ํ•ญ๋ชฉ์œผ๋กœ ๊ตฌ๋ถ„ํ•  ๊ฒƒ์ด ๋งŽ์œผ๋ฏ€๋กœ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. ๋ฆฌ์ŠคํŠธ ํƒœ๊ทธ๋Š” ์ˆœ์„œ๊ฐ€ ์—†๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” <ul> ํƒœ๊ทธ, ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” <ol> ํƒœ๊ทธ, ์šฉ์–ด์™€ ์ •์˜๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” <dl> ํƒœ๊ทธ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

 

<ul> 
    <li> ์ฝฉ๋‚˜๋ฌผ</li> 
    <li> ํŒŒ</li> 
    <li> ๊ตญ  ๊ฐ„์žฅ</li> 
    ... 
</ul>

 

<ol>
    <li>๋ƒ„๋น„์— ๊ตญ๋ฌผ์šฉ ๋ฉธ์น˜๋ฅผ ๋„ฃ๊ณ  ํ•œ์†Œ๋” ๋“์—ฌ ๋ฉธ์น˜ ์œก์ˆ˜๋ฅผ 7์ปต(1,400ml) ๋งŒ๋“ ๋‹ค.</li>
    <li>์ฝฉ๋‚˜๋ฌผ์„ ๋„ฃ๊ณ  ๋šœ๊ป‘์„ ๋ฎ์–ด ์ฝฉ๋‚˜๋ฌผ์ด ์ต์„ ๋•Œ๊นŒ์ง€ ๋“์ธ๋‹ค.</li>
    <li>๋šœ๊ป‘์„ ์—ด๊ณ  ๋Œ€ํŒŒ, ๋งˆ๋Š˜, ๊ณ ์ถง๊ฐ€๋ฃจ๋ฅผ ๋„ฃ๊ณ  ๋“์ธ๋‹ค.</li>
    ...
</ol>

 

<dl>
    <dt>๋ฆฌํ”Œ๋ฆฌ ์ฆํ›„๊ตฐ</dt>
    <dd>ํ—ˆ๊ตฌ์˜ ์„ธ๊ณ„๋ฅผ ์ง„์‹ค์ด๋ผ ๋ฏฟ๊ณ  ๊ฑฐ์ง“๋œ ๋ง๊ณผ ํ–‰๋™์„ ์ƒ์Šต์ ์œผ๋กœ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐ˜์‚ฌํšŒ์  ์„ฑ๊ฒฉ์žฅ์• ๋ฅผ ๋œปํ•˜๋Š” ์šฉ์–ด</dd>
    <dt>ํ”ผ๊ทธ๋ง๋ฆฌ์˜จ ํšจ๊ณผ</dt>
    <dd>ํƒ€์ธ์˜ ๊ธฐ๋Œ€๋‚˜ ๊ด€์‹ฌ์œผ๋กœ ์ธํ•˜์—ฌ ๋Šฅ๋ฅ ์ด ์˜ค๋ฅด๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ๊ฐ€ ์ข‹์•„์ง€๋Š” ํ˜„์ƒ</dd>
    <dt>์–ธ๋”๋… ํšจ๊ณผ</dt>
    <dd>์‚ฌ๋žŒ๋“ค์ด ์•ฝ์ž๋ผ๊ณ  ๋ฏฟ๋Š” ์ฃผ์ฒด๋ฅผ ์‘์›ํ•˜๊ฒŒ ๋˜๋Š” ํ˜„์ƒ</dd>
</dl>

 

 

 

์ด๋ฏธ์ง€image ํƒœ๊ทธ

 

<img src="./images/pizza.png" alt="ํ”ผ์ž">

 

<img>๋Š” ๋ฌธ์„œ์— ์ด๋ฏธ์ง€๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ํƒœ๊ทธ๋กœ, ๋‹ซ๋Š” ํƒœ๊ทธ๊ฐ€ ์—†๋Š” ๋นˆ ํƒœ๊ทธ๋‹ค. ์ด๋ฏธ์ง€ ํƒœ๊ทธ ์—ญ์‹œ ๋‘ ๊ฐ€์ง€์˜ ํ•„์ˆ˜ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง€๋Š”๋ฐ, ์ด๋ฏธ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ด ์ฃผ๋Š” ์†์„ฑ์ธ src์™€ ์ด๋ฏธ์ง€์˜ ๋Œ€์ฒด ํ…์ŠคํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์†์„ฑ์ธ alt๋‹ค.

 

๋ณ„๊ฐœ๋กœ width/ height๋กœ ํฌ๊ธฐ๊ฐ’์„ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์œผ๋ฉฐ (๊ฐ’์˜ ๋‹จ์œ„๋Š” ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ํ”ฝ์…€ ๋‹จ์œ„๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.) ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •์ ์ด๋ผ๋ฉด ๋ฏธ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์„ ์–ธํ•ด ๋‘๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์ ์ธ ์ธก๋ฉด์—์„œ ์ข‹๋‹ค. ๋‘ ๊ฐœ ๋ชจ๋‘ ์„ ์–ธํ•˜์ง€ ์•Š์œผ๋ฉด ์›๋ณธ ํฌ๊ธฐ๋Œ€๋กœ ๋…ธ์ถœ๋˜๋ฉฐ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์„ ์–ธํ•˜๋ฉด ๋‚˜๋จธ์ง€ ํ•œ ๊ฐ’์˜ ๋น„์œจ๋Œ€๋กœ ์ž๋™ ๋ณ€๊ฒฝ๋ผ ๋‚˜์˜จ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋‘˜ ๋‹ค ์„ ์–ธํ•˜๋ฉด ์›๋ณธ ํฌ๊ธฐ์˜ ๋น„์œจ๊ณผ ์ƒ๊ด€ ์—†์ด ์›ํ•˜๋Š” ๋น„์œจ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋ผ์›Œ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.


src์— ๋“ค์–ด๊ฐ€๋Š” ์ด๋ฏธ์ง€์˜ ๊ฒฝ๋กœ๋Š” ์ƒ๋Œ€๊ฒฝ๋กœ์™€ ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ๊ฐ๊ฐ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ ์ƒ๋Œ€๊ฒฝ๋กœ๋Š” ํ˜„์žฌ ์›น ํŽ˜์ด์ง€๋ฅผ ๊ธฐ์ค€์œผ๋กœ(./) ์ƒ๋Œ€์ ์ธ ์ด๋ฏธ์ง€์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒฝ๋กœ๊ณ  ์ ˆ๋Œ€๊ฒฝ๋กœ๋Š” ์‹ค์ œ ๊ทธ ์ด๋ฏธ์ง€๊ฐ€ ์œ„์น˜ํ•œ ๊ณณ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋‹ค.

 

<!-- ์ƒ๋Œ€๊ฒฝ๋กœ -->
<img src="./images/pizza.png" alt="ํ”ผ์ž">

<!-- ์ ˆ๋Œ€๊ฒฝ๋กœ -->
<img src="C:/users/document/images/pizza.png" alt="ํ”ผ์ž">
<img src="http://www.naver.com/pizza.png" alt="ํ”ผ์ž">


 

 

ํ‘œtable ํƒœ๊ทธ

 

ํ‘œ๋Š” ์…€(๋‚ด์šฉ์ด ๋“ค์–ด๊ฐ€๋Š” ํ•˜๋‚˜์˜ ์นธ)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ€๋กœ ๋ฐฉํ–ฅ์„ ํ–‰row, ์„ธ๋กœ ๋ฐฉํ–ฅ์„ ์—ดcolumn์ด๋ผ ๋ถ€๋ฅธ๋‹ค. ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์€ ํ•˜๋‚˜ ์ด์ƒ์˜ <tr>๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, <tr>์€ ์…€์„ ๋‚˜ํƒ€๋‚ด๋Š” <th>, <td>๋ฅผ ์ž์‹์œผ๋กœ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ํ‘œ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ๋Š” ์œ„์—์„œ ๋ฐ‘์œผ๋กœ, ์ขŒ์ธก์—์„œ ์šฐ์ธก์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.


<table> : ํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํƒœ๊ทธ.
<tr> : ํ–‰์„ ๋‚˜ํƒ€๋‚ด๋Š” ํƒœ๊ทธ.
<th> : ์ œ๋ชฉ ์…€์„ ๋‚˜ํƒ€๋‚ด๋Š” ํƒœ๊ทธ.
<td> : ์…€์„ ๋‚˜ํƒ€๋‚ด๋Š” ํƒœ๊ทธ.
 

<table>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
    </tr>
    <tr>
        <td>5</td>
        <td>6</td>
        <td>7</td>
        <td>8</td>
    </tr>
    <tr>
        <td>9</td>
        <td>10</td>
        <td>11</td>
        <td>12</td>
    </tr>
    <tr>
        <td>13</td>
        <td>14</td>
        <td>15</td>
        <td>16</td>
    </tr>
</table>

 

์œ„๋Š” 1๋ถ€ํ„ฐ 16๊นŒ์ง€๋ฅผ 4ํ–‰ 4์—ด๋กœ ํ‘œํ˜„ํ•œ ํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฝ”๋“œ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ๊ธฐ์ค€์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ํ™•์ธํ•˜๋ฉด ํ…Œ๋‘๋ฆฌ๊ฐ€ ์—†์–ด ํ‘œ๊ฐ€ ์–ด์ƒ‰ํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณตํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ์Šคํƒ€์ผ์— ํ…Œ๋‘๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ™•์ธ์„ ์œ„ํ•ด ์•„๋ž˜ CSS ์ฝ”๋“œ๋ฅผ <head> ์•ˆ์— ์ž…๋ ฅํ•˜๋ฉด ํ…Œ๋‘๋ฆฌ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

<style>
    th, td { border: 1px solid; }
</style>

 

ํ‘œ๊ฐ€ ๋ณต์žกํ•ด์ง€๋ฉด ํ‘œ๋ฅผ ํ•ด์„ํ•ด์„œ ์Œ์„ฑ์œผ๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๊ธฐ์™€ ๊ฐ™์€ ๋ณด์กฐ ๊ธฐ๊ธฐ๋ฅผ ํ†ตํ•ด์„œ๋Š” ํ‘œ์˜ ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์›Œ์งˆ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ํ‘œ๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๋„์›€์ด ๋˜๋Š” ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

<caption> : ํ‘œ์˜ ์ œ๋ชฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํƒœ๊ทธ.
<thead> : ์ œ๋ชฉ ํ–‰์„ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ํƒœ๊ทธ.
<tfoot> : ๋ฐ”๋‹ฅ ํ–‰์„ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ํƒœ๊ทธ.
<tbody> : ๋ณธ๋ฌธ ํ–‰์„ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ํƒœ๊ทธ.

<table>โ€จ
    <caption>Monthly Savings</caption>
    <thead>
        <tr>
            <th>Month</th>
            โ€จ<th>Savings</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            โ€จ<td>January</td>
            <td>$100</td>
        </tr>
        <tr>
            โ€จ<td>February</td>
            <td>$80</td>
        </tr>โ€จ
    </tbody>
    <tfoot>
        <tr>
            โ€จ<td>Sum</td>
            <td>$180</td>
        </tr>
    </tfoot>
โ€จ</table>

 

 

 

ํผform ํƒœ๊ทธ

 

ํผ ์š”์†Œ๋Š” ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์š”์†Œ๊ณ , <input>์€ ๋Œ€ํ‘œ์ ์ธ ํผ ์š”์†Œ๋‹ค. <input> ์ž์ฒด๋Š” ๋‚ด์šฉ ์—†๋Š” ๋นˆ ์š”์†Œ์ด๋‚˜ ํ›„์ˆ ํ•  type ์†์„ฑ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์ž…๋ ฅ ์–‘์‹์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ๋‹ค.

 

<input type="text" placeholder="ใ…‡ใ…‡ใ…‡">

 

์•„์ด๋””, ์ด๋ฆ„, ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ…์ŠคํŠธ ํƒ€์ž…. ํ…์ŠคํŠธ ํƒ€์ž…์—๋Š” placeholder ์†์„ฑ์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์ด ์†์„ฑ์„ ์ด์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ํ™”๋ฉด์— ๊ฐ’์„ ๋…ธ์ถœํ•ด, ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•ด์•ผ ํ•  ๊ฐ’์˜ ์–‘์‹์„ ํ‘œํ˜„ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

<input type="password">

 

์•”ํ˜ธ์™€ ๊ฐ™์ด ๊ณต๊ฐœํ•  ์ˆ˜ ์—†๋Š” ๋‚ด์šฉ์„ ์ž…๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒจ์Šค์›Œ๋“œ ํƒ€์ž…. ์ด ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋ฉด ํ™”๋ฉด์—” ํ…์ŠคํŠธ ํƒ€์ž…๊ณผ ๊ฐ™๊ฒŒ ๋‚˜ํƒ€๋‚˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์ž…๋ ฅํ•  ๋• ๊ฐ’์„ ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค.
 

<input type="radio" name="gender"> ๋‚จ์ž
<input type="radio" name="gender"> ์—ฌ์ž


๋ผ๋””์˜ค ๋ฒ„ํŠผ์„ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ๋””์˜ค ํƒ€์ž…. ๋ผ๋””์˜ค ๋ฒ„ํŠผ์€ ์ค‘๋ณต ์„ ํƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ ํ•˜๋‚˜์˜ ํ•ญ๋ชฉ๋งŒ์„ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.

<input type="checkbox" name="hobby"> ๋“ฑ์‚ฐ
<input type="checkbox" name="hobby"> ๋…์„œ
<input type="checkbox" name="hobby"> ์šด๋™

 
์ฒดํฌ๋ฐ•์Šค ๋ฒ„ํŠผ์„ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ฒดํฌ๋ฐ•์Šค ํƒ€์ž…. ์ฒดํฌ๋ฐ•์Šค๋Š” ์ค‘๋ณต ์„ ํƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

<input type="file">

 

ํŒŒ์ผ์„ ์„œ๋ฒ„์— ์˜ฌ๋ฆด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ ํƒ€์ž…. ๋ธŒ๋ผ์šฐ์ €์— ๋”ฐ๋ผ ํ‘œํ˜„๋˜๋Š” ํ˜•ํƒœ๋Š” ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด์ง€๋งŒ, ๋ชจ๋‘ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค.

 

<form action="./test.html">
    ๋ฉ”์‹œ์ง€: <input type="text" name="message"><br>
    <input type="submit">
    <input type="reset">
    <input type="image" src="http://placehold.it/50x50?text=click" alt="click" width="50" height="50">
    <input type="button" value="๋ฒ„ํŠผ">
</form>


ํด๋ฆญ ๊ฐ€๋Šฅํ•œ ๋ฒ„ํŠผ์„ ๋งŒ๋“œ๋Š” submit, reset, image, button ํƒ€์ž….
 
submit : form์˜ ๊ฐ’์„ ์ „์†กํ•˜๋Š” ๋ฒ„ํŠผ.
reset : form์˜ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฒ„ํŠผ.
image : ์ด๋ฏธ์ง€๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ. (submit๊ณผ ๋™์ž‘์ด ๋™์ผํ•จ.)
button : ์•„๋ฌด ๊ธฐ๋Šฅ์ด ์—†๋Š” ๋ฒ„ํŠผ.
 

<select>
    <option>์„œ์šธ</option>
    <option>๊ฒฝ๊ธฐ</option>
    <option>๊ฐ•์›</option>
    ...
</select>

 

<select>๋Š” ์„ ํƒ ๋ชฉ๋ก ์ƒ์ž ๋˜๋Š” ์ฝค๋ณด๋ฐ•์Šค๋ผ๊ณ ๋„ ํ•œ๋‹ค. ๋ช‡ ๊ฐœ์˜ ์„ ํƒ์ง€๋ฅผ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋…ธ์ถœํ•˜๊ณ  ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํƒœ๊ทธ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์ง€์ง€๋งŒ multiple ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์ค‘ ์„ ํƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. <select> ๋‚ด๋ถ€์˜ <option>์œผ๋กœ ๊ฐ ํ•ญ๋ชฉ์„ ํ‘œํ˜„ํ•ด์ค„ ์ˆ˜ ์žˆ์œผ๋ฉฐ <option> ๋‚ด๋ถ€์— selected ์†์„ฑ์„ ํ‘œํ˜„ํ•ด์ฃผ๋ฉด ์‹œ์ž‘๋ถ€ํ„ฐ ์„ ํƒ๋œ ํ•ญ๋ชฉ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

<textarea rows="5" cols="30">
    ...
</textarea>


<textarea>๋Š” ํ•œ ์ค„๋งŒ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” input์˜ ํ…์ŠคํŠธ ํƒ€์ž…๊ณผ ๋‹ฌ๋ฆฌ ์—ฌ๋Ÿฌ ์ค„์˜ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. cols์™€ rows ์†์„ฑ์„ ๊ฐ๊ฐ ์ค„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋•Œ cols๋Š” ๊ฐ€๋กœ ํฌ๊ธฐ๋ฅผ, rows๋Š” ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๋Š” ์†์„ฑ์ด๋‹ค.

<button type="submit|reset|button">ใ…‡ใ…‡ใ…‡</button>

 

<button>์€ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ submit, reset, button ์„ธ ๊ฐ€์ง€์˜ ํƒ€์ž…์„ ๊ฐ€์ง„๋‹ค. ์„ธ ๋ฒ„ํŠผ์˜ ์šฉ๋„๋Š” ์œ„์—์„œ ํ‘œ๊ธฐํ•œ input์˜ ๋™์ผ ์ด๋ฆ„ ํƒ€์ž…๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„๋‹ค. ๋‹ค๋งŒ, ๋นˆ ํƒœ๊ทธ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๋‚ด์šฉ์„ ์•ˆ์— ์ง์ ‘ ๋„ฃ์„ ์ˆ˜ ์žˆ์–ด input ๋Œ€๋น„ ์กฐ๊ธˆ ๋” ์ž์œ ๋กœ์šด ์Šคํƒ€์ผ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
 

<label for="name">์ด๋ฆ„</label>: <input type="text" id="name"><br>
<label for="nickname">์ด๋ฆ„</label>: <input type="text" id="nickname"><br>
<label for="address">์ด๋ฆ„</label>: <input type="text" id="address"><br>

 

<label>์€ form ๋‚ด๋ถ€์˜ ์ด๋ฆ„๊ณผ ์š”์†Œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์—ฐ๊ฒฐ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ๋Š” form ์š”์†Œ์˜ id ์†์„ฑ๊ฐ’๊ณผ <label>์˜ for ์†์„ฑ๊ฐ’์„ ๊ฐ™๊ฒŒ ์ ์–ด์ค˜์•ผ ํ•˜๋ฉฐ, <label>์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ฆญํ–ˆ์„ ๊ฒฝ์šฐ ํ•ด๋‹น <form> ์š”์†Œ๋ฅผ ํด๋ฆญํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค. ์‚ฌ์šฉ์„ฑ, ์ ‘๊ทผ์„ฑ ์ธก๋ฉด์œผ๋กœ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ์จ ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

<fieldset>
    <legend>๊ธฐ๋ณธ ์ •๋ณด</legend>
    ... ํผ ์š”์†Œ๋“ค ...
</fieldset>
<fieldset>
    <legend>๋ถ€๊ฐ€ ์ •๋ณด</legend>
    ... ํผ ์š”์†Œ๋“ค ...
</fieldset>


<fieldset>, <legend>๋Š” form ์š”์†Œ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํƒœ๊ทธ๋‹ค. ์—ฌ๋Ÿฌ ํƒœ๊ทธ๋ฅผ ํ•จ๊ป˜ ์“ธ ๋•Œ, <fieldset>์˜ ๋ฐ”๋กœ ๋ฐ‘์—๋Š” ๋ฐ˜๋“œ์‹œ ์ž์‹ ์—ด์ธ <legend>๊ฐ€ ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค.

<fieldset> : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํผ ์š”์†Œ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ๊ตฌ์กฐ์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.
<legend> : ํผ ์š”์†Œ์˜ ์ œ๋ชฉ์œผ๋กœ <fieldset> ๋‚ด๋ถ€์— ์ž‘์„ฑ.

 

<form action="" method="">
    <fieldset>
        <legend>๊ธฐ๋ณธ ์ •๋ณด</legend>
        ... ํผ ์š”์†Œ๋“ค ...
    </fieldset>
    <fieldset>
        <legend>๋ถ€๊ฐ€ ์ •๋ณด</legend>
        ... ํผ ์š”์†Œ๋“ค ...
    </fieldset>
</form>

 

<form>์€ form ์š”์†Œ๋“ค์„ ๊ฐ์‹ธ๋Š” ํƒœ๊ทธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์–ด์„œ ์‹ค์ œ ์„œ๋ฒ„๋กœ ์ „์†กํ•ด ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. <fieldset>์œผ๋กœ ๊ตฌ์กฐํ™”๋ผ ์žˆ๋‹ค๋ฉด <fieldset>๋„ ํ•จ๊ป˜ ๊ฐ์‹ธ ์ค˜์•ผ ํ•œ๋‹ค. <form>์—๋Š” 2๊ฐ€์ง€ ์†์„ฑ์ด ์žˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋ฒ„์˜ ์ฃผ์†Œ๋ฅผ ํ‘œ๊ธฐํ•˜๋Š”  action ์†์„ฑ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์„ ์ง€์ •ํ•˜๋Š” method ์†์„ฑ์ด๋‹ค. ์ด๋•Œ method ์†์„ฑ๊ฐ’์—๋Š” get/ post ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์กด์žฌํ•˜๋ฉฐ, get ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋  ๋•Œ ์ฃผ์†Œ์ฐฝ์— ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜•ํƒœ๋กœ ๋ถ™์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜๋Š” ํ˜•์‹์ด๋ฉฐ post๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋  ๋•Œ ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š” ํ˜•์‹์ด๋‹ค.

 

 

 

 

 

 

๋”๋ณด๊ธฐ
TOOLS/Frontend

 

 

 

์„œ๋ธŒ ์ฟผ๋ฆฌSubquery๋ž€ ๋ฉ”์ธ ์ฟผ๋ฆฌMain query๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€๋กœ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๊ฐ€์ ์ธ SELECT๋ฌธ์„ ๋งํ•œ๋‹ค. ์–ด๋–ค ๋ฉ”์ธ ์ฟผ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์—์„œ ๋‚ด๋ถ€ ์ฟผ๋ฆฌInner query๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค. ์ด๋•Œ, ๋ฉ”์ธ ์ฟผ๋ฆฌ๋Š” ์™ธ๋ถ€ ์ฟผ๋ฆฌOuter query๋กœ ์ง€์นญ๋  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ํ˜•ํƒœ / ์‹คํ–‰ ์กฐ๊ฑด

 

SELECT ์—ด
FROM ํ…Œ์ด๋ธ”
WHERE ์กฐ๊ฑด์‹ ( SELECT ์—ด
                             FROM ํ…Œ์ด๋ธ”
                             WHERE ์กฐ๊ฑด์‹ )

 

(1) ๋ฐ˜๋“œ์‹œ ๊ด„ํ˜ธ์— ๊ฐ์‹ธ์ง„ ํ˜•ํƒœ๋กœ ์“ฐ์ธ๋‹ค.

(2) SELECT๋ฌธ์˜ ํ˜•ํƒœ๋กœ๋งŒ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

(3) ์ฟผ๋ฆฌ์˜ ๋์—์„œ ;์„ธ๋ฏธ ์ฝœ๋ก ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

(4) ORDER BY์ ˆ์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

 

 

์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ํŠน์ง•

 

 

(1) ๋น„๊ต ํ˜น์€ ์กฐํšŒ์˜ ๋Œ€์ƒ์ด ๋  ๋•Œ ์กฐํšŒ ๋Œ€์ƒ์˜ ์˜ค๋ฅธ์ชฝ์— ๋†“์ธ๋‹ค.

(2) ๋ฉ”์ธ ์ฟผ๋ฆฌ์™€์˜ ๋น„๊ต๋ฅผ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ์ฟผ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ SELECT ์ ˆ์€ ๋ฉ”์ธ ์ฟผ๋ฆฌ์˜ ๋น„๊ต ๋Œ€์ƒ๊ณผ ๊ฐ™์€ ์ž๋ฃŒํ˜•๊ณผ ๊ฐ™์€ ๊ฐœ์ˆ˜๋กœ ์ง€์ •๋ผ์•ผ ํ•œ๋‹ค.

(3) ๊ฒฐ๊ณผ๊ฐ’ ์—ญ์‹œ ๋ฉ”์ธ ์ฟผ๋ฆฌ์˜ ์—ฐ์‚ฐ์ž ์ข…๋ฅ˜์™€ ๋™์ผํ•ด์•ผ ํ•œ๋‹ค.

(4) ๋ฉ”์ธ ์ฟผ๋ฆฌ์™€์˜ ๊ด€๊ณ„๋Š” ๋‹จ๋ฐฉํ–ฅ์ด๋‹ค. ์ด๋Š” Java ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์ƒ์†๊ณผ๋„ ์œ ์‚ฌํ•œ ํ˜•ํƒœ์ธ๋ฐ, ์ƒ์†๋‹นํ•œ ์ž์‹ ๊ฐ์ฒด๋Š” ๋ถ€๋ชจ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ถ€๋ชจ๋Š” ์ž์‹ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

 

(5) ๊ตฌ์กฐํ™”๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌ์˜ ๊ฐ ๋ถ€๋ถ„์„ ๊ฐ€๋…์„ฑ ์žˆ๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค€๋‹ค.

(6) ์œ„์˜ ํŠน์ง• ๋•Œ๋ฌธ์—, ๋ณต์žกํ•œ JOIN๊ณผ UNION์„ ๋ช…๋ฃŒํ•˜๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ฒด์žฌ๋กœ ๊ธฐ๋Šฅํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ์‚ฌ์šฉ์ฒ˜

 

(1) SELECT ์ ˆ์—์„œ ์‚ฌ์šฉ / ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌScalar Subquery

(2) FROM ์ ˆ์—์„œ ์‚ฌ์šฉ / ์ธ๋ผ์ธ ๋ทฐInline View

(3) WHERE ์ ˆ์—์„œ ์‚ฌ์šฉ / ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌNested Subquery

(4) HAVING ์ ˆ์—์„œ ์‚ฌ์šฉ

(5) ORDER BY ์ ˆ์—์„œ ์‚ฌ์šฉ

(6) INSERT๋ฌธ์˜ VALUES ๊ฐ’ ๋Œ€์ฒด์žฌ๋กœ์จ ์‚ฌ์šฉ

(7) UPDATE๋ฌธ์˜ SET ๊ฐ’ ๋Œ€์ฒด์žฌ๋กœ์จ ์‚ฌ์šฉ

 

 

 

 

 

์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์‚ฌ์šฉ

 

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ์‚ฌ์šฉ์ฒ˜ ์ค‘ SELECT, FROM, WHERE์ ˆ์—์„œ ์“ฐ์ด๋Š” ๊ฒฝ์šฐ, ์ฆ‰ ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ, ์ธ๋ผ์ธ ๋ทฐ, ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

 

 

 

SELECT์ ˆ, ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌScalar Subquery

 

ใ…ก์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ(Scalar Subquery)
  ์ •๋Œ€๋ฆฌ ๊ธ‰์—ฌ์™€ ํ…Œ์ด๋ธ” ์ „์ฒด ํ‰๊ท  ๊ธ‰์—ฌ๋ฅผ ๊ตฌํ•˜์‹œ์˜ค.

SELECT name
	, salary
   	, (SELECT ROUND(AVG(salary), -1) FROM employee) AS ํ‰๊ท ๊ธ‰์—ฌ
FROM employee
WHERE name = '์ •๋Œ€๋ฆฌ';

 

์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” SELECT์ ˆ์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋‹ค. ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ์–ด๋– ํ•œ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์ฃผ๋กœ ์“ฐ์ด๋ฉฐ, '์Šค์นผ๋ผ'๋ผ๋Š” ์ด๋ฆ„์—์„œ ๋ณด์—ฌ์ง€๋“ฏ ๋‹จ์ผ ๊ฐ’๋งŒ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์—†๋‹ค๋ฉด NULL์„ ๋ฆฌํ„ดํ•œ๋‹ค(ํ•ด๋‹น ๋ถ€๋ถ„์€ ๊ทธ๋ฃน ํ•จ์ˆ˜์˜ ํŠน์ง•์ด๊ธฐ๋„ ํ•˜๋‹ค.).

 

 

 

FROM์ ˆ, ์ธ๋ผ์ธ ๋ทฐInline View

 

ใ…ก์ธ๋ผ์ธ ๋ทฐ(Inline View)
  ์ง๊ธ‰์ด ์‚ฌ์›์ธ ์‚ฌ๋žŒ๋“ค์˜ ์ด๋ฆ„๊ณผ ๊ธ‰์—ฌ๋ฅผ ๊ตฌํ•˜์‹œ์˜ค.

SELECT ex1.name
	, ex1.salary
FROM (SELECT * FROM employee li
WHERE li.office_worker= '์‚ฌ์›') ex1;

 

์ธ๋ผ์ธ ๋ทฐ๋Š” FROM ์ ˆ์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋‹ค. ํŠน์ • ํ…Œ์ด๋ธ”์—์„œ ์ „์ฒด ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœํ•ด ์—ฐ๊ฒฐํ•˜๊ณ ์ž ํ•  ๋•Œ ์“ด๋‹ค. ํƒ€ ์„œ๋ธŒ ์ฟผ๋ฆฌ์™€ ๋‹ฌ๋ฆฌ ๊ผญ ๋ณ„์นญalias์„ ์ง€์ •ํ•ด ์ค˜์•ผ์ง€๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฐธ๊ณ ๋กœ, WITH ๋ฌธ์„ ์‚ฌ์šฉํ•ด๋„ ๊ฒฐ๊ณผ๋ฌผ์€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†์— ๋งž๋Š” ๊ฒƒ์„ ์ทจ์‚ฌ์„ ํƒํ•ด ์“ฐ๋ฉด ๋œ๋‹ค.

 

WITH
[๋ณ„์นญ1] AS (SELECT๋ฌธ 1),
[๋ณ„์นญ2] AS (SELECT๋ฌธ 2),
...,
[๋ณ„์นญN] AS (SELECT๋ฌธ N)
SELECT 
FROM ๋ณ„์นญ1, ๋ณ„์นญ2, ..., ๋ณ„์นญN

 

 

 

WHERE์ ˆ, ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌNested Subquery

 

ใ…กNested Subquery - ๋‹จ์ผ ํ–‰ 
  ์ •๋Œ€๋ฆฌ๋ผ๋Š” ์‚ฌ๋žŒ์˜ ์ง๊ธ‰์„ ๊ตฌํ•˜์‹œ์˜ค.

SELECT office_worker
FROM employee
WHERE office_worker = (SELECT office_worker FROM employee WHERE name = '์ •๋Œ€๋ฆฌ')

 

ใ…กNested Subquery - ๋ณต์ˆ˜(๋‹ค์ค‘) ํ–‰ 
  ์ •๋Œ€๋ฆฌ๋ณด๋‹ค ๊ธ‰์—ฌ๊ฐ€ ๋†’์€ ์‚ฌ๋žŒ๋“ค์„ ๊ตฌํ•˜์‹œ์˜ค.

SELECT *
FROM employee
WHERE salary > (SELECT salary FROM employee WHERE name = '์ •๋Œ€๋ฆฌ')

  ์ง๊ธ‰์ด ์‚ฌ์›์ธ ์‚ฌ๋žŒ๋“ค์„ ๊ตฌํ•˜์‹œ์˜ค.

SELECT *
FROM employee
WHERE office_worker IN (SELECT office_worker FROM employee WHERE office_worker = '์‚ฌ์›')

 

WHERE์ ˆ์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ผ ๋ถ€๋ฅธ๋‹ค. ์‹คํ–‰ ๊ฒฐ๊ณผ์˜ ํ–‰ ์ˆ˜, ์—ด ์ˆ˜์— ๋”ฐ๋ผ ๋‹จ์ผ ํ–‰ ์„œ๋ธŒ ์ฟผ๋ฆฌ, ๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ ์ฟผ๋ฆฌ, ๋‹ค์ค‘ ์—ด ์„œ๋ธŒ ์ฟผ๋ฆฌ๋กœ ๋‚˜๋ˆ„๋ฉฐ ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์‹ค๋ฌด์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์ผ ํ–‰/ ๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋งŒ ๋‹ค๋ฃฌ๋‹ค. 

 

๋‹จ์ผ ํ–‰ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” >, >=, =, <=, <, <>, ^=, != ๋“ฑ์˜ ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์“ฐ์ด๋ฉฐ, ๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” IN, ANY, SOME, ALL, EXISTS ๋“ฑ์˜ ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์“ฐ์ธ๋‹ค. ์ถœ๋ ฅํ•˜๋Š” ํ–‰ ์ˆ˜์™€ ์—ฐ๊ฒฐ์ง€์–ด์„œ, ์ „์ž๋ฅผ ๋‹จ์ผ ํ–‰ ์—ฐ์‚ฐ์ž, ํ›„์ž๋ฅผ ๋‹ค์ค‘ ํ–‰ ์—ฐ์‚ฐ์ž๋ผ ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค. 

 

IN : ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด TRUE
ANY, SOME : ๋งŒ์กฑํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์ด๋ฉด TRUE
ALL : ๊ฒฐ๊ณผ๊ฐ€ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋ฉด TRUE
EXISTS : ๊ฒฐ๊ณผ๊ฐ€ ์กด์žฌํ•˜๋ฉด TRUE (ํ–‰์ด 1๊ฐœ ์ด์ƒ์ด๋ฉด TRUE)

 <IN> ๋ถ€์„œ๋ณ„ ์ตœ๊ณ  ๊ธ‰์—ฌ์™€ ๋™์ผํ•œ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ์› ์ •๋ณด

SELECT *
FROM emp
WHERE sal IN (SELECT MAX(sal) FROM emp GROUP BY deptno);

 

 <SOME> ๋“ฑ๊ฐ€ ๋น„๊ต ์—ฐ์‚ฐ์ž(=)์™€ ANY, SOME์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด IN ์—ฐ์‚ฐ์ž์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰

SELECT *
FROM emp
WHERE sal = SOME (SELECT MAX(sal) FROM emp GROUP BY deptno);

 

 <ANY> ๋“ฑ๊ฐ€ ๋น„๊ต ์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹Œ ๋Œ€์†Œ ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ANY๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด?
 < ANY : ๋ถ€์„œ 30 ์ค‘ ์ตœ๋Œ€๊ฐ’๋ณด๋‹ค ์ ์€ ๊ธ‰์—ฌ๋ฅผ ๊ฐ€์ง„ ์‚ฌ์›์„ ์ฐพ๊ฒŒ ๋จ
 > ANY : ๋ถ€์„œ 30 ์ค‘ ์ตœ์†Œ๊ฐ’๋ณด๋‹ค ๋†’์€ ๊ธ‰์—ฌ๋ฅผ ๊ฐ€์ง„ ์‚ฌ์›์„ ์ฐพ๊ฒŒ ๋จ

SELECT *
FROM emp
WHERE sal < ANY (SELECT sal FROM emp WHERE deptno = 30);

 

 <ALL> ๋ถ€์„œ 30 ์ค‘ ์ตœ๋Œ€ ๊ธ‰์—ฌ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ์› ์ถœ๋ ฅ

SELECT *
FROM emp
WHERE sal > ALL (SELECT sal FROM emp WHERE deptno = 30);

 

 <EXISTS> ๋ถ€์„œ50์ด ์žˆ์œผ๋ฉด EMP ์ „์ฒด ์ถœ๋ ฅ

SELECT *
FROM emp
WHERE EXISTS (SELECT dname FROM dept WHERE deptno = 50);

 

 

 

 

 

 

์ถœ์ฒ˜

์–‘๋””๋กœ๊ทธ ๋ธ”๋กœ๊ทธ

Inpa Dev ๋ธ”๋กœ๊ทธ

java์˜ ๊ฐœ๋ฐœ์ผ๊ธฐ ๋ธ”๋กœ๊ทธ

 
๋”๋ณด๊ธฐ
TOOLS/SQL

 

<๋ฐ์ดํ„ฐ ์ฒดํฌ>

<

๋ฌธ์ œ ์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ด๋ฆ„์— el์ด ๋“ค์–ด๊ฐ€๋Š” ๋™๋ฌผ ์ฐพ๊ธฐ

ํ…Œ์ด๋ธ”๋ช…: animal_ins๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”

์ปฌ๋Ÿผ๋ช…: animal_id๋™๋ฌผ ์•„์ด๋””, animal_type๋™๋ฌผ ์ข…, datetime๋ณดํ˜ธ์‹œ์ž‘์ผ, intake_condition๋ณดํ˜ธ ์‹œ์ž‘ ์‹œ ์ƒํƒœ, name์ด๋ฆ„, sex_upon_intake์„ฑ๋ณ„ ๋ฐ ์ค‘์„ฑํ™” ์—ฌ๋ถ€

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ: 1๊ฐœ ํ…Œ์ด๋ธ”, 6๊ฐœ ์ปฌ๋Ÿผ, 100๊ฐœ ๋กœ์šฐ

>

 

 

 

 

<์‹œ๋‚˜๋ฆฌ์˜ค>

 

๋ณดํ˜ธ์†Œ์— ๋Œ์•„๊ฐ€์‹  ํ• ๋จธ๋‹ˆ๊ฐ€ ๊ธฐ๋ฅด๋˜ ๊ฐœ๋ฅผ ์ฐพ๋Š” ์‚ฌ๋žŒ์ด ์ฐพ์•„์™”๋‹ค. ์ด ์‚ฌ๋žŒ์ด ๋งํ•˜๊ธธ ํ• ๋จธ๋‹ˆ๊ฐ€ ๊ธฐ๋ฅด๋˜ ๊ฐœ๋Š” ์ด๋ฆ„์— 'el'์ด ๋“ค์–ด๊ฐ„๋‹ค๊ณ . ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘ ์ด๋ฆ„์ด 'el'์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฝ‘์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ• ๊นŒ.

 

 

 

 

 

<ํ’€์ด> 

 

๋ฌธ์ œ๋Š”, ๊ฐœ์˜ ์ด๋ฆ„์„ ํŠน์ •ํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ๋Œ€์†Œ๋ฌธ์ž ์—ญ์‹œ ํ™•๋‹ตํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฑฐ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ WHERE์ ˆ์— ๋„ฃ์–ด ์ฃผ๋Š” ๋ฐฉํ–ฅ๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๋ฌธ์ž์—ด์„ ์ „๋ถ€ ๋Œ€๋ฌธ์ž๋‚˜ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ” ๋ฒ„๋ฆฌ๋Š” UPPER๋‚˜ LOWER๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

WHERE name LIKE LOWER('%EL%')

 

 

 

๋‚˜๋จธ์ง€๋Š” ์‰ฝ๋‹ค. ์กฐ๊ฑด์„ ์ฑ„์›Œ์„œ ์ฟผ๋ฆฌ๋ฅผ ๋งˆ์ € ์งœ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

 

 

SELECT animal_id
        , name
FROM animal_ins
WHERE name LIKE LOWER('%EL%')
    AND animal_type = 'Dog'
ORDER BY name

 

 

๋”๋ณด๊ธฐ
TOOLS/SQL

 

 

<๋ฐ์ดํ„ฐ ์ฒดํฌ>

<

๋ฌธ์ œ ์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ž๋™์ฐจ ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„ ๊ตฌํ•˜๊ธฐ

ํ…Œ์ด๋ธ”๋ช…: car_rental_company_rental_history์–ด๋А ์ž๋™์ฐจ ๋Œ€์—ฌ์ ์˜ ๋Œ€์—ฌ ๊ธฐ๋ก ํ…Œ์ด๋ธ” ๊ฒฌ๋ณธ 

์ปฌ๋Ÿผ๋ช…: history_id๋Œ€์—ฌ ๊ธฐ๋ก ์•„์ด๋””, car_id์ž๋™์ฐจ ์•„์ด๋””, start_date๋Œ€์—ฌ์‹œ์ž‘์ผ, end_date๋Œ€์—ฌ์ข…๋ฃŒ์ผ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ: 1๊ฐœ ํ…Œ์ด๋ธ”, 4๊ฐœ ์ปฌ๋Ÿผ, 160๊ฐœ ๋กœ์šฐ

>

>

 

 

 

 

<์‹œ๋‚˜๋ฆฌ์˜ค>

 

์—ฌ๊ธฐ ์–ด๋–ค ์ž๋™์ฐจ ๋Œ€์—ฌ์ ์ด ์žˆ๋‹ค. ์ด ์ž๋™์ฐจ ๋Œ€์—ฌ์ ์—์„œ๋Š” ๊ธฐ์กด ๊ณ ๊ฐ๋“ค์„ ํ™•์‹คํžˆ ์žก์•„๋‘๊ธฐ ์œ„ํ•ด ์ฃผ ๊ณ ๊ฐ์ธต์— ์ตœ๋Œ€ํ•œ์˜ ๊ฐ€๊ฒฉ ๋ฉ”๋ฆฌํŠธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ฒฉ ์ •์ฑ…์„ ๊ฐœํŽธํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ฒˆ EDAํƒ์ƒ‰์  ๋ฐ์ดํ„ฐ ๋ถ„์„๋Š” ์ด๋ฅผ ์œ„ํ•œ ๊ณ ๊ฐ ์„ธ๋ถ„ํ™” ๊ณผ์ •์ด๋‹ค. ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„์ด 7์ผ ์ด์ƒ์ธ ์ž๋™์ฐจ๋“ค์˜ ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„(์ปฌ๋Ÿผ๋ช…: average_duration) ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

 

 

 

 

 

 

<ํ’€์ด>

 

๋จผ์ € ๋ฌธ์ œ๋ฅผ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ „์ฒด ๋ฆฌ์ŠคํŠธ์˜ ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„์„ ๋ฆฌ์ŠคํŠธํ™”ํ•ด์•ผ ํ•œ๋‹ค. ํŒŒํŽธํ™”๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ์ฃผ๊ณ ,

 

 

GROUP BY car_id

 

 

์ด ๋ฐ์ดํ„ฐ์˜ ๊ธฐ์ค€์œผ๋กœ ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„์„ ๋ฝ‘๋Š”๋‹ค. ๋Œ€์—ฌ ๊ธฐ๊ฐ„์€ ๋Œ€์—ฌ์ข…๋ฃŒ์ผ๊ณผ ๋Œ€์—ฌ์‹œ์ž‘์ผ์˜ ์ฐจ๋กœ ๊ณ„์‚ฐ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ ๋Œ€์—ฌ์‹œ์ž‘์ผ ์—ญ์‹œ ํ•˜๋ฃจ๋กœ ๊ณ„์‚ฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ 1์„ ๋”ํ•ด ์ค˜์•ผ ํ•œ๋‹ค. ์ด ๊ฐ’์— ํ‰๊ท ์„ ์ ์šฉํ•ด ์ฃผ๊ณ  ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์†Œ์ˆ˜์  ์ฒซ์งธ ์ž๋ฆฌ๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์งค ์ˆ˜ ์žˆ๋‹ค.

 

 

SELECT car_id
	, ROUND(AVG(DATEDIFF(end_date, start_date) + 1), 1) average_duration

 

 

์ด ์ค‘์—์„œ ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„์ด 7์ผ ์ด์ƒ์ธ ๊ฐ’์„ ๋ฝ‘์œผ๋ ค๋ฉด HAVING์— ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. WHERE๊ฐ€ ์•„๋‹Œ HAVING์— ๋„ฃ๋Š” ์ด์œ ๋Š” ๊ทธ๋ฃน์˜ ์ง‘๊ณ„๊ฐ’(AVG) ๊ธฐ์ค€์œผ๋กœ ์—ฐ์‚ฐํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

HAVING average_duration >= 7

 

 

๋งˆ๋ฌด๋ฆฌํ•˜๋ฉด, ์™„์„ฑ๋œ ์‹์€ ์•„๋ž˜์™€ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

 

 

SELECT car_id
        , ROUND(AVG(DATEDIFF(end_date, start_date) + 1), 1) average_duration
FROM car_rental_company_rental_history
GROUP BY car_id
HAVING average_duration >= 7
ORDER BY average_duration DESC, car_id DESC

 

 

 

 

 

 

๋”๋ณด๊ธฐ
TOOLS/SQL

 

 

 

 

ํƒœ๋ธ”๋กœ์—์„œ ๊ฐ ๊ณ„์‚ฐ๊ณผ ํ•„ํ„ฐ๋Š” ๋‚ด๋ถ€ ์ง€์ •๋œ ์ฟผ๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์— ๋”ฐ๋ผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ๊ณ„์‚ฐ๊ณผ ํ•„ํ„ฐ๊ฐ€ ๋งž๋ฌผ๋ฆฐ ํ˜•ํƒœ๋กœ ์ง„ํ–‰๋˜๋ฉฐ ์„ธ๋ถ€์ ์ธ ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

ํƒœ๋ธ”๋กœ์˜ ์ž‘๋™ ์ˆœ์„œ. ์ถœ์ฒ˜// tableau.com

 

01) ๋ฐ์ดํ„ฐ ์ถ”์ถœ ํ•„ํ„ฐ> 02) ๋ฐ์ดํ„ฐ ์›๋ณธ ํ•„ํ„ฐ> 03) ์ปจํ…์ŠคํŠธ ํ•„ํ„ฐ> 04) FIXED > 05) ์ฐจ์› ํ•„ํ„ฐ> 06) INCLUDE/ EXCLUDE/ ๋ธ”๋ Œ๋”ฉ> 07) ์ธก์ •๊ฐ’ ํ•„ํ„ฐ> 08) ํ…Œ์ด๋ธ” ๊ณ„์‚ฐ/ Clusters/ Totals/ Forecasts> 09) ํ…Œ์ด๋ธ” ๊ณ„์‚ฐ ํ•„ํ„ฐ> 10) ์ถ”์„ธ์„ / ์ฐธ์กฐ์„ 

 

 

์–ด๋–ค ์ˆœ์„œ๋กœ ๊ณ„์‚ฐ๊ณผ ํ•„ํ„ฐ๊ฐ€ ์‹คํ–‰๋˜๋Š”์ง€์— ๋”ฐ๋ผ ๋•Œ๋•Œ๋กœ ๊ฒฐ๊ณผ๊ฐ’๋งˆ์ € ๋ฐ”๋€Œ๊ธฐ๋„ ํ•˜๋ฏ€๋กœ ์ž‘๋™ ์ˆœ์„œ๋Š” ๊ผญ ์ˆ™์ง€ํ•ด ๋‘˜ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

 

 

์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด์ž. ๋‹น์‹ ์€ Furniture ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด์—์„œ ๋งค์ถœ ์ƒ์œ„ 3๊ฐœ์˜ ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ณด๊ณ  ์‹ถ๋‹ค. ๋ฌธ์ œ๋Š” ์—ฌ๊ธฐ์„œ ๋ฐœ์ƒํ•œ๋‹ค. ์ƒ์œ„ ํ•„ํ„ฐ๊ฐ€ ์ฐจ์› ํ•„ํ„ฐ๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ „์ฒด ์ค‘์—์„œ ๋งค์ถœ ์ƒ์œ„ 3๊ฐœ์˜ ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ๋จผ์ € ๊ฑธ๋Ÿฌ์ง€๊ณ  ์ž”์—ฌ๋ฌผ ์ค‘์—์„œ Furniture ์นดํ…Œ๊ณ ๋ฆฌ์ธ ๊ฒƒ์ด ์กฐํšŒ๋œ๋‹ค. ์ด๊ฑด ๋‹น์‹ ์ด ์›ํ•˜๋˜ ๋‹ต์ด ์•„๋‹ ๊ฒƒ์ด๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๋‹น์‹ ์ด ์›ํ•˜๋Š” ๋‹ต์„ ํƒœ๋ธ”๋กœ๋กœ ๊ฑธ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ?

 

 

์ „์ฒด ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ ์ค‘ 3๊ฐœ๊ฐ€ ์šฐ์„ ์ ์œผ๋กœ ๊ฑธ๋Ÿฌ์ง€๊ณ 

 

๊ทธ ์ค‘์— Furniture์ธ ๊ฐ’๋งŒ ์กฐํšŒ๋จ

 

 

์ด์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ์†”๋ฃจ์…˜์ด ์ปจํ…์ŠคํŠธ ํ•„ํ„ฐ๋‹ค. ์ปจํ…์ŠคํŠธ ํ•„ํ„ฐ๋Š” ์›Œํฌ์‹œํŠธ์—์„œ ์ƒ์„ฑ๋˜๋Š” ๋‹ค๋ฅธ ์–ด๋–ค ํ•„ํ„ฐ๋ณด๋‹ค ์•ž์„œ์„œ ์‹คํ–‰๋œ๋‹ค.

 

 

์œ„ ๊ฒฝ์šฐ๋กœ ๋ณด๋ฉด, ์นดํ…Œ๊ณ ๋ฆฌ ํ•„ํ„ฐ๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ์ปจํ…์ŠคํŠธ ํ•„ํ„ฐ๋กœ ์ „ํ™˜('์ปจํ…์ŠคํŠธ์— ์ถ”๊ฐ€' ํด๋ฆญ)ํ•ด ์ฃผ๋ฉด ์ˆœ์œ„ ์ง‘๊ณ„๋ณด๋‹ค ์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ์ฝํžˆ๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ํƒœ๋ธ”๋กœ๊ฐ€ ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ˆœ์œ„ ์ง‘๊ณ„ํ•˜๋Š” ํƒ€์ด๋ฐ์— ์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•˜๊ฒŒ ๋˜๋‹ˆ Furniture ์นดํ…Œ๊ณ ๋ฆฌ ์ค‘์—์„œ ์ƒ์œ„ 3๊ฐœ ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ฝ‘๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. 

 

 

์ด๋ฒˆ์—” ์ •์ƒ์ ์œผ๋กœ ์ž˜ ๋ฝ‘ํžŒ๋‹ค.

 

 

๋ฐ”๊ฟ”์ค€ ๊ฑด ์ปจํ…์ŠคํŠธ ํ•„ํ„ฐ ์ง€์ •๋ฐ–์— ์—†๋Š”๋ฐ๋„ ์ž˜ ๋ฝ‘ํžˆ๋Š” ๊ฒƒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋จธ๋ฆฟ์†์˜ ๊ฒฐ๊ณผ๋ฌผ๊ณผ ์‹ค์ œ ๊ฒฐ๊ณผ๋ฌผ์˜ ๊ฐ„๊ทน์€ ๋Œ€๋ถ€๋ถ„ ์ž‘๋™ ์ˆœ์„œ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๋Š” ๋ฐ์„œ ๋ฐœ์ƒํ•œ๋‹จ๋‹ค. ์—ฌํŠผ ์•ž์„œ ๊ฐ„ ์„ ๋ฐฐ๋“ค์˜ ๋ˆˆ๋ฌผ์— ์ –์€ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๋ฐŸ๊ณ  ์šฐ๋ฆฌ๋Š”, ๋‘ ๊ฒฐ๊ณผ๋ฌผ์˜ ๊ฐ„๊ทน์„ ์ตœ๋Œ€ํ•œ ์ขํž ๊ฑฐ์ธ์˜ ์–ด๊นจ ์œ„์— ํƒ„ ์…ˆ์ด๋‹ค. ์ž˜ ๋ฐฐ์›Œ ํ™œ์šฉํ•ด ๋ณด์ž.

'TOOLS > Tableau' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Tableau: LOD(Level of Detail Calculation)  (1) 2024.02.26
๋”๋ณด๊ธฐ
TOOLS/Tableau

 

 

 

ํƒœ๋ธ”๋กœ์—์„œ ๊ณ„์‚ฐ์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ์ด๋ค„์ง„๋‹ค. ์ฒซ์งธ, ๋ฐ์ดํ„ฐ ์›๋ณธ์— ๋Œ€ํ•ด ๊ณ„์‚ฐ์„ ์ง„ํ–‰ํ•˜๋Š” ๊ธฐ๋ณธ ๊ณ„์‚ฐ. ๋‘˜์งธ, ํ˜„์žฌ ๋น„์ฃผ์–ผ๋ฆฌ์ œ์ด์…˜์— ํ‘œ์‹œ๋œ ํ•ญ๋ชฉ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ’์„ ๋ณ€ํ™˜ํ•ด ์…ˆํ•˜๋Š” ํ…Œ์ด๋ธ” ๊ณ„์‚ฐ. ์…‹์งธ, ์—ฐ์‚ฐํ•  ์„ธ๋ถ€ ์ˆ˜์ค€์„ ์ง€์ •ํ•ด ์…ˆํ•˜๋Š” LOD ๊ณ„์‚ฐ. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ด ์„ธ ๊ฐœ์˜ ๊ณ„์‚ฐ ์ค‘์—์„œ LOD ๊ณ„์‚ฐ์˜ ์ •์˜์™€ ์˜ˆ์ œ์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ๋‹ค๋ฃฌ๋‹ค.

 

 

 

<'๋””ํ…Œ์ผ'์—๋„ '๋ ˆ๋ฒจ'์ด ์žˆ๋‹ค>

 

ํ…Œ์ด๋ธ” ๊ณ„์‚ฐ์„ ํ•  ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ž. ์›”๋งค์ถœ ๊ฐ’์„ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์ชผ๊ฐœ๋ฉด ๋ ˆ์ €, ๊ฐ€๊ตฌ, ์‹ํ’ˆ์˜ ์›”๋งค์ถœ ๊ฐ’์„ ๊ฐ๊ฐ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋ญ‰ํ……์ด๋กœ ์ชผ๊ฐœ ๋ฒ„๋ฆฐ๋‹ค๋ฉด ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ, ์ฆ‰ ๋‚š์‹œ๋Œ€์™€ ์บ ํ•‘ ํ…ํŠธ, ์˜์ž์™€ ์ฑ…์ƒ, ๋ฐ€ํ‚คํŠธ์™€ ๋ƒ‰๋™ ์‹ํ’ˆ์˜ ์›”๋งค์ถœ ๊ฐ’์„ ๋ณผ ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋Œ€๋กœ ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์›”๋งค์ถœ์„ ์ชผ๊ฐ ๋‹ค๋ฉด '๊ทธ๋ƒฅ ์นดํ…Œ๊ณ ๋ฆฌ'์˜ ์›”๋งค์ถœ ๊ฐ’์„ ๊ฐ๊ฐ ๋ณด๊ธฐ๋Š” ํž˜๋“ค๋‹ค.

 

 

๋‹ค์‹œ ๋งํ•˜๋ฉด "์ฐจ์›๊ณผ ์ธก์ •๊ฐ’์„ ํ…Œ์ด๋ธ” ๋‚ด์— ๋„ฃ์œผ๋ฉด ๊ทธ ์‹œ์ ์—์„œ '๋””ํ…Œ์ผ ๋ ˆ๋ฒจ'์€ ๊ณ ์ •๋œ๋‹ค." ๋””ํ…Œ์ผ ๋ ˆ๋ฒจ์ด ๋†’์„ ์ˆ˜๋ก ๊ฐ ๋ฐ์ดํ„ฐ๋Š” ํ†ตํ•ฉ๋˜์–ด ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋””ํ…Œ์ผ ๋ ˆ๋ฒจ์ด ๋‚ฎ์„ ์ˆ˜๋ก ๋ฐ์ดํ„ฐ๋Š” ์„ธ๋ถ„ํ™”๋˜์–ด ์ชผ๊ฐœ์ ธ ์žˆ๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ๋ณด๋‹ค ๋””ํ…Œ์ผ ๋ ˆ๋ฒจ์ด ๋†’์€ ์…ˆ์ด๋‹ค.

 

 

์–ด์ฉŒ๋ฉด ๋‹น์—ฐํ•ด ๋ณด์ด๋Š” ๋ง์ด์ง€๋งŒ, ์ด ๋‹จ์ˆœํ•œ ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด ์ œํ•œ๋˜๋Š” ๊ณ„์‚ฐ๋“ค์ด ๋งŽ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ณ ๊ฐ๋ณ„ ๊ตฌ๋งค ์ผ์ž๋ฅผ ์ตœ์ดˆ ๊ตฌ๋งค์ผ๋กœ๋ถ€ํ„ฐ ๋ฉฐ์น ์ด ์ง€๋‚ฌ๋Š”์ง€ ๋ณด๊ณ  ์‹ถ๋‹ค๊ณ  ํ•ด ๋ณด์ž. ์ด๋ฅผ ์œ„ํ•ด์„œ ๊ตฌ๋งค์ผOrder Date์˜ MIN ๊ฐ’๊ณผ(MIN[Order Date]) ์ตœ์ดˆ ๊ตฌ๋งค์ผ๋กœ๋ถ€ํ„ฐ์˜ ๋‚ ์งœ ์ฐจ์ดDATEDIFF๋ฅผ ๋ฝ‘์œผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

 

์ „๋ถ€ ๋‹ค '์ตœ์ดˆ ๊ตฌ๋งค์ผ'๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

 

'๊ณ ๊ฐ๋ณ„ ์ตœ์ดˆ ๊ตฌ๋งค์ผ' ์ถœ๋ ฅ์„ ์˜ˆ์ƒํ•˜๊ณ  ์ž…๋ ฅํ•œ ๊ฐ’์ด์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ํ™”๋ฉด(ํ…Œ์ด๋ธ”) ์ƒ ๋””ํ…Œ์ผ ๋ ˆ๋ฒจ์ด (SQL ์‹์œผ๋กœ ๋งํ•˜์ž๋ฉด ๊ทธ๋ฃน์ด) ์ผ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ๊ตฌ๋งค์ผ์ด ๋ชจ๋‘ ์ตœ์ดˆ ๊ตฌ๋งค์ผ ๊ฐ’์œผ๋กœ ์žกํžˆ๊ฒŒ ๋˜๊ณ  ์ด ์‹์„ ํ†ตํ•ด DATEDIFF๋ฅผ ๊ณ„์‚ฐํ•ด ๋ดค์ž ์œ ์˜๋ฏธํ•œ ์—ฐ์‚ฐ์ด ๋  ์ˆ˜ ์—†๋‹ค.

 

 

์ด๋ ‡๊ฒŒ, ๋‘ ๊ฐ’๋“ค์˜ ๋ ˆ๋ฒจ ์ฐจ์ด ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ๊ณ„์‚ฐ๋  ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค์„ ์‹ค์งˆ์ ์œผ๋กœ ์—ฐ์‚ฐ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด ์ฃผ๋Š” ๊ฒŒ LOD ๊ณ„์‚ฐLevel of Detail Calculation์ด๋‹ค. LOD ๊ณ„์‚ฐ ํ•จ์ˆ˜ ์ค‘ FIXED๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ๋ทฐ ๋‚ด์—(VLOD: View Level of Detail) ๋‚˜์™€ ์žˆ์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ์ฐจ์› ๊ธฐ์ค€์œผ๋กœ ๊ฐ’์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด FIXED๋กœ ์‚ฌ์šฉ์ž ์ด๋ฆ„Customer Name์„ ์ถ”๊ฐ€๋กœ ๊ทธ๋ฃจํ•‘ํ•ด ์ฃผ๋ฉด ๊ณ ๊ฐ ๋ณ„๋กœ ์ตœ์ดˆ ๊ตฌ๋งค ์ผ์ž๊ฐ€ ๊ณ ์ •๋ผ์„œ ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

(FIXED [Customer Name]: MIN([Order Date]))

 

 

FIXED๋กœ ์กฐ๊ฑด์„ ๊ณ ์ •ํ•ด ์ฃผ์ž ์ œ๋Œ€๋กœ ์ตœ์ดˆ ๊ตฌ๋งค์ผ์ด ๋ถ„๋ฆฌ๋ผ ๋‚˜์˜จ๋‹ค.

 

 

์ด์ฒ˜๋Ÿผ LOD ๊ณ„์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ์šฐ๋ฆฌ ํ…Œ์ด๋ธ”(VLOD)์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋””ํ…Œ์ผ ๋ ˆ๋ฒจ ์™ธ์—์„œ๋„ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

 

 

 

 

<LOD ํ‘œํ˜„์‹์˜ ํ˜•ํƒœ์™€ ์ข…๋ฅ˜>

 

LOD ํ‘œํ˜„์‹์€ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค. ์กฐ๊ฑด์œผ๋กœ ํ™œ์šฉํ•  ์ฐจ์›๊ณผ ์ง‘๊ณ„์‹์„ ๊ธฐ์žฌํ•˜๊ณ  ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด ์ฃผ๋Š” ํ˜•ํƒœ๋‹ค. ์ฐจ์› ์„ ์–ธ์€ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ƒ๋žตํ•˜๋ฉด ์ „์ฒด ํ…Œ์ด๋ธ” ๋‹จ์œ„๋กœ ํ‘œํ˜„๋˜๊ฒŒ ๋œ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ฐจ์›๋„ ์กฐ๊ฑด์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‰ผํ‘œ๋กœ ๋’ค๋ฅผ ์ด์–ด์ฃผ๋ฉด ๋œ๋‹ค. ๋˜ ์œ ๋…ํ•ด์•ผ ํ•  ์ ์ด ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, ๋’ค์— ์˜ค๋Š” ์‹์€ ๋ฐ˜๋“œ์‹œ ์ง‘๊ณ„์‹(์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•œ ๊ฐ’์˜ ํ˜•ํƒœ)์œผ๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

 

์ถœ์ฒ˜// ํŒจ์ŠคํŠธ์บ ํผ์Šค

 

์ง€์†์ ์œผ๋กœ ์„ค๋ช…๋˜๊ณ  ์žˆ๋Š” FIXED๋Š” ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ํ‘œํ˜„์„ ์„ค๋ช…ํ•˜๋Š” LOD ํ‘œํ˜„์‹์ด๋‹ค. ์™ธ์—๋„ ๋‘ ๊ฐ€์ง€ ํ‘œํ˜„์‹์ด ๋” ์žˆ๋Š”๋ฐ, ํ˜„์žฌ ๋ทฐ์—์„œ ํŠน์ • ์ฐจ์›์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ(๋” ์„ธ๋ถ„ํ™”)ํ•˜๋Š” INCLUDE์™€ ๋ฐ˜๋Œ€๋กœ ํ˜„์žฌ ํ…Œ์ด๋ธ”์—์„œ ํŠน์ • ์ฐจ์›์„ ์ œ์™ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ(๋œ ์„ธ๋ถ„ํ™”)ํ•˜๋Š” EXCLUDE๋‹ค. ๋‹ค๋งŒ FIXED๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€๋Š” ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” FIXED ์œ„์ฃผ๋กœ ๋‹ค๋ค˜๋‹ค.

 

 

 

 

 

<๋งˆ์น˜๋ฉด์„œ>

 

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” LOD์˜ ๊ฐœ๋…๊ณผ ํ˜•ํƒœ์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์•Œ์•„๋ดค๋‹ค. LOD๋Š” ๋ณธ๊ฒฉ์ ์ธ ํƒœ๋ธ”๋กœ ํ™œ์šฉ์„ ์œ„ํ•ด ๊ผญ ์•Œ์•„๋‘ฌ์•ผ ํ•  ๊ฐœ๋…์ด๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ํƒœ๋ธ”๋กœ์—์„œ ์ œ๊ณตํ•˜๋Š” LOD ํ‘œํ˜„์‹์˜ ํ™œ์šฉ์— ๋Œ€ํ•œ ๊ณต์‹ ๊ฐ€์ด๋“œ๋ฅผ ํƒœ๊ทธํ•˜๋ฉด์„œ ๊ธ€์„ ๋งˆ์นœ๋‹ค. ์ˆ˜์ต KPI ์ธก์ •, ์ฝ”ํ˜ธํŠธ ๋ถ„์„ ๋“ฑ LOD ํ‘œํ˜„์‹์˜ ํ™œ์šฉ์ฒ˜์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ๋‚˜์™€ ์žˆ์œผ๋‹ˆ ๊ผญ ํ•œ ๋ฒˆ ์ฝ์–ด๋ณด๊ธธ ๊ถŒํ•œ๋‹ค.

 

 

 

 

 

 

<์ฐธ๊ณ >

 

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ „์„œ์—ฐ๋‹˜ ๊ฐ•์˜

ํƒœ๋ธ”๋กœ ๊ณต์‹ ๋ธ”๋กœ๊ทธ

Cheon๋‹˜ ๋ธŒ๋Ÿฐ์น˜

๊น€์†Œ์ •๋‹˜ velog

 

'TOOLS > Tableau' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Tableau: ๊ณ„์‚ฐ๊ณผ ํ•„ํ„ฐ์˜ ์ž‘๋™ ์ˆœ์„œ, Order of Operation  (0) 2024.02.26
๋”๋ณด๊ธฐ
TOOLS/Tableau

 

 

 

 

<์„œ๋ก >

์‹ค๋ฌด์—์„œ๋Š” ์ข…์ข… ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐใ…ก๊ธฐ์ค€ํ‚ค๊ฐ€ ๊ณต๋ฐฑ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ, ๋‹ค์‹œ ๋งํ•ด ํ•ฉ์ง‘ํ•ฉใ…ก๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค. ํƒ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์ด๋ฅผ FULL OUTER JOIN์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ง€์›ํ•˜์ง€๋งŒ, mysql์—์„œ๋Š” ์•„์‰ฝ๊ฒŒ๋„ ์ด๋ฅผ ๊ณต์‹์ ์œผ๋กœ ์ง€์›ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค. ๊ทธ๋Ÿฌ๋ฉด mysql์—์„œ๋Š” ํ•ฉ์ง‘ํ•ฉ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†๋ƒ๊ณ ? ๊ทธ๊ฑด ์•„๋‹ˆ๋‹ค. LEFT JOIN๊ณผ RIGHT JOIN์„ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ mysql์—์„œ๋„ ์ด๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์™ธ๊ตญ ๋ธ”๋กœ๊ทธ์— ํ•ด๋‹น ๋‚ด์šฉ์— ๋Œ€ํ•ด ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ํ‘œ์‹œํ•œ ํฌ์ŠคํŠธ๊ฐ€ ์žˆ์–ด ๋ฒˆ์—ญํ•ด ๊ฐ€์ ธ์™€ ๋ณธ๋‹ค.

 

 

FULL OUTER JOIN์˜ ํ˜•ํƒœ. ์ถœ์ฒ˜ //&nbsp;https://sql-joins.leopard.in.ua/

 

 

 

 

<๋ณธ๋ฌธ>

sales์™€ orders๋ผ๋Š” ๋‘ ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. sales์™€ orders์—๋Š” ๋™์ผํ•˜๊ฒŒ id์ฃผ๋ฌธ ์•„์ด๋””์™€ order_date(ํ˜•์‹์ด ์‚ด์ง ๋‹ค๋ฅธ)์ฃผ๋ฌธ ์ผ์ž, amount์ฃผ๋ฌธ ๊ธˆ์•ก ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด ์žˆ๋‹ค.

 

SELECT *
FROM sales;

 +------+---------------------+--------+
 | id   | order_date          | amount |
 +------+---------------------+--------+
 |    1 | 2021-02-02 08:15:00 |    250 |
 |    2 | 2021-02-02 08:30:00 |    200 |
 |    3 | 2021-02-02 08:55:00 |    150 |
 |    4 | 2021-02-02 09:15:00 |    125 |
 |    5 | 2021-02-02 09:30:00 |    250 |
 |    6 | 2021-02-02 09:45:00 |    200 |
 |    7 | 2021-02-02 10:15:00 |    180 |
 |    8 | 2021-02-02 10:30:00 |    125 |
 |    9 | 2021-02-02 10:45:00 |    200 |
 |   10 | 2021-02-02 11:15:00 |    250 |
 |   11 | 2021-02-02 11:30:00 |    150 |
 |   12 | 2021-02-02 11:45:00 |    200 |
 +------+---------------------+--------+


SELECT *
FROM orders;

 +------+------------+--------+
 | id   | order_date | amount |
 +------+------------+--------+
 |    5 | 2021-01-28 |    250 |
 |    6 | 2021-01-29 |    250 |
 |    7 | 2021-01-30 |    250 |
 |    8 | 2021-01-31 |    250 |
 |    9 | 2021-02-01 |    250 |
 +------+------------+--------+

 

 

๋งŒ์•ฝ ๋‹น์‹ ์ด ์ „์ฒด ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ๋งค์ถœ ํ•ฉ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ์ด์œ ๋กœ ๋‘ ํ…Œ์ด๋ธ”์„ ํ•ฉ์ณ์•ผ ํ•  ํ•„์š”์„ฑ์ด ์žˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด LEFT JOIN๊ณผ RIGHT JOIN์„ UNION ALL๋กœ ๊ฒฐํ•ฉํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์‹์œผ๋กœ.

mysql> SELECT * FROM sales
       LEFT JOIN orders ON sales.id = orders.id
       UNION ALL
       SELECT * FROM sales
       RIGHT JOIN orders ON sales.id = orders.id
       WHERE sales.id IS NULL ;
       
 +------+---------------------+--------+------+------------+--------+
 | id   | order_date          | amount | id   | order_date | amount |
 +------+---------------------+--------+------+------------+--------+
 |    5 | 2021-02-02 09:30:00 |    250 |    5 | 2021-01-28 |    250 |
 |    6 | 2021-02-02 09:45:00 |    200 |    6 | 2021-01-29 |    250 |
 |    7 | 2021-02-02 10:15:00 |    180 |    7 | 2021-01-30 |    250 |
 |    8 | 2021-02-02 10:30:00 |    125 |    8 | 2021-01-31 |    250 |
 |    9 | 2021-02-02 10:45:00 |    200 |    9 | 2021-02-01 |    250 |
 |    1 | 2021-02-02 08:15:00 |    250 | NULL | NULL       |   NULL |
 |    2 | 2021-02-02 08:30:00 |    200 | NULL | NULL       |   NULL |
 |    3 | 2021-02-02 08:55:00 |    150 | NULL | NULL       |   NULL |
 |    4 | 2021-02-02 09:15:00 |    125 | NULL | NULL       |   NULL |
 |   10 | 2021-02-02 11:15:00 |    250 | NULL | NULL       |   NULL |
 |   11 | 2021-02-02 11:30:00 |    150 | NULL | NULL       |   NULL |
 |   12 | 2021-02-02 11:45:00 |    200 | NULL | NULL       |   NULL |
 +------+---------------------+--------+------+------------+--------+

 

 

๋‹ค๋งŒ UNION ALL์˜ ๊ฒฝ์šฐ ํ•ฉ์ง‘ํ•ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต ํ–‰์ด ์„ž์—ฌ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿด ๊ฒฝ์šฐ์—๋Š” UNION์„ ์‚ฌ์šฉํ•ด ์ฃผ๋ฉด ๋˜๋Š”๋ฐ, UNION์˜ ๊ฒฝ์šฐ์—๋Š” t1๊ณผ t2 ์‚ฌ์ด์˜ ์ค‘๋ณต ๊ฐ’์„ ๊ฑธ๋Ÿฌ์„œ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด์–ด์„œ ์œ ๋‹ˆํฌ ๊ฐ’์„ ๊ฑฐ๋ฅด๋Š” ์ธ๋ฑ์Šค๊ฐ€ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ใ…ก์ค‘๋ณต์„ ๊ฑฐ๋ฅด์ง€ ์•Š๋Š” UNION ALL๊ณผ ๋Œ€๋น„ํ•ด์„œใ…ก ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ 1.5๋ฐฐ์—์„œ 4๋ฐฐ๊นŒ์ง€ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ๋‚  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ .

 

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, ์›ฌ๋งŒํ•˜๋ฉด FULL OUTER JOIN์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” UNION ALL์„ ์“ฐ๋Š” ๊ฒŒ ํšจ์œจ์ ์ด๊ฒ ๋‹ค. (+ ์ตœ์†Œํ•œ์œผ๋กœ SELECTํ•ด์„œ.)๋ฌผ๋ก  ์• ์ดˆ์— ๋ชจ๋ธ๋ง ์ฐจ์›์—์„œ ๊ฒฐํ•ฉํ•  ์ผ์„ ๋ฐฐ์ œํ•˜๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ๊ฒŒ ๊ฐ€์žฅ ์ข‹๊ฒ ์ง€๋งŒ.

 

 

 

<์ •๋ฆฌ>

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฌธ๋ฒ•์„ ์ •๋ฆฌํ•ด ๋‘๊ณ  ๊ธ€์„ ๋งˆ์นœ๋‹ค. ์ˆœ์„œ๋Œ€๋กœ UNION ALL์ค‘๋ณต ๋ฏธ์ œ๊ฑฐ, UNION์ค‘๋ณต ์ œ๊ฑฐ์œผ๋กœ FULL OUTER JOIN์„ ์ ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ๋‹ค.

SELECT * FROM t1 
LEFT JOIN t2 ON t1.id = t2.id 
UNION ALL 
SELECT * FROM t1 
RIGHT JOIN t2 ON t1.id = t2.id 
WHERE t1.id IS NULL

 

 

SELECT * FROM t1 
LEFT JOIN t2 ON t1.id = t2.id 
UNION 
SELECT * FROM t1 
RIGHT JOIN t2 ON t1.id = t2.id

 

 

<์ฐธ๊ณ >

ubiq ๋ธ”๋กœ๊ทธ

sewonzzang๋‹˜ ๋ธ”๋กœ๊ทธ

 

 

 

๋”๋ณด๊ธฐ
TOOLS/SQL

 

 

 

<๋ฐ์ดํ„ฐ ์ฒดํฌ>

<

๋ฌธ์ œ ์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์‹ํ’ˆ๋ถ„๋ฅ˜๋ณ„ ๊ฐ€์žฅ ๋น„์‹ผ ์‹ํ’ˆ์˜ ์ •๋ณด ์กฐํšŒํ•˜๊ธฐ

ํ…Œ์ด๋ธ”๋ช…: food_product์–ด๋А ๋Œ€ํ˜•๋งˆํŠธ์˜ ์‹ํ’ˆ ์ •๋ณด ํ…Œ์ด๋ธ” ๊ฒฌ๋ณธ 

์ปฌ๋Ÿผ๋ช…: product_id์ œํ’ˆ์‹๋ณ„์ฝ”๋“œ, product_name์ œํ’ˆ๋ช…, product_cd์‹ํ’ˆ์ฝ”๋“œ, category์นดํ…Œ๊ณ ๋ฆฌ๋ช…, price๊ฐ€๊ฒฉ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ: 1๊ฐœ ํ…Œ์ด๋ธ”, 5๊ฐœ ์ปฌ๋Ÿผ, 40๊ฐœ ๋กœ์šฐ

>

 

 

 

 

<์‹œ๋‚˜๋ฆฌ์˜ค>

 

๋‹น์‹ ์€ A์‹ํ’ˆ ์˜์—…ํŒ€ ๋‹ด๋‹น์ž๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ์ •๋Ÿ‰์ ์œผ๋กœ ์ œํ’ˆ๋ณ„ ํŒ๋งค ์„ฑ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ ์ž ๋งˆํŠธ ์ „์‚ฐ ๊ธฐ์žฌ๋œ ์ž์‚ฌ ์ƒํ’ˆ ๊ธฐ๋ฐ˜์œผ๋กœ EDAํƒ์ƒ‰์  ๋ฐ์ดํ„ฐ ๋ถ„์„๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. food_product ํ…Œ์ด๋ธ”์—์„œ ์‹ํ’ˆ๋ถ„๋ฅ˜๋ณ„๋กœ ๊ฐ€๊ฒฉ์ด ๊ฐ€์žฅ ๋น„์‹ธ๊ฑฐ๋‚˜ ์‹ผ '๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ '์˜ category, price, product_name์„ ์กฐํšŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ์งœ์•ผ ํ• ๊นŒ?

 

 

 

 

 

<ํ’€์ด>

 

'์‹ํ’ˆ๋ถ„๋ฅ˜๋ณ„' ์ด๋ผ ํ–ˆ์œผ๋‹ˆ ์ƒํ’ˆ์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด์•ผ ํ•œ๋‹ค. ๋˜, GROUP BY์™€ ์œˆ๋„์šฐ ํ•จ์ˆ˜ ์ค‘์—๋Š” ์œˆ๋„์šฐ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์™œ๋ƒ๋ฉด ์—ฐ์‚ฐ๋œ ๊ฒฐ๊ณผ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์—ฐ์‚ฐ์— ๋งž๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋กœ์šฐ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ. ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ข€ ๋” ๊นŠ์ด ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์œˆ๋„์šฐ ํ•จ์ˆ˜Window Function VS GROUP BY ํฌ์ŠคํŠธ๋ฅผ ์ฝ์œผ๋ฉด ๋œ๋‹ค.

 

WHERE์ ˆ์ด ๊ธธ์–ด์ง€๊ฒ ๋‹ค. 1) '๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ ' category์˜ ์ƒํ’ˆ ์ค‘์— 2) ์‹ํ’ˆ๋ถ„๋ฅ˜๋ณ„๋กœ ๊ฐ€๊ฒฉ์ด ๊ฐ€์žฅ ๋น„์‹ธ๊ฑฐ๋‚˜/ ์‹ผ ์ƒํ’ˆ๋งŒ ๊ณจ๋ผ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ. ์ด๋ฅผ ๋ฐ˜์˜ํ•ด WHERE์ ˆ์„ ์“ฐ๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์ด๋ฅผ ๋ณด๋ฉด ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ IN ๋’ค์— ์กฐ๊ฑด์ ˆ๋กœ ๋„ฃ์–ด ์คฌ๋Š”๋ฐ, ์ด์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ด€๋ จํ•ด ์ฐพ์•„๋ณด๋ฉด ๋œ๋‹ค.

 

WHERE category IN('๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ ')
        AND price IN (SELECT MAX(price) OVER (PARTITION BY category) FROM food_product)
        -- ๊ฐ€์žฅ ๋น„์‹ผ ์ƒํ’ˆ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜
WHERE category IN('๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ ')
        AND price IN (SELECT MIN(price) OVER (PARTITION BY category) FROM food_product)
        -- ๊ฐ€์žฅ ์‹ผ ์ƒํ’ˆ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜

 

๋˜ํ•œ ์ „๋ฌธ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์“ธ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. 

 

SELECT category
        , price
        , product_name
FROM food_product
WHERE category IN('๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ ')
        AND price IN (SELECT MAX(price) OVER (PARTITION BY category) FROM food_product)
        -- ๊ฐ€์žฅ ๋น„์‹ผ ์ƒํ’ˆ๋“ค๋งŒ ์ถœ๋ ฅ
ORDER BY price DESC

 

 

SELECT category
        , price
        , product_name
FROM food_product
WHERE category IN('๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ ')
        AND price IN (SELECT MIN(price) OVER (PARTITION BY category) FROM food_product)
        -- ๊ฐ€์žฅ ์‹ผ ์ƒํ’ˆ๋“ค๋งŒ ์ถœ๋ ฅ
ORDER BY price DESC

 

 

 

 

 

๋”๋ณด๊ธฐ
TOOLS/SQL