Search

SQL ๊ธฐ๋ณธ

SQL ๊ธฐ๋ณธ

โ€ข
โ—ฆ
DDL
โ—ฆ
DML
โ—ฆ
DCL
โ—ฆ
TCL
โ€ข
โ—ฆ
WHERE
โ—ฆ
ORDER BY
โ—ฆ
GROUP BY
โ€ข
โ—ฆ
๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜
โ—ฆ
์•”์‹œ์  ํ˜•๋ณ€ํ™˜
โ€ข
โ€ข

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๊ธฐ๋ฐ˜ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ฐ์ดํ„ฐ?

: ์ธก์ • ๋ฐ ์ˆ˜์ง‘ํ•œ ๊ฐ’

์ •๋ณด?

: ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜์—ฌ ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•œ ๊ฒƒ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (DataBase)

: โ€œ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œโ€

๋ฐ์ดํ„ฐ + ๋ฒ ์ด์Šค

โ€ข
๋ฐ์ดํ„ฐ : ์ธก์ • ๋ฐ ์ˆ˜์ง‘ํ•œ ๊ฐ’
โ€ข
๋ฒ ์ด์Šค : ๊ธฐ์ง€
โ€ข
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๊ธฐ์ง€; โ€œ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œโ€
๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ํ†ตํ•ฉํ•˜์—ฌ ์ €์žฅํ•œ ์šด์˜ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠน์ง•

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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ

: ์‚ฌ์šฉ์ž + ์ธํ„ฐํŽ˜์ด์Šค + DBMS + ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(๋ฐ์ดํ„ฐ์‚ฌ์ „, ์ €์žฅDB)
โ€ข
์‚ฌ์šฉ์ž : ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž, ๊ฐœ๋ฐœ์ž, SQL ์‚ฌ์šฉ์ž, DBA
โ€ข
์ธํ„ฐํŽ˜์ด์Šค : UI, DB API, DB TOOL
โ—ฆ
UI : ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ํ™”๋ฉด
โ–ช
์›น, ์•ฑ, ํ”„๋กœ๊ทธ๋žจ ํ™”๋ฉด
โ—ฆ
DB API : ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐœ๋ฐœํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๊ณผ ์—ฐ๊ฒฐ๋œ ์ธํ„ฐํŽ˜์ด์Šค
โ–ช
DB ๋“œ๋ผ์ด๋ฒ„ (JDBC ๋“ฑ)
โ—ฆ
DB TOOL : ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ DBMS ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ
โ–ช
SQL Developer, Workbench, DBeaver, Toad ๋“ฑ
โ€ข
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : ๋ฐ์ดํ„ฐ ์‚ฌ์ „ + ์ €์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
โ—ฆ
๋ฐ์ดํ„ฐ ์‚ฌ์ „
โ–ช
๋ฉ”ํƒ€ ํ…Œ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ
โ–ช
๋ฉ”ํƒ€๋ฐ์ดํ„ฐ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ, ์Šคํ‚ค๋งˆ, ํ…Œ์ด๋ธ” ์ •์˜, ์ œ์•ฝ ์กฐ๊ฑด, ์ธ๋ฑ์Šค, ๋ทฐ ๋“ฑ
โ—ฆ
์ €์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
โ–ช
์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ
โ€ข
DBMS : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ
โ—ฆ
์ฃผ์š” ์ œํ’ˆ : ORACLE, MySQL, MS-SQL
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ๊ตฌ์„ฑ์š”์†Œ๋Š” ์‚ฌ์šฉ์ž, ์ธํ„ฐํŽ˜์ด์Šค, DBMS, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž…๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๋Š”, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ ๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ, ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ธํ„ฐํŽ˜์ด์Šค๋Š”, ์‚ฌ์šฉ์ž์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•œ ๋งค๊ฐœ์ฒด๋กœ, ๋ช…๋ น์„ ์ž…๋ ฅํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ช…๋ น ์ค„ ์ธํ„ฐํŽ˜์ด์Šค(CLI), ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(GUI), ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ API ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
DBMS(Database Management System) ๋Š”, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. DBMS๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ, ์กฐ์ž‘, ์œ ์ง€ ๊ด€๋ฆฌ, ๋ณด์•ˆ, ๋ฌด๊ฒฐ์„ฑ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š”, ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ ์‚ฌ์ „(๋ฉ”ํƒ€๋ฐ์ดํ„ฐ)๊ณผ ์ €์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์‚ฌ์ „์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ , ์ €์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ชจ๋ธ

: ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ๊ตฌ์กฐ
( ๋ชจ๋ธ : ์‹ค์ฒด๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์ž‘์€ ๊ตฌ์กฐ )

๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์ข…๋ฅ˜

โ€ข
๊ณ„์ธตํ˜•
โ€ข
๋„คํŠธ์›Œํฌํ˜•
โ€ข
๊ฐ์ฒด์ง€ํ–ฅํ˜•
โ€ข
๊ด€๊ณ„ํ˜•

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ

: ํ–‰๊ณผ ์—ด์„ ๊ฐ–๋Š” 2์ฐจ์› ๊ตฌ์กฐ์˜ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋ฅผ ํ†ตํ•˜์—ฌ ์ž๋ฃŒ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ

โ€ข
๊ฐœ์ฒด(Entity) = ๋ฆด๋ ˆ์ด์…˜ (์‹ค์ œ DB์˜ ํ…Œ์ด๋ธ”๊ณผ ๋Œ€์‘)
โ€ข
์†์„ฑ(Attriute)
โ€ข
๊ด€๊ณ„(Relationship)

๋ฆด๋ ˆ์ด์…˜์˜ ๊ตฌ์„ฑ์š”์†Œ

