๐ก SQLD ์๊ฒฉ์ฆ ์ํ ๋๋น ํ์ตํ ๋ด์ฉ์ ์์ฝ์ ๋ฆฌํฉ๋๋ค.
๊ทธ๋ฃน ํจ์
๋ฐ์ดํฐ ๋ถ์์ ์ํ 3๊ฐ์ง ํจ์
- Group Function
- Aggregate Function
- Window Function
Group Function(๊ทธ๋ฃน ํจ์)
- ํ
์ด๋ธ์ ์ ์ฒด ํ์ ํ๋ ์ด์์ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ปฌ๋ผ๊ฐ์ ๋ฐ๋ผ ๊ทธ๋ฃนํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํจ์
- ๋ณต์ ํ ํจ์๋ผ๊ณ ๋ ํ๋ค.
- ROLLUP, CUBE, GROUPING SETS ํจ์๊ฐ ์๋ค.
(Group)Aggregate Function
- Group Function์ ํ ๋ถ๋ถ
- ๊ฐ์ข
์ง๊ณ ํจ์๋ค์ด ํฌํจ(COUNT, SUM, AVG, MAX ๋ฑ)
ROLLUP ํจ์
- ์๊ทธ๋ฃน ๊ฐ์ ์๊ณ๋ฅผ ๊ณ์ฐํ๋ ํจ์
- GROUP BY์ ํ์ฅ๋ ํํ๋ก ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ , ๋ณ๋ ฌ ์ํ ๊ฐ๋ฅ
- ๊ณ์ธต์ ๋ถ๋ฅ๋ฅผ ํฌํจํ๊ณ ์์ด ๋ฐ์ดํฐ ์ง๊ณ์ ์ ํฉ
- ROLLUP์ ์ง์ ํ Grouping Column์ List๋ Subtotal์ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉ.
- Grouping Column์ ์๋ฅผ n์ด๋ผ๊ณ ํ์ ๋, n+1 ๋ ๋ฒจ์ Subtotal์ด ์์ฑ.
- ์ธ์ ์์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋๊ฒ ๋๋ฏ๋ก ์์์ ์ฃผ์ํด์ผ ํจ
- ๊ณ์ธต ๊ฐ ์ง๊ณ์ ๋ํด ๋ ๋ฒจ ๋ณ ์์๋ก ์ ๋ ฌํจ
GROUPING : Subtotal์ total์ ์์ฑ
CUBE ํจ์
- ๊ฒฐํฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ ๋ํ์ฌ ๋ค์ฐจ์์ ์ธ ์ง๊ณ ์์ฑ
- ROLLUP์ ๋นํด ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ป๋ ์ฅ์ ์ด ์์ง๋ง ์์คํ
์ ๋ถํ๋ฅผ ๋ง์ด ์ฃผ๋ ๋จ์ ์ด ์๋ค.
- ๋ด๋ถ์ ์ผ๋ก Grouping Column์ ์์๋ฅผ ๋ฐ๊ฟ ๋ ํ๋ฒ ์ฟผ๋ฆฌ๋ฅผ ์ถ๊ฐ ์ํ ํด์ผ ํ๋ค.
- ํ์๋ ์ธ์๋ค์ ๋ํ ๊ณ์ธต๋ณ ์ง๊ณ๋ฅผ ๊ตฌํ ์ ์๋ค.
- ํ์๋ ์ธ์๋ค์ ํ๋ฑํ ๊ด๊ณ๋ฅผ ๊ฐ์ ธ ์์๊ฐ ๋ฐ๋๋๋ผ๋ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.
- Grouping Column์ ์๋ฅผ n์ด๋ผ๊ณ ํ์ ๋, 2^n ๋ ๋ฒจ์ Subtotal๋ฅผ ์์ฑ
GROUPING SETS ํจ์
- ์ํ๋ ๋ถ๋ถ์ ์๊ณ๋ง ์ถ์ถํ๋ ํจ์
- ํ์๋ ์ธ์๋ค์ ๋ํ ๊ฐ๋ณ ์ง๊ณ๋ฅผ ๊ตฌํ ์ ์๋ค.
- ํ์๋ ์ธ์๋ค์ ํ๋ฑํ ๊ด๊ณ๋ฅผ ๊ฐ์ ธ ์์๊ฐ ๋ฐ๋๋๋ผ๋ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.
๐ก ROLLUP, CUBE, GROUPING SETS ํจ์๋ ๊ฒฐ๊ณผ์ ๋ํ ์ ๋ ฌ์ด ํ์ํ ๊ฒฝ์ฐ ORDER BY ์ ์ ์ ๋ ฌ ์ปฌ๋ผ์ ๋ช
์ํด์ผ
ํ๋ค.
Window Function
์๋์ฐ ํจ์
- ํ๊ณผ ํ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ๊ธฐ ์ํด ๋ง๋ ํจ์
- ๋ถ์ํจ์, ์์ ํจ์๋ก๋ ๋ถ๋ฆฌ์ด๋ค.
- ๋ค๋ฅธ ํจ์์ ๋ฌ๋ฆฌ ์ค์ฒฉํด์ ์ฌ์ฉํ์ง ๋ชปํ๋ฉฐ, ์๋ธ์ฟผ๋ฆฌ์์ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
- OVER ๋ฌธ๊ตฌ๊ฐ ํค์๋๋ก ํ์ ํฌํจ๋๋ค.
SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ([PARTITION BY ์ปฌ๋ผ] [ ORDER BY ์ ] [ WINDOWING ์ ]) FROM ํ
์ด๋ธ๋ช
;
- ARGUMENTS : ํจ์์ ๋ฐ๋ผ 0~n๊ฐ์ ์ธ์ ์ง์
- PARTITION BY์ : ์ ์ฒด ์งํฉ์ ๊ธฐ์ค์ ์ํด ์๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์๋ค.
- WINDOWING ์ : ํจ์์ ๋์์ด ๋๋ ํ ๊ธฐ๋ถ์ ๋ฒ์๋ฅผ ๊ฐ๋ ฅํ๊ฒ ์ง์ . ROWS, RANGE ๋ ์ค ํ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- ROWS : ๋ฌผ๋ฆฌ์ ์ธ ๊ฒฐ๊ณผ ํ์ ์
- RANGE : ๋
ผ๋ฆฌ์ ์ธ ๊ฐ์ ์ํ ๋ฒ์
๐ก WINDOWING ์ ์ SQL Server ์์๋ ์ง์ํ์ง ์์
์๋์ ํจ์์ ์ข
๋ฅ
- ๊ทธ๋ฃน ๋ด ์์ : RANK, DENSE_RANK, ROW_NUMBER
- ๊ทธ๋ฃน ๋ด ์ง๊ณ : SUM, MAX, MIN, AVG, COUNT
- ๊ทธ๋ฃน ๋ด ์์ : FIRST_VALUE, LAST_VALUE, LAG, LEAD
- ๊ทธ๋ฃน ๋ด ๋น์จ : COME_DIST, PERCENT_RANK, NTILE, RATIO_REPORT
- ์ ํ ๋ถ์์ ํฌํจํ ํต๊ณ ๋ถ์ ๊ด๋ จ ํจ์ : ํต๊ณ์ ํนํ
๊ทธ๋ฃน ๋ด ์์ ํจ์
RANK ํจ์
- ORDER BY๋ฅผ ํฌํจํ ์ฟผ๋ฆฌ๋ฌธ์์ ํน์ ํญ๋ชฉ(์ปฌ๋ผ)์ ๋ํ ์์๋ฅผ ๊ตฌํ๋ ํจ์
- ํน์ ๋ฒ์(PARTITION) ๋ด์์ ์์๋ฅผ ๊ตฌํ๊ฑฐ๋, ์ ์ฒด ๋ฐ์ดํฐ์ ๋ํ ์์๋ฅผ ๊ตฌํ๋ค.
- ๋์ผํ ๊ฐ์ ๋ํด์ ๋์ผํ ์์๋ฅผ ๋ถ์ฌ
DENSE_RANK ํจ์
- RANK๊ณผ ๋์ผํ ๊ธฐ๋ฅ
- RANK์ ๋ค๋ฅด๊ฒ ๋์ผํ ์์๋ฅผ ํ๋์ ๊ฑด์๋ก ์ทจ๊ธ
ROW_NUMBER ํจ์
- RANK์ ๋์ผํ ๊ธฐ๋ฅ
- RANK์ ๋ฌ๋ฆฌ ๋์ผํ ๊ฐ์ด๋ผ๋ ๊ณ ์ ํ ์์๋ฅผ ๋ถ์ฌ
์ผ๋ฐ ์ง๊ณ ํจ์
SUM : ํํฐ์
๋ณ ์๋์ฐ์ ํฉ
ex) ๊ฐ์ ๋งค๋์ ๋ฅผ ๋๊ณ ์๋ ์ฌ์๋ค์ ์๊ธ ํฉ
MAX : ํํฐ์
๋ณ ์๋์ฐ์ ์ต๋๊ฐ
ex) ๊ฐ์ ๋งค๋์ ๋ฅผ ๋๊ณ ์๋ ์ฌ์๋ค์ ์๊ธ ์ค ์ต๋๊ฐ
MIN : ํํฐ์
๋ณ ์๋์ฐ์ ์ต์๊ฐ
ex) ๊ฐ์ ๋งค๋์ ๋ฅผ ๋๊ณ ์๋ ์ฌ์๋ค์ ์๊ธ ์ค ์ต์๊ฐ
AVG : ํํฐ์
๋ณ ROWS ์๋์ฐ๋ฅผ ์ด์ฉํด ์ํ๋ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ์ ๋ํ ํต๊ณ๊ฐ
ex) ๊ฐ์ ๋งค๋์ ๋ฅผ ๋๊ณ ์๋ ์ฌ์๋ค ์ค, ์์ ๋ฐ๋ก ์, ๋ฐ๋ก ๋ค์ ์ฌ๋ฒ์ธ ์ง์๋ง์ ๋์์ผ๋ก ํ๊ท ์๊ธ์ ๊ตฌํด๋ผ
COUNT : ํํฐ์
๋ณ ROWS ์๋์ฐ๋ฅผ ์ด์ฉํด ์ํ๋ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ์ ๋ํ ํต๊ณ๊ฐ
ex) ๋ณธ์ธ์ ๊ธ์ฌ๋ณด๋ค 50 ์ดํ๊ฐ ์ ๊ฑฐ๋ 150 ์ดํ๋ก ๋ง์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ธ์์
๊ทธ๋ฃน ๋ด ํ ์์ ํจ์
SQL Server์์ ์ง์ X
FIRST_VALUE
- ํํฐ์
๋ณ ์๋์ฐ์์ ๊ฐ์ฅ ๋จผ์ ๋์จ ๊ฐ.
- ๊ณต๋ ๋ฑ์๋ฅผ ์ธ์ ํ์ง ์๊ณ ์ฒ์ ๋์จ ํ๋ง ์ฒ๋ฆฌ
LAST_VALUE
- ํํฐ์
๋ณ ์๋์ฐ์์ ๊ฐ์ฅ ๋์ค์ ๋์จ ๊ฐ.
- ๊ณต๋ ๋ฑ์๋ฅผ ์ธ์ ํ์ง ์๊ณ ๊ฐ์ฅ ๋์ค์ ๋์จ ํ๋ง ์ฒ๋ฆฌ
LAG : ํํฐ์
๋ณ ์๋์ฐ์์ ์ด์ ๋ช ๋ฒ์งธ ํ์ ๊ฐ
LEAD : ํํฐ์
๋ณ ์๋์ฐ์์ ์ดํ ๋ช ๋ฒ์งธ ํ์ ๊ฐ
๊ทธ๋ฃน ๋ด ๋น์จ ํจ์
SQL Server์์ ์ง์ X (NTILE์ ์ง์ O)
RATIO_TO_REPORT
- ํํฐ์
๋ด ์ ์ฒด SUM(์ปฌ๋ผ)๊ฐ์ ๋ํ ํ ๋ณ ์ปฌ๋ผ ๊ฐ์ ๋ฐฑ๋ถ์จ์ ์์์ ์ผ๋ก ๊ตฌํ ์ ์๋ค.
- 0< ๊ฒฐ๊ณผ๊ฐ <= 1
- ๊ฐ๋ณ ๊ฒฐ๊ณผ๊ฐ์ ํฉ = 1
PERCENT_RANK
- ํํฐ์
๋ณ ์๋์ฐ์์ ์ ์ผ ๋จผ์ ๋์ค๋ ๊ฒ์ 0, ์ ์ผ ๋ฆ๊ฒ ๋์ค๋ ๊ฒ์ 1๋ก ํ์ฌ ๊ฐ์ด ์๋ ํ์ ์์๋ณ ๋ฐฑ๋ถ์จ์ ๊ตฌํจ
- 0 <= ๊ฒฐ๊ณผ๊ฐ <= 1
CUME_DIST
- ํํฐ์
๋ณ ์๋์ฐ์ ์ ์ฒด๊ฑด์์์ ํ์ฌ ํ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฑด์์ ๋ํ ๋์ ๋ฐฑ๋ถ์จ์ ๊ตฌํจ
- 0 < ๊ฒฐ๊ณผ๊ฐ <= 1
NTILE : ํํฐ์
๋ณ ์ ์ฒด ๊ฑด์๋ฅผ ARGUMENT ๊ฐ์ผ๋ก N๋ฑ๋ถํ ๊ฒฐ๊ณผ
DCL
์ ์ ๋ฅผ ์์ฑํ๊ณ ๊ถํ์ ์ ์ดํ๋ ๋ช
๋ น์ด
์ค๋ผํด, SQL Server์ ์ฌ์ฉ์์ ๋ํ ์ํคํ
์ณ ์ฐจ์ด
์ค๋ผํด
- ์ ์ ๋ฅผ ํตํด DB์ ์ ์
- ์์ด๋, ๋น๋ฐ๋ฒํธ ๋ฐฉ์์ผ๋ก ์ธ์คํด์ค์ ์ ์ํ๊ณ ๊ทธ์ ํด๋นํ๋ ์คํค๋ง์ ์ค๋ธ์ ํธ ์์ฑ๋ฑ์ ๊ถํ์ ๋ถ์ฌ
SQL Server
- ์ธ์คํด์ค์ ์ ์ํ๊ธฐ ์ํด ๋ก๊ทธ์ธ ์์ฑ
- ์ธ์คํด์ค ๋ด์ ์กด์ฌํ๋ ๋ค์์ DB์ ์ฐ๊ฒฐํ์ฌ ์์
ํ๊ธฐ ์ํด ์ ์ ๋ฅผ ์์ฑํ ํ ๋ก๊ทธ์ธ๊ณผ ์ ์ ๋ฅผ ๋งคํ
- ํน์ ์ ์ ๋ ํน์ DB๋ด์ ํน์ ์คํค๋ง์ ๋ํ ๊ถํ์ ๋ถ์ฌ๋ฐ์
- ์ ์ ๋ DB๋ง๋ค ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ ์ ์์ฑ์ ์ํด์ ์์ฑํ๊ณ ์ ํ๋ ์ ์ ๊ฐ ์ํ DB๋ก ์ด๋ ํ ์ฒ๋ฆฌํด์ผ ํจํจ
SQL Server์ ๋ก๊ทธ์ธ ๋ฐฉ์
- ์๋์ฐ ์ธ์ฆ ๋ฐฉ์ : ์๋์ฐ์ ๋ก๊ทธ์ธํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ SQL Server์ ์ ์
- ํผํฉ ๋ชจ๋ ๋ฐฉ์ : ์๋์ฐ ์ธ์ฆ ๋๋ SQL ์ธ์ฆ์ผ๋ก ์งํ๋จ
์์คํ
๊ถํ : ์ฌ์ฉ์๊ฐ ์คํํ๋ ๋ชจ๋ DDL ๋ฌธ์ฅ์ ์คํํ ์ ์๋ ๊ถํ
GRANT : ๊ถํ ๋ถ์ฌ
REVOKE : ๊ถํ ์ทจ์
๐ก ๋ชจ๋ ์ ์ ๋ ๊ฐ๊ฐ ์์ ์ด ์์ฑํ ํ
์ด๋ธ ์ธ์ ๋ค๋ฅธ ์ ์ ์ ํ
์ด๋ธ์ ์ ๊ทผํ๋ ค๋ฉด ํด๋น ํ
์ด๋ธ์ ๋ํ ์ค ๋ธ์ ํธ ๊ถํ์ ์์ ์๋ก๋ถํฐ ๋ถ์ฌ๋ฐ์์ผ ํ๋ค.
ROLE
- ๊ฐ์ข
๊ถํ์ ํ๋์ ๋ฌถ์์ผ๋ก ๋ชจ์ ์ ์ ์๊ฒ ๋ถ์ฌํ๋ ๊ฒ
- ์์คํ
๊ถํ๊ณผ ์ค๋ธ์ ํธ ๊ถํ์ ๋ชจ๋ ๋ถ์ฌํ ์ ์๋ค.
- ๊ถํ์ ์ง์ ๋ถ์ฌํ๋ ๊ฒ๋ณด๋ค ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ์ ์ ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
// ์ญํ ์์ฑ
CREATE ROLE LOGIN_TABLE;
// ๊ถํ ๋ถ์ฌ
GRANT CREATE TABLE TO LOGIN_TABLE;
// ์ ์ ์ญ์
DROP USER PJS CASCADE;
CASCADE : ํ์ ์ค๋ธ์ ํธ๊น์ง ์ญ์
๐ก SQL Server์์๋ ROLE์ ์์ฑํ์ฌ ์ฌ์ฉํ๊ธฐ ๋ณด๋ค ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ROLE์ ๋ฉค๋ฒ๋ก ์ฐธ์ฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ ์๋ฒ, DB ์์ค ์ญํ ์ ์ด์ฉํ์ฌ ๋ก๊ทธ์ธ ๋ฐ ์ฌ์ฉ์ ๊ถํ์ ์ ์ดํ๋ค.
์ ์ฐจํ SQL
SQL๋ฌธ์ ์ฐ์์ ์ธ ์คํ์ด๋ ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ํน์ ๊ธฐ๋ฅ์ ์ํํ๋ ์ ์ฅ ๋ชจ๋์ ์์ฑํ ์ ์๋ค.
PL/SQL
- ์ค๋ผํด์์ ์ ๊ณตํ๋ ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํธ๋์ญ์
์ธ์ด
- ๋ค์ํ ์ ์ฅ ๋ชจ๋์ ๊ฐ๋ฐํ ์ ์๋ค.
์ ์ฅ ๋ชจ๋
- PL/SQL๋ฌธ์ฅ์ DB ์๋ฒ์ ์ ์ฅํ์ฌ ์ฌ์ฉ์์ ์ ํ๋ฆฌ์ผ์ด์
์ฌ์ด์์ ๊ณต์ ํ ์ ์๋๋ก ๋ง๋ ์ผ์ข
์ SQL ์ปดํฌ๋ํธ ํ๋ก๊ทธ๋จ.
- ๋
๋ฆฝ์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก๋ถํฐ ์คํ๋ ์ ์๋ ์์ ํ ์คํ ํ๋ก๊ทธ๋จ
- ์ค๋ผํด์ ์ ์ฅ ๋ชจ๋ : Procedure, User Defined Function, Trigger
PL/SQL์ ํน์ง
- Block ๊ตฌ์กฐ๋ก ๋์ด์์ด ๊ฐ ๊ธฐ๋ฅ๋ณ๋ก ๋ชจ๋ํ๊ฐ ๊ฐ๋ฅ
- ๋ณ์, ์์๋ฑ์ ์ ์ธํ์ฌ SQL ๋ฌธ์ฅ ๊ฐ ๊ฐ์ ๊ตํํ๋ค.
- IF, LOOP ๋ฑ์ ์ ์ฐจํ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฐจ์ ์ธ ํ๋ก๊ทธ๋จ์ด ๊ฐ๋ฅ
- DBMS ์ ์ ์๋ฌ๋ ์ฌ์ฉ์ ์ ์ ์๋ฌ๋ฅผ ์ ์ํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
- ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.
- ์ฌ๋ฌ SQL๋ฌธ์ฅ์ Block์ผ๋ก ๋ฌถ๊ณ ํ ๋ฒ์ Block ์ ๋ถ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด ํต์ ๋์ ์ค์
PL/SQL ์ํคํ
์ณ
- SQL ๋ฌธ์ฅ๊ณผ ํ๋ก๊ทธ๋จ ๋ฌธ์ฅ์ ๊ตฌ๋ถํ์ฌ ์ฒ๋ฆฌ
- ํ๋ก๊ทธ๋จ ๋ฌธ์ฅ : PL/SQL ์์ง์ด ์ฒ๋ฆฌ
- SQL ๋ฌธ์ฅ : ์ค๋ผํด ์๋ฒ์ SQL Statement Executor๊ฐ ์ฒ๋ฆฌ
PL/SQL ๊ตฌ์กฐ
- DECLARE : BEGIN-END ์ ์์ ์ฌ์ฉ๋ ๋ณ์, ์ธ์์ ๋ํ ์ ์ ๋ฐ ๋ฐ์ดํฐ ํ์
์ ์ ์ธํ๋ ์ ์ธ๋ถ.
- BEGIN-END : ๊ฐ๋ฐ์๊ฐ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ SQL๋ฌธ๊ณผ ์ฌ๋ฌ๊ฐ์ง ๋น๊ต๋ฌธ, ์ ์ด๋ฌธ์ ์ด์ฉํ์ฌ ํ์ํ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์คํ๋ถ.
- EXCEPTION : BEGIN-END ์ ์์ ์คํ๋๋ SQL๋ฌธ์ด ์คํ๋ ๋ ๋ฐ์ํ๋ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ์์ธ ์ฒ๋ฆฌ๋ถ.
PL/SQL ๊ธฐ๋ณธ ๋ฌธ๋ฒ
// ํ๋ก์์ ์์ฑ
CREATE Procedure [Procedure_name]
// DB์ ๊ฐ์ ์ด๋ฆ์ ํ๋ก์์ ๊ฐ ์์ ์, ๊ธฐ์กด ๋ด์ฉ์ ๋ฌด์ํ๊ณ ์ ๋ด์ฉ์ ๋ฎ์ด์์
REPLACE Procedure [Procedure_name]
// ํ๋ก์์ ์ญ์
DROP Procedure [Procedure_name]
/ <- ์ปดํ์ผ ํ๋ผ๋ ๋ช
๋ น์ด
T-SQL์ ํน์ง
- SQL Server๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ธ์ด
- ์ ์ญ๋ณ์(SQL ์๋ฒ์ ๋ด์ฅ๋ ๊ฐ)์ ์ง์ญ๋ณ์๋ฅผ ์ ์ธํ ์ ์๋ค.
- ๋ฐ์ดํฐ ์ ํ(int, float, varchar ๋ฑ)์ ์ ๊ณตํ๋ค.
- ์ฐ์ , ๋น๊ต, ๋
ผ๋ฆฌ ์ฐ์ฐ์ ์ฌ์ฉ ๊ฐ๋ฅ
- ํ๋ฆ ์ ์ด ๊ธฐ๋ฅ(IF-ELSE, WHILE, CASE-THEN) ์ฌ์ฉ ๊ฐ๋ฅ
T-SQL์ ๊ตฌ์กฐ
- DECLARE : BEGIN-END ์ ์์ ์ฌ์ฉ๋ ๋ณ์, ์ธ์์ ๋ํ ์ ์ ๋ฐ ๋ฐ์ดํฐ ํ์
์ ์ ์ธํ๋ ์ ์ธ๋ถ.
- BEGIN-END : ๊ฐ๋ฐ์๊ฐ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ SQL๋ฌธ๊ณผ ์ฌ๋ฌ๊ฐ์ง ๋น๊ต๋ฌธ, ์ ์ด๋ฌธ์ ์ด์ฉํ์ฌ ํ์ํ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์คํ๋ถ.
- ERROR ์ฒ๋ฆฌ : BEGIN-END ์ ์์ ์คํ๋๋ SQL๋ฌธ์ด ์คํ๋ ๋ ๋ฐ์ํ๋ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ์์ธ ์ฒ๋ฆฌ๋ถ.
๐ก BEGIN-END๋ฌธ์ ํ์์ ์ผ๋ก ์ฌ์ฉ X, ๋ธ๋ก ๋จ์๋ก ์ฒ๋ฆฌํ๊ณ ์ ํ ๋๋ ํ์์ ์ด๋ค.
CREATE Procedure schema_NAME.Procedure_name
User Defined Function : Return์ ์ฌ์ฉํด ํ๋์ ๊ฐ์ ๋ฐ๋์ ๋ฐํํด์ผ ํจ
Trigger
- ํน์ ํ ํ
์ด๋ธ์ DML๋ฌธ์ด ์ํ๋์์ ๋, DB์์ ์๋์ผ๋ก ๋์ํ๋๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ
- ์ฌ์ฉ์๊ฐ ์ง์ ํธ์ถํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ DB์์ ์๋์ ์ผ๋ก ์ํ
- ์ ์ฒด ํธ๋์ญ์
์์
์ ๋ํด ๋ฐ์๋๋ Trigger์ ๊ฐ ํ์ ๋ํด ๋ฐ์ํ๋ Trigger๊ฐ ์๋ค.
CREATE Trigger Trigger_name
ํ๋ก์์ ์ ํธ๋ฆฌ๊ฑฐ์ ์ฐจ์ด์
ํ๋ก์์ ๋ BEGIN~END ์ ๋ด์ COMMIT, ROLLBACK๊ณผ ๊ฐ์ ํธ๋์ญ์
์ข
๋ฃ ๋ช
๋ น์ด ์ฌ์ฉ๊ฐ๋ฅ, DB ํธ๋ฆฌ๊ฑฐ๋ BEGIN~END ์ ๋ด์ ์ฌ์ฉ ๋ถ๊ฐ
ํ๋ก์์ | ํธ๋ฆฌ๊ฑฐ |
---|
CREATE Procedure ๋ฌธ๋ฒ ์ฌ์ฉ | CREATE Trigger ๋ฌธ๋ฒ ์ฌ์ฉ |
EXECUTE ๋ช
๋ น์ด๋ก ์คํ | ์์ฑ ํ ์๋์ผ๋ก ์คํ |
COMMIT, ROLLBACK ์คํ ๊ฐ๋ฅ | COMMIT, ROLLBACK ์คํ ์๋จ |