SQL ๊ธฐ๋ณธ
โข
โข
โข
โข
โข
โข
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ธฐ๋ฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋ฐ์ดํฐ?
: ์ธก์ ๋ฐ ์์งํ ๊ฐ
์ ๋ณด?
: ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ์๋ฏธ๋ฅผ ๋ถ์ฌํ ๊ฒ
๋ฐ์ดํฐ๋ฒ ์ด์ค (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
๋ณต์ฌ
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 ๊ฐ ์๋์ผ๋ก ๋ฐ์ดํฐ ํ์
์ ๋ณํํ๋ ๊ฒ.
์์์ ํ๋ณํ ์์
SELECT *
FROM emp
WHERE empno = '100';
SQL
๋ณต์ฌ
(์ข๋ณ) = (์ฐ๋ณ)
์ด๋ ๊ฒ ์์ ๋, ์ผ๋ฐ์ ์ผ๋ก ์ข๋ณ์ ๋ฐ์ดํฐ ํ์
์ ๋ง์ถฐ ์ฐ๋ณ์ ๋ฐ์ดํฐ ํ์
์ ๋ณํํฉ๋๋ค.
์ฆ, EMPNO = TO_NUMBER('100'); ์ผ๋ก ์คํ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ซ์ํ์
์ธ EMPNO ์ '100' ์ ์์์ ํ๋ณํ์ ์ํด์ ๋น๊ตํ ์ ์์ต๋๋ค.
๊ทธ๋ ์ง๋ง, ์ธ๋ฑ์ค๋ผ๋ ๊ฐ๋
์ ํ๋ณํ์ด ๋ฐ์ํ๋ฉด ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ์์์ ํ๋ณํ์ด ๋์ด ์ข๋ณ๊ณผ ์ฐ๋ณ์ด ์ ์์ ์ผ๋ก ๋น๊ต๋ ๊ฐ๋ฅํ์ง๋ง, ์ธ๋ฑ์ค๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ด์ฅ ํจ์
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฏธ๋ฆฌ ์ ์๋ ํจ์
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
๋ณต์ฌ



