โ€ข
๋ฆด๋ ˆ์ด์…˜(Relation) : ๋ฐ์ดํ„ฐ๋“ค์„ 2์ฐจ์› ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋กœ ์ €์žฅํ•œ ๊ฒƒ(ํ…Œ์ด๋ธ”)
โ€ข
์†์„ฑ(Attribute) : ๋ฆด๋ ˆ์ด์…˜์˜ ์—ด (์ปฌ๋Ÿผ; column)
โ€ข
ํŠœํ”Œ(Tuple) : ๋ฆด๋ ˆ์ด์…˜์˜ ํ–‰ (๋กœ์šฐ; row)
โ€ข
์ฐจ์ˆ˜(Degree) : ๋ฆด๋ ˆ์ด์…˜ ์†์„ฑ์˜ ๊ฐœ์ˆ˜
โ€ข
์นด๋””๋„๋ฆฌํ‹ฐ(Cardinality) : ๋ฆด๋ ˆ์ด์…˜์˜ ์ž…๋ ฅ๋œ ํŠœํ”Œ์˜ ๊ฐœ์ˆ˜
โ€ข
๋„๋ฉ”์ธ(Domain) : ํ•˜๋‚˜์˜ ์†์„ฑ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„

๋ฆด๋ ˆ์ด์…˜์˜ ํŠน์ง•

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

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

: ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๊ธฐ๋ฐ˜ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

RDBMS(Relational Database Management System)

: ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ

SQL (Sturctrured Query Language)

: "๊ตฌ์กฐํ™”๋œ ์งˆ์˜์–ด"
RDBMS ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์งˆ์˜ ์–ธ์–ด

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ œํ’ˆ

โ€ข
ORACLE
โ€ข
MySQL
โ€ข
MS-SQL

์ง‘ํ•ฉ ์—ฐ์‚ฐ & ๊ด€๊ณ„ ์—ฐ์‚ฐ

์ง‘ํ•ฉ์—ฐ์‚ฐ

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

๊ด€๊ณ„ ์—ฐ์‚ฐ

๊ด€๊ณ„ ์—ฐ์‚ฐ
์„ค๋ช…
์„ ํƒ ์—ฐ์‚ฐ
ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํŠœํ”Œ๋“ค์„ ์„ ํƒํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ด€๊ณ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
ํˆฌ์˜ ์—ฐ์‚ฐ
๊ด€๊ณ„์—์„œ ํŠน์ • ์†์„ฑ(์—ด)๋“ค์„ ์„ ํƒํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ด€๊ณ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
๊ฒฐํ•ฉ ์—ฐ์‚ฐ
๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ด€๊ณ„๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ด€๊ณ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ
ํ•˜๋‚˜์˜ ๊ด€๊ณ„์—์„œ ๋‹ค๋ฅธ ๊ด€๊ณ„์˜ ํŠœํ”Œ๋“ค๋กœ ๋‚˜๋ˆ„์–ด ์ƒˆ๋กœ์šด ๊ด€๊ณ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๊ด€๊ณ„ ์—ฐ์‚ฐ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”(Table)

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” ๋ฆด๋ ˆ์ด์…˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์—ฐ์‚ฐ ์ตœ์ข…์ ์œผ๋กœ DBMS ์—์„œ๋Š” ๋ฆด๋ ˆ์ด์…˜์ด ํ…Œ์ด๋ธ”(Table) ๋กœ ์ƒ์„ฑ๋œ๋‹ค.
๊ตฌ์„ฑ ์š”์†Œ
์„ค๋ช…
์ปฌ๋Ÿผ
- ์†์„ฑ(Attribute)๋ผ๊ณ ๋„ ํ•จ. - ๋ฐ์ดํ„ฐ์˜ ํŠน์ง•์„ ๋‚˜ํƒ€๋‚˜๊ณ  ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์˜์—ญ์ด๋‹ค.
ํ–‰
- ํŠœํ”Œ(Tuple) ์ด๋ผ๊ณ ๋„ ํ•จ. - ๊ฐ ์ปฌ๋Ÿผ์— ์†ํ•˜๋Š” ์ €์žฅ๋œ ๊ฐ’.
๊ธฐ๋ณธ ํ‚ค
- ๊ฐ ํ–‰์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์—ด ๋˜๋Š” ์—ด์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. - ์œ ์ผ์„ฑ, ์ตœ์†Œ์„ฑ, NOT NULL ์„ ๋งŒ์กฑํ•ด์•ผ๋˜๋ฉฐ, ํ…Œ์ด๋ธ”์„ ๋Œ€ํ‘œํ•˜๋Š” ์†์„ฑ์ด ๋œ๋‹ค.
์™ธ๋ž˜ ํ‚ค
- ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์—ด๋กœ, ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. - ์™ธ๋ž˜ํ‚ค๋Š” ๊ด€๊ณ„ ์—ฐ์‚ฐ ์ค‘ ์กฐ์ธ ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

SQL ๋ถ„๋ฅ˜

์ข…๋ฅ˜
์„ค๋ช…
DDL
- DB ์˜ ๊ฐ์ฒด ๋ฐ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์–ธ์–ด - Data Definition Language - CREATE, ALTER, DROP, RENAME, TRUNCATE
DML
- ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ ํ•˜๋Š” ์–ธ์–ด - Data Manipulation Language - INSERT, SELECT, UPDATE, DELETE
DCL
- ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐ ํšŒ์ˆ˜ํ•˜๋Š” ์–ธ์–ด - Data Control Language - GRANT, REVOKE
TCL
- ํŠธ๋žœ์žญ์…˜์„ ์ œ์–ดํ•˜๋Š” ์–ธ์–ด - Transaction Control Language - COMMIT, ROLLBACK, SAVEPOINT

DDL (๋ฐ์ดํ„ฐ ์ •์˜์–ด)

: ํ…Œ์ด๋ธ”์„ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ๊ฐ์ฒด ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ ํ•˜๋Š” ๋ช…๋ น์–ด - CREATE : ๊ฐ์ฒด ์ƒ์„ฑ - ALTER : ๊ฐ์ฒด ์ˆ˜์ • - DROP : ๊ฐ์ฒด ์‚ญ์ œ - TRUNCATE : ๋‚ด๋ถ€์˜ ๋‚ด์šฉ์„ ์‚ญ์ œ
Plain Text
๋ณต์‚ฌ

DML (๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)

: ํ…Œ์ด๋ธ” ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ, ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด - SELECT : ๋ฐ์ดํ„ฐ ์กฐํšŒ - INSERT : ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ - UPDATE : ๋ฐ์ดํ„ฐ ์ˆ˜์ • - DELETE : ๋ฐ์ดํ„ฐ ์‚ญ์ œ
Plain Text
๋ณต์‚ฌ

DCL (๋ฐ์ดํ„ฐ ์ œ์–ด์–ด)

: ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ํ•ด์ œํ•˜๋Š” ๋ช…๋ น์–ด - GRANT : ๊ถŒํ•œ ๋ถ€์—ฌ - REVOKE : ๊ถŒํ•œ ํ•ด์ œ
Plain Text
๋ณต์‚ฌ

TCL (ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด)

: ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์˜๊ตฌ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋˜๋Œ๋ฆฌ๋Š” ๋ช…๋ น์–ด - COMMIT : ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ช…๋ น - ROLLBACK : ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ทจ์†Œํ•˜๊ณ  ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๋ช…๋ น
Plain Text
๋ณต์‚ฌ

ํŠธ๋žœ์žญ์…˜? (Transaction)

: DBMS ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ์ž‘์—… ๋‹จ์œ„

ํŠธ๋žœ์žญ์…˜์˜ ํŠน์ง• - ACID

โ€ข
A
โ—ฆ
์›์ž์„ฑ (Atomicity): ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์€ ๋ชจ๋“  ์—ฐ์‚ฐ์ด ์™„์ „ํžˆ ์ˆ˜ํ–‰๋˜๊ฑฐ๋‚˜ ์•„๋ฌด๋Ÿฐ ์—ฐ์‚ฐ๋„ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€๋˜์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํŠธ๋žœ์žญ์…˜ ๋‚ด์˜ ๋ชจ๋“  ์ž‘์—…์€ ํ•จ๊ป˜ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์•„๋ฌด๊ฒƒ๋„ ์‹คํ–‰๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
C
โ—ฆ
์ผ๊ด€์„ฑ (Consistency): ํŠธ๋žœ์žญ์…˜ ์™„๋ฃŒ ํ›„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ผ๊ด€๋œ ์ƒํƒœ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ ์ž‘์—…์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
I
โ—ฆ
๊ฒฉ๋ฆฌ์„ฑ (Isolation): ๋™์‹œ์— ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋  ๋•Œ, ํ•œ ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—…์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋„๋ก ๊ฒฉ๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํŠธ๋žœ์žญ์…˜์€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—…์„ ๋ชจ๋ฅด๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
D
โ—ฆ
์˜์†์„ฑ (Durability): ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์žฅ์•  ๋˜๋Š” ๋น„์ •์ƒ ์ข…๋ฃŒ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ์˜ ์ง€์†์„ฑ์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ํŠธ๋ž™์žญ์…˜์˜ ํŠน์ง•์œผ๋กœ ์ธํ•ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

SQL ์‹คํ–‰์ˆœ์„œ

์ˆœ์„œ
๋‹จ๊ณ„
์„ค๋ช…
1
ํŒŒ์‹ฑ(Parsing)
SQL ๋ฌธ์žฅ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ตฌ๋ฌธ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
2
์‹คํ–‰(Execution)
ํŒŒ์‹ฑ๋œ ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
3
์ธ์ถœ(Fetch)
์‹คํ–‰๋œ ๊ฒฐ๊ณผ๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

SELECT

๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” SQL ๋ช…๋ น์–ด
SELECT ์ปฌ๋Ÿผ๋ช…1, ์ปฌ๋Ÿผ๋ช…2, ... (์ „์ฒด *) FROM ํ…Œ์ด๋ธ”๋ช… WHERE ์กฐ๊ฑด GROUP BY ๊ทธ๋ฃน๊ธฐ์ค€ ์ปฌ๋Ÿผ... HAVING ๊ทธ๋ฃน ์กฐ๊ฑด ORDER BY ์ •๋ ฌ๊ธฐ์ค€ ์ปฌ๋Ÿผ... [ASC | DESC]
Java
๋ณต์‚ฌ
ํ•„์ˆ˜ ํ‚ค์›Œ๋“œ : SELECT, FROM
์„ ํƒ ํ‚ค์›Œ๋“œ : WHERE, GROUP BY, ORDER BY
์œ ์˜์‚ฌํ•ญ - ์œ„์—์„œ ์ž‘์„ฑํ•œ ์ˆœ์„œ๋Œ€๋กœ ํ‚ค์›Œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

WHERE

SELECT, UPDATE, DELETE, MERGE ๋ฌธ์— ์กฐ๊ฑด์„ ์ง€์ •ํ•˜๋Š” ํ‚ค์›Œ๋“œ

๋ฌธ๋ฒ•

WHERE ์กฐ๊ฑด; WHERE ์ปฌ๋Ÿผ (์—ฐ์‚ฐ) (๊ฐ’ ๋˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ);
(์˜ˆ์‹œ1)
ํ…Œ์ด๋ธ” EMPLOYEES ์˜ SALARY(๊ธ‰์—ฌ)๊ฐ€ 6000์„ ์ดˆ๊ณผํ•˜๋Š” ์‚ฌ์›์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
SELECT * FROM employees WHERE salary > 6000;
SQL
๋ณต์‚ฌ
(์˜ˆ์‹œ2)
ํ…Œ์ด๋ธ” EMPLOYEES ์˜ SALARY(๊ธ‰์—ฌ)๊ฐ€ 10000์ธ ์‚ฌ์›์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
SELECT * FROM employees WHERE salary = 10000;
Java
๋ณต์‚ฌ

์—ฐ์‚ฐ์ž

โ–ช
์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž
โ–ช
๋น„๊ต ์—ฐ์‚ฐ์ž
โ–ช
๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž
์„ค๋ช…
EX( A : 10, B : 3 )
+
๋”ํ•˜๊ธฐ
A + B = 13
-
๋นผ๊ธฐ
A - B = 7
*
๊ณฑํ•˜๊ธฐ
A * B = 30
/
๋‚˜๋ˆ„๊ธฐ
A / B = 3.333..
%
๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ
A % B = 1

๋น„๊ต ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž
์„ค๋ช…
EX( A : 10, B : 3 )
=
A = B, A์™€ B๊ฐ€ ๊ฐ™์œผ๋ฉด ์ฐธ(TRUE)
A = B, ๊ฒฐ๊ณผ : FALSE
!=
A != B, A์™€ B๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ฐธ(TRUE)
A != B, ๊ฒฐ๊ณผ : TRUE
<>
A <> B, A์™€ B๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ฐธ(TRUE)
A <> B, ๊ฒฐ๊ณผ : TRUE
>
A > B, A๊ฐ€ B๋ณด๋‹ค ํฌ๋ฉด ์ฐธ(TRUE)
A > B, ๊ฒฐ๊ณผ : TRUE
<
A < B, A๊ฐ€ B๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ฐธ(TRUE)
A < B, ๊ฒฐ๊ณผ : FALSE
>=
A โ‰ฅ B, A๊ฐ€ B๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ฐธ(TRUE)
A โ‰ฅ B, ๊ฒฐ๊ณผ : TRUE
<=
A โ‰ค B, A๊ฐ€ B๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ฐธ(TRUE)
A โ‰ค B, ๊ฒฐ๊ณผ : FALSE

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

โ–ช
BETWEEN A AND B : X >= A AND X <= B
โ–ช
NOT : ๋…ผ๋ฆฌ ๋ถ€์ • ์—ฐ์‚ฐ - NOT A : A๊ฐ€ TRUE ๋ฉด FALSE ๋กœ, FALSE ๋ฉด TRUE ๋กœ ๋ฐ”๊พผ๋‹ค
โ–ช
IN ์—ฐ์‚ฐ์ž : ํŠน์ • ์—ด์— ํฌํ•จ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ’์„ ์กฐํšŒํ•  ๋•Œ
โ—ฆ
A IN (๊ฐ’1, ๊ฐ’2, ๊ฐ’3, ...) : A ์†์„ฑ์˜ ๊ฐ’1,๊ฐ’2,๊ฐ’3 ์„ ํฌํ•จํ•˜์—ฌ ์กฐํšŒ
โ—ฆ
A NOT IN (๊ฐ’1, ๊ฐ’2, ๊ฐ’3, ...) : A ์†์„ฑ์˜ ๊ฐ’1,๊ฐ’2,๊ฐ’3 ์„ ์ œ์™ธํ•˜์—ฌ ์กฐํšŒ
โ–ช
LIKE
โ—ฆ
A LIKE '_' : _ ํ•œ ๋ฌธ์ž๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ์™€์ผ๋“œ ์นด๋“œ
โ—ฆ
A LIKE '%' : % ๊ณต๋ฐฑํฌํ•จ ์—ฌ๋Ÿฌ๊ธ€์ž๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ์™€์ผ๋“œ ์นด๋“œ
โ–ช
IS NULL : ์—ด์˜ ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ์ž A IS NULL : A๊ฐ€ NULL ์ผ ๋•Œ A IS NOT NULL : A๊ฐ€ NULL ์ด ์•„๋‹ ๋•Œ NULL ๊ณผ์˜ ์—ฐ์‚ฐ NULL + 10 = NULL NULL > 10 = NULL
โ–ช
AND, OR
โ—ฆ
A AND B : A ์กฐ๊ฑด, B ์กฐ๊ฑด ๋‘˜ ๋‹ค ์ฐธ์ผ ๋•Œ๋งŒ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ(true)
โ—ฆ
A OR B : A ์กฐ๊ฑด, B ์กฐ๊ฑด ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฐธ์ผ ๋•Œ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ(true)
โ–ช
์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž
โ—ฆ
UNION : A UNION B, A์™€ B์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ง‘ํ•ฉ์œผ๋กœ ๋ฌถ๋Š”๋‹ค. ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋Š” ์ œ๊ฑฐ๋œ๋‹ค.
โ—ฆ
UNION ALL : A UNION B, A์™€ B์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ง‘ํ•ฉ์œผ๋กœ ๋ฌถ๋Š”๋‹ค. ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋„ ์ถœ๋ ฅ๋œ๋‹ค.
โ—ฆ
MINUS : A MINUS B, A์™€ B์˜ ๊ฒฐ๊ณผ๋ฅผ ์ฐจ์ง‘ํ•ฉ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.
โ—ฆ
INTERSECT : A INTERSECT B, A์™€ B์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ต์ง‘ํ•ฉ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„

โ†‘ (๋†’์Œ)
*, / ๊ณฑํ•˜๊ธฐ, ๋‚˜๋ˆ„๊ธฐ
+, - ๋”ํ•˜๊ธฐ, ๋นผ๊ธฐ
=, !=, ^=, <>, >, >=, <, <= ๋น„๊ต ์—ฐ์‚ฐ
IS NULL, LIKE, IN
BETWEEN A AND B
NOT
AND
OR
โ†“ (๋‚ฎ์Œ)

ORDER BY

๋ฐ์ดํ„ฐ ์กฐํšŒ(SELECT) ์‹œ, ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋Š” ํ‚ค์›Œ๋“œ

๋ฌธ๋ฒ•

ORDER BY ์ •๋ ฌ ๊ธฐ์ค€ ์ปฌ๋Ÿผโ€ฆ [ASC | DESC];
* ASC : ์˜ค๋ฆ„์ฐจ์ˆœ * DESC : ๋‚ด๋ฆผ์ฐจ์ˆœ * (์ƒ๋žต) : ์˜ค๋ฆ„์ฐจ์ˆœ์ด ๊ธฐ๋ณธ๊ฐ’
SQL
๋ณต์‚ฌ
ORDER BY ์ปฌ๋Ÿผ; ์ง€์ •ํ•œ ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.
ORDER BY ์ปฌ๋Ÿผ [ASC | DESC] ์ง€์ •ํ•œ ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ(ASC) ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ(DESC) ์ •๋ ฌํ•œ๋‹ค.
ORDER BY ์ปฌ๋Ÿผ1 [ASC | DESC], ์ปฌ๋Ÿผ2 [ASC | DESC] ์ •๋ ฌ ๊ธฐ์ค€ 1 : ์ปฌ๋Ÿผ1์„ ๊ธฐ์ค€์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค. ์ •๋ ฌ ๊ธฐ์ค€ 2 : ์ปฌ๋Ÿผ1์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ, ์ปฌ๋Ÿผ2๋ฅผ ๊ธฐ์ค€์œผ๋กœ, ์ •๋ ฌํ•œใ„ด๋‹ค.
(์˜ˆ์‹œ)
ํ…Œ์ด๋ธ” EMPLOYEES ์˜ ๋ชจ๋“  ์†์„ฑ๋“ค์„ SALARY ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , FIRST_NAME ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
SELECT * FROM employees ORDER BY salary DESC, first_name ASC;
SQL
๋ณต์‚ฌ

GROUP BY

๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ๊ทธ๋ฃนํ•จ์ˆ˜(ํ•ฉ๊ณ„, ํ‰๊ท , ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’ ๋“ฑ)์™€ ํ•จ๊ป˜ ์กฐํšŒํ•˜๋Š” ํ‚ค์›Œ๋“œ

๋ฌธ๋ฒ•

GROUP BY ๊ทธ๋ฃน๊ธฐ์ค€ ์ปฌ๋Ÿผ โ€ฆ HAVING ๊ทธ๋ฃน ์กฐ๊ฑด
(์˜ˆ์‹œ)
ํ…Œ์ด๋ธ” EMPLOYEES ์— ๋Œ€ํ•˜์—ฌ ๋ถ€์„œ๋ณ„๋กœ ๋ถ€์„œ์ฝ”๋“œ์™€ ์ตœ๊ณ ๊ธ‰์—ฌ๋ฅผ ์กฐํšŒํ•˜์‹œ์˜ค.
SELECT dept_code ,MAX(salary) MAX_SAL FROM employee GROUP BY dept_code;
SQL
๋ณต์‚ฌ
(์˜ˆ์‹œ)
ํ…Œ์ด๋ธ” EMPLOYEES ์— ๋Œ€ํ•˜์—ฌ, ๋ถ€์„œ๋ณ„ ์ธ์›์ด 2๋ช…์ด ๋„˜๋Š” ๋ถ€์„œ์ค‘, ๋ถ€์„œ๋ณ„๋กœ ๋ถ€์„œ์ฝ”๋“œ์™€ ์ตœ๊ณ ๊ธ‰์—ฌ๋ฅผ ์กฐํšŒํ•˜์‹œ์˜ค.
SELECT dept_code ,MAX(salary) MAX_SAL FROM employee GROUP BY dept_code HAVING COUNT(dept_code) > 2;
SQL
๋ณต์‚ฌ

SELECT ๋ฌธ ์‹คํ–‰์ˆœ์„œ

FROM WHERE GROUP BY HAVING SELECT ORDER BY
1.
ํ…Œ์ด๋ธ”์„ ์„ ํƒํ•œ๋‹ค
2.
์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•œ๋‹ค
3.
๊ทธ๋ฃน๊ธฐ์ค€์„ ์ง€์ •ํ•œ๋‹ค
4.
๊ทธ๋ฃน๋ณ„๋กœ ๊ทธ๋ฃน์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•œ๋‹ค
5.
์กฐํšŒํ•  ์ปฌ๋Ÿผ์„ ์„ ํƒํ•œ๋‹ค
6.
์กฐํšŒ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •๋ ฌํ•œ๋‹ค.

ํ˜•๋ณ€ํ™˜

2๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ผ์น˜ํ•˜๋„๋ก ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ

๋ถ„๋ฅ˜

โ€ข
๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜
โ€ข
์•”์‹œ์  ํ˜•๋ณ€ํ™˜

๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜

ํ˜•๋ณ€ํ™˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ.

ํ˜•๋ณ€ํ™˜ ํ•จ์ˆ˜

ํ•จ์ˆ˜
์„ค๋ช…
TO_CHAR(์ธ์ž, ์ถœ๋ ฅํฌ๋งท)
์ธ์ž(๋‚ ์งœ, ์ˆซ์ž)๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
TO_DATE(์ธ์ž, ํฌ๋งท)
๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ ์งœ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
TO_NUMBER(์ธ์ž, ํฌ๋งท)
๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ˆซ์ž ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

TO_CHAR( )

โ€ข
๋‚ ์งœ ๋ฐ์ดํ„ฐ ๋ฌธ์ž ๋ฐ์ดํ„ฐ
โ€ข
์ˆซ์ž ๋ฐ์ดํ„ฐ ๋ฌธ์ž ๋ฐ์ดํ„ฐ

๋‚ ์งœ ๋ฐ์ดํ„ฐ ๋ฌธ์ž ๋ฐ์ดํ„ฐ - TO_CHAR( ๋‚ ์งœ, ํฌ๋งท )

(์˜ˆ์‹œ)
SELECT TO_CHAR( hire_date, 'YYYY.MM.DD' ) ์ž…์‚ฌ์ผ์ž FROM employees
SQL
๋ณต์‚ฌ

๋‚ ์งœ ๋ฐ์ดํ„ฐ ํฌ๋งท

ํฌ๋งท
์„ค๋ช…
CC
์„ธ๊ธฐ
YYYY
์—ฐ๋„ (4์ž๋ฆฌ)
YY
์—ฐ๋„ (2์ž๋ฆฌ)
MM
์›” (2์ž๋ฆฌ)
MON
์›” (์–ธ์–ด๋ณ„ ์›” ์ด๋ฆ„์˜ ์•ฝ์ž)
MONTH
์›” (์–ธ์–ด๋ณ„ ์›” ์ด๋ฆ„)
DD
์ผ (2์ž๋ฆฌ)
DDD
1๋…„ ์ค‘ ๋ช‡์ผ (3์ž๋ฆฌ) [1~366]
DY
์š”์ผ (์–ธ์–ด๋ณ„ ์š”์ผ ์ด๋ฆ„์˜ ์•ฝ์ž)
DAY
์š”์ผ (์–ธ์–ด๋ณ„ ์š”์ผ ์ด๋ฆ„)
W
1๋…„ ์ค‘ ๋ช‡ ๋ฒˆ์งธ ์ฃผ [1~53]
HH24
24์‹œ ๊ธฐ์ค€ ์‹œ๊ฐ„
HH
12์‹œ ๊ธฐ์ค€ ์‹œ๊ฐ„
MI
๋ถ„
SS
์ดˆ
AM, PM
์˜ค์ „, ์˜คํ›„

์ˆซ์ž ๋ฐ์ดํ„ฐ ๋ฌธ์ž ๋ฐ์ดํ„ฐ - TO_CHAR( ์ˆซ์ž, ํฌ๋งท )

(์˜ˆ์‹œ)
SELECT TO_CHAR( salary, '999,999,999' ) ๊ธ‰์—ฌ FROM employees
SQL
๋ณต์‚ฌ

์ˆซ์ž ๋ฐ์ดํ„ฐ ํฌ๋งท

ํฌ๋งท
์„ค๋ช…
9
์ˆซ์ž ํ•œ ์ž๋ฆฌ (๊ฐ’์ด ์—†์œผ๋ฉด ์ฑ„์šฐ์ง€ ์•Š์Œ)
0
์ˆซ์ž ํ•œ ์ž๋ฆฌ (๊ฐ’์ด ์—†์œผ๋ฉด 0์œผ๋กœ ์ฑ„์›€)
$
๋‹ฌ๋Ÿฌ ํ‘œ์‹œ
L
์ง€์—ญ ํ™”ํ ๋‹จ์œ„ ๊ธฐํ˜ธ
.
์†Œ์ˆ˜์ 
,
์ฒœ ๋‹จ์œ„ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ

TO_DATE( ๋ฌธ์ž, ํฌ๋งท )

๋ฌธ์žํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ ์งœํ˜• ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
SELECT 20230522 AS ๋ฌธ์ž ,TO_DATE('20251022', 'YYYYMMDD') AS ๋‚ ์งœ ,TO_DATE('2025.10.22', 'YYYY.MM.DD') AS ๋‚ ์งœ2 ,TO_DATE('2025/10/22', 'YYYY/MM/DD') AS ๋‚ ์งœ3 ,TO_DATE('2025-10-22', 'YYYY-MM-DD') AS ๋‚ ์งœ4 FROM dual;
SQL
๋ณต์‚ฌ

TO_NUMBER( ๋ฌธ์ž, ํฌ๋งท )

๋ฌธ์žํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ˆซ์žํ˜• ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
SELECT '1,200,000' AS ๋ฌธ์ž ,TO_NUMBER('1,200,000', '999,999,999') AS ์ˆซ์ž FROM dual;
SQL
๋ณต์‚ฌ

์•”์‹œ์  ํ˜•๋ณ€ํ™˜

๊ฐœ๋ฐœ์ž๊ฐ€ ํ˜•๋ณ€ํ™˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๊ณ , DBMS ๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ.

์•”์‹œ์  ํ˜•๋ณ€ํ™˜ ์˜ˆ์‹œ

์ˆซ์ž ํƒ€์ž… : empno, ๋ฌธ์ž ํƒ€์ž… : โ€˜100โ€™
SELECT * FROM emp WHERE empno = '100';
SQL
๋ณต์‚ฌ
(์ขŒ๋ณ€) = (์šฐ๋ณ€) ์ด๋ ‡๊ฒŒ ์žˆ์„ ๋•Œ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ขŒ๋ณ€์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋งž์ถฐ ์šฐ๋ณ€์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, EMPNO = TO_NUMBER('100'); ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์ˆซ์žํƒ€์ž…์ธ EMPNO ์™€ '100' ์„ ์•”์‹œ์  ํ˜•๋ณ€ํ™˜์— ์˜ํ•ด์„œ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡์ง€๋งŒ, ์ธ๋ฑ์Šค๋ผ๋Š” ๊ฐœ๋…์€ ํ˜•๋ณ€ํ™˜์ด ๋ฐœ์ƒํ•˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ์•”์‹œ์  ํ˜•๋ณ€ํ™˜์ด ๋˜์–ด ์ขŒ๋ณ€๊ณผ ์šฐ๋ณ€์ด ์ •์ƒ์ ์œผ๋กœ ๋น„๊ต๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ธ๋ฑ์Šค๋Š” ์‚ฌ์šฉํ• ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด์žฅ ํ•จ์ˆ˜

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฏธ๋ฆฌ ์ •์˜๋œ ํ•จ์ˆ˜
๋Œ€๋ถ€๋ถ„์˜ ํ•จ์ˆ˜๊ฐ€ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜์ง€๋งŒ, DBMS ๋ณ„๋กœ ๊ณ ์œ ํ•˜๊ฒŒ ์ •์˜๋œ ํ•จ์ˆ˜๋„ ์žˆ๋‹ค.

dual

์‚ฐ์ˆ  ์—ฐ์‚ฐ, ํ•จ์ˆ˜ ๊ฒฐ๊ณผ ๋“ฑ ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ž„์‹œ ํ…Œ์ด๋ธ”
โ€ข
ex) -20 ์˜ ์ ˆ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ

๋‚ด์žฅ ํ•จ์ˆ˜ ์ข…๋ฅ˜

โ€ข
๋ฌธ์žํ•จ์ˆ˜
โ€ข
๋‚ ์งœํ•จ์ˆ˜
โ€ข
์ˆซ์žํ•จ์ˆ˜

๋ฌธ์žํ•จ์ˆ˜

UPPER(์ธ์ž)
์ธ์ž(์˜๋ฌธ์ž)๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
LOWER(์ธ์ž)
์ธ์ž(์˜๋ฌธ์ž)๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
INITCAP(์ธ์ž)
์ธ์ž(์˜๋ฌธ์ž)๋ฅผ ๋‹จ์–ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฒซ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
LENGTH(์ธ์ž)
์ธ์ž์˜ ๊ธ€์ž ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
LENGTHB(์ธ์ž)
์ธ์ž์˜ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
CONCAT(์ธ์ž1, ์ธ์ž2)
์ธ์ž1๊ณผ ์ธ์ž2๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ํ•จ์ˆ˜ || : 2๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐํ˜ธ
SUBSTR(๋ฌธ์ž์—ด, ์‹œ์ž‘๋ฒˆํ˜ธ, ๊ธ€์ž์ˆ˜)
๋ฌธ์ž์—ด์—์„œ ์‹œ์ž‘๋ฒˆํ˜ธ๋ถ€ํ„ฐ ์ง€์ •ํ•œ ๊ธ€์ž ์ˆ˜๋งŒํผ์˜ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
SUBSTRB(๋ฌธ์ž์—ด, ์‹œ์ž‘๋ฒˆํ˜ธ, ๋ฐ”์ดํŠธ์ˆ˜)
๋ฌธ์ž์—ด์—์„œ ์‹œ์ž‘๋ฒˆํ˜ธ๋ถ€ํ„ฐ ์ง€์ •ํ•œ ๋ฐ”์ดํŠธ ์ˆ˜๋งŒํผ์˜ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
INSTR(๋ฌธ์ž์—ด, ๋ฌธ์ž, ์‹œ์ž‘๋ฒˆํ˜ธ, ์ˆœ์„œ)
๋ฌธ์ž์—ด ์•ˆ์—์„œ ์ง€์ •ํ•œ ์‹œ์ž‘๋ฒˆํ˜ธ๋ถ€ํ„ฐ ๋ฌธ์ž๋ฅผ ์ฐพ์•„์„œ, ์ง€์ •ํ•œ ์ˆœ์„œ์—์„œ ์žˆ๋Š” ๋ฌธ์ž์˜ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
INSTRB(๋ฌธ์ž์—ด, ๋ฌธ์ž, ์‹œ์ž‘๋ฒˆํ˜ธ, ์ˆœ์„œ)
๋ฌธ์ž์—ด ์•ˆ์—์„œ ์ง€์ •ํ•œ ์‹œ์ž‘๋ฒˆํ˜ธ๋ถ€ํ„ฐ ๋ฌธ์ž๋ฅผ ์ฐพ์•„์„œ, ์ง€์ •ํ•œ ์ˆœ์„œ์—์„œ ์žˆ๋Š” ๋ฌธ์ž์˜ ์œ„์น˜๋ฅผ ๋ฐ”์ดํŠธ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
LPAD(๋ฌธ์ž์—ด, ์นธ, ๋ฌธ์ž)
์ง€์ •ํ•œ ์นธ์—์„œ ์™ผ์ชฝ ๋นˆ๊ณต๊ฐ„์„ ํŠน์ •๋ฌธ์ž๋กœ ์ฑ„์šฐ๋Š” ํ•จ์ˆ˜
RPAD(๋ฌธ์ž์—ด, ์นธ, ๋ฌธ์ž)
์ง€์ •ํ•œ ์นธ์—์„œ ์˜ค๋ฅธ์ชฝ ๋นˆ๊ณต๊ฐ„์„ ํŠน์ •๋ฌธ์ž๋กœ ์ฑ„์šฐ๋Š” ํ•จ์ˆ˜

๋‚ ์งœํ•จ์ˆ˜

SYSDATE
ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ DATE ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
SYSTIMESTAMP
ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ TIMESTAMP ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
ADD_MONTHS(๋‚ ์งœ, ๊ฐœ์›”์ˆ˜)
ํ•ด๋‹น ๋‚ ์งœ๋กœ๋ถ€ํ„ฐ ๊ฐœ์›” ์ˆ˜๋ฅผ ๋”ํ•œ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
MONTHS_BETWEEN(๋‚ ์งœ1, ๋‚ ์งœ2)
๋‚ ์งœ1 ๋ถ€ํ„ฐ ๋‚ ์งœ2 ์‚ฌ์ด์˜ ๊ฐœ์›” ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
NEXT_DAY(๋‚ ์งœ, ์š”์ผ๋ฒˆํ˜ธ)
์ง€์ •ํ•œ ๋‚ ์งœ ์ดํ›„์— ๋‚˜์˜ค๋Š” ์š”์ผ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•˜๋Š” ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜- ์š”์ผ ๋ฒˆํ˜ธ : ์ผ์š”์ผ(1) ~ ํ† ์š”์ผ(7)
LAST_DAY(๋‚ ์งœ)
์ง€์ •ํ•œ ๋‚ ์งœ์™€ ๊ฐ™์€ ๋‹ฌ์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ (์›”๋ง)
TRUNC( ๋‚ ์งœ, ๋‚ ์งœํ˜•์‹ )
๋‚ ์งœํ˜•์‹ ๋‹จ์œ„๋กœ ๋‚ ์งœ ๋ฐ์ดํ„ฐ๋ฅผ ์ ˆ์‚ญํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ex) TRUNC( ๋‚ ์งœ, 'MM' ) : ์›” ๋‹จ์œ„๋กœ ๋‚ ์งœ ๋ฐ์ดํ„ฐ๋ฅผ ์ ˆ์‚ญํ•˜์—ฌ ๊ฐ™์€ ๋‹ฌ์˜ ์ฒซ๋ฒˆ์งธ ๋‚ ์งœ๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ (์›”์ดˆ)

์ˆซ์žํ•จ์ˆ˜

CEIL(์ธ์ž)
์ธ์ž๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ ์ค‘ ์ œ์ผ ์ž‘์€ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜- [ceil : "์ฒœ์žฅ"] ex) CEIL(12.34) : 13 (๊ฒฐ๊ณผ๊ฐ’์€ ์ •์ˆ˜)
FLOOR(์ธ์ž)
์ธ์ž๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ ์ค‘ ์ œ์ผ ํฐ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜- [floor : "๋ฐ”๋‹ฅ"] ex) FLOOR(12.34) : 12 (๊ฒฐ๊ณผ๊ฐ’์€ ์ •์ˆ˜)
ROUND(์ธ์ž, ์ž๋ฆฌ์ˆ˜
์ธ์ž๋ฅผ ์ง€์ •ํ•œ ์ž๋ฆฌ์ˆ˜์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
MOD(์ธ์ž1, ์ธ์ž2)
์ธ์ž1์„ ์ธ์ž2๋ฅผ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
POWER(์ธ์ž1, ์ธ์ž2)
์ธ์ž1์„ ์ธ์ž2๋กœ ์ œ๊ณฑํ•˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
SQRT(์ธ์ž)
์ธ์ž์˜ ์ œ๊ณฑ๊ทผ์„ ๊ตฌํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
TRUNC(์ธ์ž, ์ž๋ฆฌ์ˆ˜)
์ธ์ž๋ฅผ ์ž๋ฆฌ์ˆ˜์—์„œ ์ ˆ์‚ญํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
ABS(์ธ์ž)
์ธ์ž์˜ ์ ˆ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

DECODE, CASE

DECODE

์ง€์ •ํ•œ ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ์กฐ๊ฑด๊ฐ’์— ์ผ์น˜ํ•˜๋ฉด ๋ฐ”๋กœ ๋’ค์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜
โ€ข
๋ฌธ๋ฒ•
DECODE( ์ปฌ๋Ÿผ๋ช…, ์กฐ๊ฑด๊ฐ’1, ๋ฐ˜ํ™˜๊ฐ’1, ์กฐ๊ฑด๊ฐ’2, ๋ฐ˜ํ™˜๊ฐ’2, ... )
โ€ข
์˜ˆ์‹œ
: DEPARTMENTS ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜์—ฌ, ์‚ฌ์›์˜ ์ด๋ฆ„๊ณผ ๋ถ€์„œ๋ช…์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.
SELECT first_name ์ด๋ฆ„ ,DECODE( department_id, 10, 'Administration', 20, 'Marketing', 30, 'Purchasing', 40, 'Human Resources', 50, 'Shipping', 60, 'IT', 70, 'Public Relations', 80, 'Sales', 90, 'Executive', 100, 'Finance' ) ๋ถ€์„œ FROM employees;
SQL
๋ณต์‚ฌ

CASE

์กฐ๊ฑด์‹์„ ๋งŒ์กฑํ•  ๋•Œ, ์ถœ๋ ฅํ•  ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ๊ตฌ๋ฌธ
โ€ข
๋ฌธ๋ฒ•
CASE
WHEN ์กฐ๊ฑด1 THEN ๋ฐ˜ํ™˜๊ฐ’1 WHEN ์กฐ๊ฑด2 THEN ๋ฐ˜ํ™˜๊ฐ’2
โ€ฆ
END
โ€ข
์˜ˆ์‹œ
: ํ…Œ์ด๋ธ” EMPLOYEES ์˜ FIRST_NAME, DEPARTMENT_ID ์†์„ฑ์„ ์ด์šฉํ•˜์—ฌ <์˜ˆ์‹œ>์™€ ๊ฐ™์ด SQL ๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
SELECT first_name ์ด๋ฆ„ ,CASE WHEN department_id = 10 THEN 'Administration' WHEN department_id = 20 THEN 'Marketing' WHEN department_id = 30 THEN 'Purchasing' WHEN department_id = 40 THEN 'Human Resources' WHEN department_id = 50 THEN 'Shipping' WHEN department_id = 60 THEN 'IT' WHEN department_id = 70 THEN 'Public Relations' WHEN department_id = 80 THEN 'Sales' WHEN department_id = 90 THEN 'Executive' WHEN department_id = 100 THEN 'Finance' END ๋ถ€์„œ FROM employees;
SQL
๋ณต์‚ฌ

WITH

์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž„์‹œ ํ…Œ์ด๋ธ”์„ ๋ฏธ๋ฆฌ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฌธ

๋ฌธ๋ฒ•

WITH ์ž„์‹œํ…Œ์ด๋ธ”๋ช… AS ( ์„œ๋ธŒ์ฟผ๋ฆฌ ) SELECT โ€ฆ FROM โ€ฆ;

์˜ˆ์‹œ

: ๊ฐ ๋ถ€์„œ๋ณ„๋กœ ์ง์›๋“ค์˜ ํ‰๊ท  ๊ธ‰์—ฌ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ๋ถ€์„œ๋ช…๊ณผ ๋ถ€์„œ๋ณ„ ํ‰๊ท ๊ธ‰์—ฌ๋ฅผ ์กฐํšŒํ•˜์‹œ์˜ค.
WITH avg_salaries AS ( SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id ) SELECT d.department_name, a.avg_salary FROM departments d JOIN avg_salaries a ON d.department_id = a.department_id ORDER BY d.department_name;
SQL
๋ณต์‚ฌ