728x90
๋ฐ˜์‘ํ˜•

***  ์ผ๋ฐ˜ + ์‹ ์œ ํ˜•

์˜ค๋ผํด, sql server ์ฐจ์ด ๋ด๋‘๊ธฐ

 

oracle์—์„œ ๋นˆ๋ฌธ์ž์—ด์€ null๋กœ ์ €์žฅ / sql server์—์„œ๋Š” ๋นˆ๋ฌธ์ž์—ด ๊ทธ๋Œ€๋กœ ์ €์žฅ๋˜์–ด 

4๋ฒˆ์€ null์ด ์•„๋‹ˆ์ž๋‚˜... ๊ทธ๋ž˜์„œ ์กฐํšŒ๊ฐ€ ์•ˆ๋ฉ๋‹ˆ๋‹ค...

 

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„ : NOT > AND > OR

 

null ์€ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ๊ณ„์‚ฐํ•˜๋ฉด

 

1. (20 + 0) / 2 = 10

2. (20 + null (x)) / 1  = 20

3. (20 + null (x)) / 1  = 20

 

NVL(๋Œ€์ƒ๋ฐ์ดํ„ฐ , NULL์ผ๋•Œ ๋ฐ์ดํ„ฐ)

๊ฐ’์ด null ์ธ ๊ฒฝ์šฐ, 2๋ฒˆ์งธ ์ง€์ •๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋Œ€์ƒ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

SELECT TOP(3) WITH TIES ํŒ€๋ช…, ์Šน๋ฆฌ๊ฑด์ˆ˜   // TOP(3) ๋งŒ ์ ๋Š”๋‹ค๋ฉด ๊ทธ๋ƒฅ 3๊ฐœ๋งŒ ์ถœ๋ ฅ
	FROM ํŒ€๋ณ„ ์„ฑ์ 
    ORDER BY ์Šน๋ฆฌ๊ฑด์ˆ˜ DESC;

 

=> 3๋ฒˆ์งธ ํ–‰๊ณผ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ ์ถ”๊ฐ€ ํ–‰์ด ์žˆ๋‹ค๋ฉด ์ด ํ–‰๋“ค๋„ ํฌํ•จ(SQL Server์—์„œ ์‚ฌ์šฉ)

 

SELECT ํŒ€๋ช…. ์Šน๋ฆฌ๊ฑด์ˆ˜
	FROM ํŒ€๋ณ„์„ฑ์ 
    WHERE ROWNM <= 3
    ORDER BY ์Šน๋ฆฌ๊ฑด์ˆ˜ DESC;

 

=> 3๋ฒˆ์งธ ํ–‰๊ณผ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง€ ์ถ”๊ฐ€ํ–‰์ด ์žˆ๋”๋ผ๋„ ํฌํ•จ x (Oracle์—์„œ ์‚ฌ์šฉ)

=> Oracle์—์„œ์„œ TOP(3) WITH TIES์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด DENSE_RANK()์˜ ์œˆ๋„์šฐ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

RANK()์™€ DENSE_RANK()์˜ ์ฐจ์ด....

 

EmployeeIDNameSalary

1 Alice 5000
2 Bob 4000
3 Carol 4000
4 Dave 3000
5 Eve 2000

RANK() ์‚ฌ์šฉ ์˜ˆ์‹œ

SELECT *
FROM (
    SELECT e.*, RANK() OVER (ORDER BY Salary DESC) AS rnk
    FROM Employees e
)
WHERE rnk <= 3;

 

EmployeeIDNameSalaryrnk

EmployeeID Name Salary rank
1 Alice 5000 1
2 Bob 4000 2
3 Carol 4000 2
4 Dave 3000 4

 

RANK() ํ•จ์ˆ˜๋Š” Salary๊ฐ€ ๊ฐ™์€ Bob๊ณผ Carol์—๊ฒŒ ๋™์ผํ•œ 2์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ๋‹ค์Œ ์ˆœ์œ„์ธ 3์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  4๋ฅผ Dave์—๊ฒŒ ๋ถ€์—ฌ

DENSE_RANK() ์‚ฌ์šฉ ์˜ˆ์‹œ

SELECT *
FROM (
    SELECT e.*, DENSE_RANK() OVER (ORDER BY Salary DESC) AS rnk
    FROM Employees e
)
WHERE rnk <= 3;

 

EmployeeIDNameSalaryrnk

1 Alice 5000 1
2 Bob 4000 2
3 Carol 4000 2
4 Dave 3000 3

DENSE_RANK() ํ•จ์ˆ˜๋Š” Salary๊ฐ€ ๊ฐ™์€ Bob๊ณผ Carol์—๊ฒŒ ๋™์ผํ•œ 2์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ๋‹ค์Œ ์ˆœ์œ„๋ฅผ 3์œผ๋กœ ๋ถ€์—ฌํ•˜์—ฌ ์—ฐ์†์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

 

  • RANK(): ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ ํ–‰๋“ค์ด ์žˆ์œผ๋ฉด ์ˆœ์œ„์— ๊ณต๋ฐฑ์ด ์ƒ๊น๋‹ˆ๋‹ค.
  • DENSE_RANK(): ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ ํ–‰๋“ค์ด ์žˆ๋”๋ผ๋„ ์ˆœ์œ„์— ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ์ง€ ์•Š๊ณ  ์—ฐ์†์ ์œผ๋กœ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.

 

๋‹จ, auto commit์€ false๋กœ ์„ค์ • ๋˜์–ด ์žˆ๋‹ค๋Š” ๋ง์€ sql server๋ผ๋Š” ๋ง..

oracle์€ ์ˆ˜์ •ํ›„์— createํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ €์žฅ๋œ๋‹ค

    

ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฌ์šด ๋ฌธ์ œ...

ROWNUM ์„ ์ •๋ ฌ ์ „์— ์“ฐ๋ฉด ์•„๋ฌด ์˜๋ฏธ ์—†๋‹ค....

์ •๋‹ต์€ 3๋ฒˆ

 

' \d+', 'xxx', 1, 2 => ๋ฌธ์ž๋ฅผ xxx๋กœ ๋ฐ”๊พธ๋Š”๋ฐ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ 2๋ฒˆ์งธ ์œ„์น˜๊บผ๋ฅผ REPLACE ๋ฐ”๊ฟ”๋ผ

 

 

*** ๋…ธ๋žญ์ด ๋ชจ๋ฅด๋Š”๊ฑฐ

 

TCL :  ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๋ฌถ์–ด DML์— ์˜ํ•ด ์กฐ์ž‘๋œ ๊ฒฐ๊ณผ๋ฅผ ์ž‘์—… ๋‹จ์œ„(Transaction) ๋ณ„๋กœ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น์–ด์ธ Commit, Rollback, Savepoint ๋“ฑ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•˜๋ฉฐ, ์ผ๋ถ€์—์„œ๋Š” DCL๋กœ ๋ถ„๋ฅ˜ํ•˜๊ธฐ๋„ ํ•œ๋‹ค

 

UNIQUE๋Š” NULL ์ž…๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค!!! PK๋Š” ๋ถˆ๊ฐ€๋Šฅํ•จ ใ…‹ใ…‹ใ…‹

 

 

****  ๋…ธ๋žญ์ด ์ •๋ฆฌ

 

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

1. ๊ฐœ๋…์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง : ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋†’๊ณ  ์—…๋ฌด์ค‘์‹ฌ์ ์ด๊ณ  ํฌ๊ด„์ ์ธ ์ˆ˜์ค€์˜ ๋ชจ๋ธ๋ง ์ง„ํ–‰, ์ „์‚ฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง, EA ์ˆ˜๋ฆฝ์‹œ ๋งŽ์ด ์ด์šฉ

2. ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง : ์‹œ์Šคํ…œ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๊ณ ์ž ํ•˜๋Š” ์—…๋ฌด์— ๋Œ€ํ•ด Key ์†์„ฑ, ๊ด€๊ณ„ ๋“ฑ์„ ์ •ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„, ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์Œ

3. ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง : ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ด์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ฑ๋Šฅ, ์ €์žฅ ๋“ฑ ๋ฌผ๋ฆฌ์ ์ธ ์„ฑ๊ฒฉ์„ ๊ณ ๋ คํ•˜์—ฌ ์„ค๊ณ„ 

 

 

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์„ ํ•˜๋Š” ์ฃผ์š”ํ•œ ์ด์œ 

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

2. ๋ถ„์„๋œ ๋ชจ๋ธ์„ ๊ฐ€์ง€๊ณ  ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐœ๋ฐœ ๋ฐ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ

 

=> ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์ด๋ผ๋Š” ๊ฒƒ์€ ๋‹จ์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งŒ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์“ฐ์ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง ์ž์ฒด๋กœ์„œ ์—…๋ฌด๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ๋„ ๋งค์šฐ ์ค‘์š”ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง

 

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์œ ์˜์  : ์ค‘๋ณต, ๋น„์œ ์—ฐ์„ฑ, ๋น„์ผ๊ด€์„ฑ

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ๊ตฌ์กฐ 3๋‹จ๊ณ„

- ์™ธ๋ถ€ ์Šคํ‚ค๋งˆ : ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ถ€๋ถ„์  ๋ทฐ๋ฅผ ์ •์˜

- ๊ฐœ๋… ์Šคํ‚ค๋งˆ : ํ†ตํ•ฉ ๊ด€์ ์˜ ์Šคํ‚ค๋งˆ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•œ ๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์€ ํ†ตํ•ฉ๊ด€์ ์˜ ๋ทฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐœ๋… ์Šคํ‚ค๋งˆ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๊ณผ์ •์ž„.

- ๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ : ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์ €์žฅ ๊ตฌ์กฐ๋ฅผ ์ •์˜

 

ERD ์ž‘์„ฑ ์ˆœ์„œ

1. ์—”ํ„ฐํ‹ฐ๋ฅผ ๊ทธ๋ฆฐ๋‹ค

2. ์—”ํ„ฐํ‹ฐ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๋ฐฐ์น˜ํ•œ๋‹ค

3. ์—”ํ„ฐํ‹ฐ ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•œ๋‹ค

4. ๊ด€๊ณ„๋ช…์„ ๊ธฐ์ˆ ํ•œ๋‹ค

5, ๊ด€๊ณ„์˜ ์ฐธ์—ฌ๋„๋ฅผ ๊ธฐ์ˆ ํ•œ๋‹ค

6. ๊ด€๊ณ„์˜ ํ•„์ˆ˜์—ฌ๋ถ€๋ฅผ ๊ธฐ์ˆ ํ•œ๋‹ค

 

์—”ํ„ฐํ‹ฐ์˜ ํŠน์ง•

1.๋ฐ˜๋“œ์‹œ ํ•ด๋‹น ์—…๋ฌด์—์„œ ํ•„์š”ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ •๋ณด์—ฌ์•ผ ํ•œ๋‹ค

2. ์œ ์ผํ•œ ์‹๋ณ„์ž์— ์˜ํ•ด ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค

3. ์˜์†์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” (๋‘๊ฐœ ์ด์ƒ์˜)์ธ์Šคํ„ด์Šค์˜ ์ง‘ํ•ฉ์ด์–ด์•ผ ํ•œ๋‹ค

4. ์—”ํ„ฐํ‹ฐ๋Š” ์—…๋ฌด ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์ด์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค

5. ์—”ํ„ฐํ‹ฐ๋Š” ๋ฐ˜๋“œ์‹œ ์†์„ฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค

6. ์—”ํ„ฐํ‹ฐ๋Š” ๋‹ค๋ฅธ ์—”ํ„ฐํ‹ฐ์™€ ์ตœ์†Œ ํ•œ ๊ฐœ ์ด์ƒ์˜ ๊ด€๊ณ„์•ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค 

 

๊ธฐ๋ณธ์—”ํ„ฐํ‹ฐ(ํ‚ค์—”ํ„ฐํ‹ฐ) 

- ์›๋ž˜ ์กด์žฌํ•˜๋Š” ์ •๋ณด๋กœ์„œ ๋‹ค๋ฅธ ์—”ํ„ฐํ‹ฐ์™€์˜ ๊ด€๊ณ„์— ์˜ํ•ด ์ƒ์„ฑ๋˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ž์‹ ์€ ํƒ€ ์—”ํ„ฐํ‹ฐ์˜ ๋ถ€๋ชจ์˜ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค

- ๋‹ค๋ฅธ ์—”ํ„ฐํ‹ฐ๋กœ๋ถ€ํ„ฐ ์ฃผ์‹๋ณ„์ž๋ฅผ ์ƒ์†๋ฐ›์ง€ ์•Š๊ณ  ์ž์‹ ์˜ ๊ณ ์œ ํ•œ ์ฃผ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค

- ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์›, ๋ถ€์„œ, ๊ณ ๊ฐ...

-  vs) ์ค‘์‹ฌ์—”ํ„ฐํ‹ฐ(๋ฉ”์ธ์—”ํ„ฐํ‹ฐ) : ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์—์„œ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์—”ํ„ฐํ‹ฐ์™€ ๊ด€๊ณ„๋ฅผ ๋งบ๋Š” ์ค‘์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•˜๋Š” ์—”ํ„ฐํ‹ฐ๋กœ ์—ฌ๋Ÿฌ ์—”ํ„ฐํ‹ฐ์™€์˜ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค

 

์†์„ฑ(Attribute) 

: ์—…๋ฌด์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์ธ์Šคํ„ด์Šค์—์„œ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ์˜๋ฏธ์ƒ ๋” ์ด์ƒ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š๋Š” ์ตœ์†Œ์˜ ๋ฐ์ดํ„ฐ ๋‹จ์œ„

=> ์—…๋ฌด์ƒ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ์˜ ์˜๋ฏธ ๋‹จ์œ„(์—”ํ„ฐํ‹ฐ์˜ ํ•œ ๋ถ„์•ผ)

 

์†์„ฑ์˜ ํŠน์„ฑ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

- ๊ธฐ๋ณธ์†์„ฑ :  ์—”ํ„ฐํ‹ฐ๊ฐ€ ๋ณธ์งˆ์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ('๊ณ ๊ฐ' ์—”ํ„ฐํ‹ฐ์˜  '์ด๋ฆ„', '์ฃผ์†Œ', '์ „ํ™”๋ฒˆํ˜ธ')

- ์„ค๊ณ„ ์†์„ฑ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€๋œ ์†์„ฑ('์ฃผ๋ฌธ' ์—”ํ„ฐํ‹ฐ์˜ '์ฃผ๋ฌธ๋ฒˆํ˜ธ', '๊ณ ๊ฐID')

- ํŒŒ์ƒ ์†์„ฑ : ๋‹ค๋ฅธ ์†์„ฑ ๊ฐ’์—์„œ ๊ณ„์‚ฐ๋˜๊ฑฐ๋‚˜ ์œ ๋„๋˜๋Š” ์†์„ฑ, ์กฐํšŒํ•  ๋•Œ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋‚ด๋„๋ก ํ•จ('์ฃผ๋ฌธ' ์—”ํ„ฐํ‹ฐ์˜ ์ด๊ธˆ์•ก)

 

 ์†์„ฑ์˜ ๋„๋ฉ”์ธ

:  ๊ฐ ์†์„ฑ์€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ์†์„ฑ์˜ ๋„๋ฉ”์ธ์ด๋ผํ•˜๋ฉฐ, ์—”ํ„ฐํ‹ฐ ๋‚ด์—์„œ ์†์„ฑ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐํƒ€์ž…๊ณผ ํฌ๊ธฐ ๊ทธ๋ฆฌ๊ณ  ์ œ์•ฝ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ

 

๋‘๊ฐœ์˜ ์—”ํ„ฐํ‹ฐ ์‚ฌ์ด์— ์ฒดํฌํ•ด์•ผ ํ•  ์‚ฌํ•ญ

1. ๋‘ ๊ฐœ์˜  ์—”ํ„ฐํ‹ฐ ์‚ฌ์ด์— ๊ด€์‹ฌ์žˆ๋Š” ์—ฐ๊ด€๊ทœ์น™์ด ์กด์žฌํ•˜๋Š”๊ฐ€?

2. ๋‘ ๊ฐœ์œ ์—”ํ„ฐํ‹ฐ ์‚ฌ์ด์— ์ •๋ณด์˜ ์กฐํ•ฉ์ด ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

3. ์—…๋ฌด๊ธฐ์ˆ ์„œ, ์žฅํ‘œ์— ๊ด€๊ณ„์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ๊ทœ์น™์ด ์„œ์ˆ ๋˜์–ด ์žˆ๋Š”๊ฐ€?

4. ์—…๋ฌด๊ธฐ์ˆ ์„œ, ์žฅํ‘œ์— ๊ด€๊ณ„์—ฐ๊ฒฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋™์‚ฌ๊ฐ€ ์žˆ๋Š”๊ฐ€?

 

์ฃผ์‹๋ณ„์ž๋ฅผ ์ €์žฅํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ

- ์ฃผ์‹๋ณ„์ž์— ์˜ํ•ด ์—”ํ„ฐํ‹ฐ๋‚ด์— ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋“ค์ด ์œ ์ผํ•˜๊ฒŒ ๊ตฌ๋ถ„๋˜์–ด์•ผ ํ•œ๋‹ค(์œ ์ผ์„ฑ)

- ์ฃผ์‹๋ณ„์ž๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ์˜ ์ˆ˜๋Š” ์œ ์ผ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ์ตœ์†Œ์˜ ์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค(์ตœ์†Œ์„ฑ)

- ์ง€์ •๋œ ์ฃผ์‹๋ณ„์ž์˜ ๊ฐ’์€ ์ž์ฃผ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด์–ด์•ผ ํ•œ๋‹ค(๋ถˆ๋ณ€์„ฑ)

- ์ฃผ์‹๋ณ„์ž๊ฐ€ ์ง€์ •์ด ๋˜๋ฉด ๋ฐ˜๋“œ์‹œ ๊ฐ’์ด ๋“ค์–ด์™€์•ผ ํ•œ๋‹ค(์กด์žฌ์„ฑ)                                                                                                                                                                                                                                                                              

์‹๋ณ„์ž์˜ ์ข…๋ฅ˜

- ์—”ํ„ฐํ‹ฐ ๋‚ด์—์„œ ๋Œ€ํ‘œ์„ฑ์„ ๊ฐ€์ง€๋Š”๊ฐ€์— ๋”ฐ๋ผ ์ฃผ์‹๋ณ„์ž์™€ ๋ณด์กฐ์‹๋ณ„์ž๋กœ ๊ตฌ๋ถ„

- ์—”ํ„ฐํ‹ฐ ๋‚ด์—์„œ ์Šค์Šค๋กœ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‚ด๋ถ€์‹๋ณ„์ž์™€ ์™ธ๋ถ€์‹๋ณ„์ž๋กœ ๊ตฌ๋ถ„

- ๋‹จ์ผ ์†์„ฑ์œผ๋กœ ์‹๋ณ„์ด ๋˜๋Š”๊ฐ€์— ๋”ฐ๋ผ ๋‹จ์ผ์‹๋ณ„์ž์™€ ๋ณตํ•ฉ ์‹๋ณ„์ž๋กœ ๊ตฌ๋ถ„

- ์›๋ž˜ ์—…๋ฌด์ ์œผ๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ๋˜ ์‹๋ณ„์ž ์†์„ฑ์„ ๋Œ€์ฒดํ•˜์—ฌ ์ผ๋ จ๋ฒˆํ˜ธ์™€ ๊ฐ™์ด ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“  ์‹๋ณ„์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ณธ์งˆ์‹๋ณ„์ž์™€ ์ธ์กฐ์‹๋ณ„์ž๋กœ ๊ตฌ๋ถ„

 

์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์ˆ˜ํ–‰ ์ ˆ์ฐจ์— ๋Œ€ํ•œ ์„ค๋ช…..

1. ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง์„ ํ•  ๋•Œ ์ •๊ทœํ™”๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ˆ˜ํ–‰

2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šฉ๋Ÿ‰์‚ฐ์ •์„ ์ˆ˜ํ–‰

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐœ์ƒ๋˜๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์œ ํ˜•์„ ํŒŒ์•…

4. ์šฉ๋Ÿ‰๊ณผ ํŠธ๋žœ์žญ์…˜ ์œ ํ˜•์— ๋”ฐ๋ผ ๋ฐ˜์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰

5. ์ด๋ ฅ๋ชจ๋ธ์˜ ์กฐ์ •, PK/FK ์กฐ์ •, ์Šˆํผ ํƒ€์ž…/์„œ๋ธŒํƒ€์ž… ์กฐ์ • ๋“ฑ์„ ์ˆ˜ํ–‰

6. ์„ฑ๋Šฅ๊ด€์ ์—์„œ ๋ฐ์ดํ„ฐ๋ชจ๋ธ์„ ๊ฒ€์ฆ                                                                                                                                         

 

 

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์˜ ์ดํ•ด

  • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ฐœ์š”
  • ์—”ํ„ฐํ‹ฐ
  • ์†์„ฑ
  • ๊ด€๊ณ„ with ERD
  • ์‹๋ณ„์ž
  • ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง
  • ์ •๊ทœํ™”
  • ๋ฐ˜์ •๊ทœํ™”
  • ๊ธฐํƒ€ ๋ง๋ฌธ์ œ ๊ฐœ๋… ์ •๋ฆฌ

 

1) ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์˜ ํŠน์ง•

  • ์ถ”์ƒํ™” : ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ์ผ์ •ํ•œ ํ˜•์‹์— ๋งž์ถฐ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•จ
  • ์ •ํ™•ํ™” : ๋ˆ„๊ตฌ๋‚˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ˜„์ƒ์„ ๊ธฐ์ˆ 
  • ๋‹จ์ˆœํ™” : ๋ณต์žกํ•œ ํ˜„์‹ค์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ œํ•œ๋œ ์–ธ์–ด์™€ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•จ
    >>> ํ˜„์‹ค์„ธ๊ณ„๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์ถ”์ƒํ™”ํ•˜์—ฌ ์ •ํ™•ํ•˜๊ฒŒ ๊ณต์œ ํ•˜๋Š” ์ž‘์—…์ด ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง!!
  • ์ •๋ณด์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์—…๋ฌด ๋ถ„์„ ๊ธฐ๋ฒ•
  • ํ˜„์‹ค์„ธ๊ณ„์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์•ฝ์†๋œ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ‘œํ˜„
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„์„๊ณผ ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ๊ณผ์ •

 

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์˜ ์œ ์˜์‚ฌํ•ญ

  • ์ค‘๋ณต์„ฑ :  ์ค‘๋ณต์„ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•จ(๊ฐ™์€ ์ •๋ณด๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ์ง€์–‘)
  • ๋น„์œ ์—ฐ์„ฑ : ๋ฐ์ดํ„ฐ์˜ ์ •์˜ <=> ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ ํ”„๋กœ์„ธ์Šค, ํ”„๋กœ๊ทธ๋žจ <=> ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์—ฐ๊ณ„์„ฑ์„ ์ค„์—ฌ์„œ, 
             ๋ฐ์ดํ„ฐ ํ˜น์€ ํ”„๋กœ์„ธ์Šค์˜ ๋ณ€ํ™”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ค‘๋Œ€ํ•œ ๋ณ€ํ™”๋ฅผ ์ดˆ๋ž˜ํ•˜์ง€ ์•Š๋„๋ก ์œ ์—ฐํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ•จ
  • ๋น„์ผ๊ด€์„ฑ : '์•ฝ์†๋œ ํ‘œ๊ธฐ๋ฒ•'์„ ์ค€์šฉํ•˜๋Š” ๋“ฑ ์—…๋ฌด๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•ด์„œ ์ •๋ณด ๊ด€๋ฆฌ์˜ ์ผ๊ด€์„ฑ์„ ์ตœ๋Œ€ํ™” ํ•ด์•ผํ•จ

 

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์˜ ๋‹จ๊ณ„

  • ๊ฐœ๋…์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง : ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋†’์Œ, ์ „์‚ฌ์  ๋ชจ๋ธ๋ง ์‹œ ๋งŽ์ด ํ•จ, ํฌ๊ด„์  ์ˆ˜์ค€์˜ ๋ชจ๋ธ๋ง
  • ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง : Key, ์†์„ฑ, ๊ด€๊ณ„ ๋“ฑ์„ ์ •ํ™•ํžˆ ๊ธฐ์ˆ ํ•˜๋Š” ๋ชจ๋ธ๋ง
  • ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง : ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ด์‹ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ €์žฅ, ์„ฑ๋Šฅ ๋“ฑ ๋ฌผ๋ฆฌ์ ์ธ ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ๋ชจ๋ธ๋ง

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ๊ตฌ์กฐ 3๋‹จ๊ณ„

  • ์™ธ๋ถ€์Šคํ‚ค๋งˆ : [์‚ฌ์šฉ์ž ๊ด€์ ] ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž ๊ด€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๊ตฌ์กฐ
  • ๊ฐœ๋…์Šคํ‚ค๋งˆ : [ํ†ตํ•ฉ ๊ด€์ ] ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ๊ด€์ ์„ ํ†ตํ•ฉํ•œ ์กฐ์ง ์ „์ฒด์˜ ๊ด€์ ์˜ ํ†ตํ•ฉ์  ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ตฌ์กฐ
  • ๋‚ด๋ถ€์Šคํ‚ค๋งˆ : [๊ฐœ๋ฐœ์ž ๊ด€์ ] ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•  ๊ฒƒ์ธ์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌผ๋ฆฌ์  ์ €์žฅ ๊ตฌ์กฐ

 

๋ฐ์ดํ„ฐ์˜ ๊ตฌ์„ฑ

 

์—”ํ„ฐํ‹ฐ(Entity) ์ค‘์š”!!!

  • ํ•ด๋‹น ์—…๋ฌด์—์„œ ํ•„์š”ํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ์ •๋ณด์—ฌ์•ผ ํ•จ
  • ์œ ์ผํ•œ ์‹๋ณ„์ž์— ์˜ํ•ด ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ (ex ํšŒ์› ํ…Œ์ด๋ธ” ์ƒ ๊ณ ๊ฐ๋ฒˆํ˜ธ)
  • ํ•˜๋‚˜์˜ ์—”ํ„ฐํ‹ฐ๋Š” ๋ฐ˜๋“œ์‹œ 2๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ ธ์•ผ ํ•จ
  • ํ•˜๋‚˜์˜ ์—”ํ„ฐํ‹ฐ๋Š” ๋ฐ˜๋“œ์‹œ ์†์„ฑ์ด ์žˆ์–ด์•ผ ํ•จ (2๊ฐœ ์ด์ƒ)
  • ํ•˜๋‚˜์˜ ์—”ํ„ฐํ‹ฐ๋Š” ๋ฐ˜๋“œ์‹œ 1๊ฐœ ์ด์ƒ์˜ ๊ด€๊ณ„๊ฐ€ ์žˆ์–ด์•ผ ํ•จ (ํ†ต๊ณ„์„ฑ, ์ฝ”๋“œ์„ฑ ์—”ํ„ฐํ‹ฐ ์ œ์™ธ)

 

- ๋ฐœ์ƒ ์‹œ์ ์— ๋”ฐ๋ฅธ ์—”ํ„ฐํ‹ฐ ๋ถ„๋ฅ˜

  • ๊ธฐ๋ณธ์—”ํ„ฐํ‹ฐ : ๋…๋ฆฝ์  ์ƒ์„ฑ๋˜๋Š” ์—”ํ„ฐํ‹ฐ
  • ์ค‘์‹ฌ์—”ํ„ฐํ‹ฐ : ๊ธฐ๋ณธ ์—”ํ„ฐํ‹ฐ๋กœ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•˜๊ณ  ํ–‰์œ„ ์—”ํ„ฐํ‹ฐ๋ฅผ ์ƒ์„ฑํ•จ
  • ํ–‰์œ„์—”ํ„ฐํ‹ฐ : ๊ธฐ๋ณธ, ์ค‘์‹ฌ ์—”ํ„ฐํ‹ฐ ๋“ฑ 2๊ฐœ ์ด์ƒ์˜ ์—”ํ„ฐํ‹ฐ๋กœ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•จ

 

- ๋ฌผ๋ฆฌ์  ํ˜•ํƒœ์— ๋”ฐ๋ฅธ ์—”ํ„ฐํ‹ฐ ๋ถ„๋ฅ˜

  • ์œ ํ˜•์—”ํ„ฐํ‹ฐ : ๋ฌผ๋ฆฌ์  ํ˜•ํƒœ๊ฐ€ ์žˆ๋Š” ์—”ํ„ฐํ‹ฐ
  • ๊ฐœ๋…์—”ํ„ฐํ‹ฐ : ๋ฌผ๋ฆฌ์  ํ˜•ํƒœ๋Š” ์—†์ง€๋งŒ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ๊ฐœ๋…์  ์ •๋ณด
  • ์‚ฌ์ „์—”ํ„ฐํ‹ฐ : ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ์ค‘ ์ƒ๊ธฐ๋Š” ์—”ํ„ฐํ‹ฐ

 

 

์†์„ฑ(Column)

  • ์ธ์Šคํ„ด์Šค์—์„œ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ์˜๋ฏธ๊ฐ€ ๋” ์ด์ƒ ๋ถ€๋ฆฌ๋˜์ง€ ์•Š๋Š” ์ตœ์†Œ์˜ ๋ฐ์ดํ„ฐ ๋‹จ์œ„
  • 1๊ฐœ์˜ ์†์„ฑ์€ 1๊ฐœ์˜ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง„๋‹ค
  • ๊ธฐ๋ณธ์†์„ฑ / ์„ค๊ณ„์†์„ฑ / ํŒŒ์ƒ์†์„ฑ
    - ์„ค๊ณ„ ์†์„ฑ : ์ฝ”๋“œ์„ฑ ์ปฌ๋Ÿผ, ์ผ๋ จ๋ฒˆํ˜ธ ๋“ฑ ๊ทœ์น™ํ™”๋ฅผ ์œ„ํ•œ ์†์„ฑ
    - ํŒŒ์ƒ ์†์„ฑ : ๊ณ„์‚ฐ๋œ ๊ฐ’ (ํ…Œ์ด๋ธ” ๋‚ด์— ์ ์„์ˆ˜๋ก ์ข‹์Œ)
    - ๊ธฐ๋ณธ ์†์„ฑ : ์—…๋ฌด์ƒ ๋ฐ”๋กœ ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•œ ์†์„ฑ(์ด๋ฆ„, ๊ณ„์ขŒ๋ฒˆํ˜ธ, ์ฃผ๋ฌธ์ผ์ž..)

 

EX) ์€ํ–‰์€ ๊ณ ๊ฐ์—๊ฒŒ ์ง€๊ธ‰๋˜๋Š” ์›”๋‹จ์œ„ '์ด์ž'๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ด๋•Œ ์ด์ž๋Š” ์–ด๋–ค ์†์„ฑ์ผ๊นŒ? ํŒŒ์ƒ์†์„ฑ

ex) ๊ทธ๋ ‡๋‹ค๋ฉด, ์˜ˆ๊ธˆ ๋ถ„๋ฅ˜์— ๋”ฐ๋ผ ๊ด€๋ฆฌ๋˜๋Š” '์ด์ž์œจ'์€ ์–ด๋–ค ์†์ƒ์ผ๊นŒ? ๊ธฐ๋ณธ์†์„ฑ

 

  • ๊ฐ ์†์„ฑ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ์†์„ฑ์˜ '๋„๋ฉ”์ผ'์ด๋ผ๊ณ  ํ•จ (๋ฐ์ดํ„ฐ ํƒ€์ž…, ํฌ๊ธฐ, ์ œ์•ฝ์‚ฌํ•ญ ๋“ฑ ์ง€์ •)
    ex) ์€ํ–‰๊ณ„์ขŒ ๋ผ๋Š” ์—”ํ„ฐํ‹ฐ๊ฐ€ ์žˆ์„ ๋•Œ, ๊ณ„์ขŒ๋ช…์ด๋ผ๋Š” ์†์„ฑ์€ ๊ธธ์ด๊ฐ€ 20์ž๋ฆฌ ์ด๋‚ด์˜ ๋ฌธ์ž์—ด๋กœ ์ •์˜

 

๊ด€๊ณ„ with ERD(Entity-Relationship Model)

  • ํ•˜๋‚˜์˜ ์—”ํ„ฐํ‹ฐ๋Š” 1๊ฐœ ์ด์ƒ์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ ธ์•ผ ํ•จ(ํ†ต๊ณ„์„ฑ, ์ฝ”๋“œ์„ฑ ์—”ํ„ฐํ‹ฐ ์ œ์™ธ)
  • ๊ด€๊ณ„์˜ ๊ตฌ๋ถ„ : ํ–‰์œ„์— ์˜ํ•œ ๊ด€๊ณ„, ์กด์žฌ์— ์˜ํ•œ ๊ด€๊ณ„
    >> ERD ์—์„œ๋Š” ๋‘ ๊ด€๊ณ„๋ฅผ ๊ตฌ๋ถ„์—†์ด ๋™์ผํ•œ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•จ
    (๋‹จ, ํด๋ž˜์Šค๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ๋Š” ๊ตฌ๋ถ„ํ•˜์—ฌ ์—ฐ๊ด€๊ด€๊ณ„์™€ ์˜์กด๊ด€๊ณ„๋กœ ์‹ค์„ ๊ณผ ์ ์„ ์˜ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„ํ•จ)

 

* ๋‘ ๊ฐœ์˜ ์—”ํ„ฐํ‹ฐ ์‚ฌ์ด์—์„œ ๊ด€๊ณ„๋ฅผ ๋„์ถœํ•  ๋•Œ ์ฒดํฌํ•ด์•ผ ํ•˜๋Š” ์‚ฌํ•ญ

  • ๊ด€์‹ฌ์žˆ๋Š” ์—ฐ๊ด€๊ทœ์น™ ์—ฌ๋ถ€
  • ์ •๋ณด์˜ ์กฐํ•ฉ ์—ฌ๋ถ€
  • ์—…๋ฌด๊ธฐ์ˆ ์„œ, ์žฅํ‘œ์— ๊ด€๊ณ„์—ฐ๊ฒฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋™์‚ฌ ์—ฌ๋ถ€
  • ์—…๋ฌด๊ธฐ์ˆ ์„œ, ์žฅํ‘œ์— ๊ด€๊ณ„์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ๊ทœ์น™ ์„œ์ˆ  ์—ฌ๋ถ€

 

* ERD ์ž‘์„ฑ์ˆœ์„œ

1) ์—”ํ„ฐํ‹ฐ ๋„์ถœ & ๊ทธ๋ฆฌ๊ธฐ

2) ์—”ํ„ฐํ‹ฐ ๋ฐฐ์น˜(๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—”ํ„ฐํ‹ฐ๋ฅผ ์ขŒ์ธก ์ƒ๋‹จ์— ๋ฐฐ์น˜, ์ถ”๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์—”ํ„ฐํ‹ฐ๋Š” ์šฐ์ธก๊ณผ ํ•˜๋‹จ์— ๋ฐฐ์น˜)

 

3) ์—”ํ„ฐํ‹ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ •

4) ์—”ํ„ฐํ‹ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ช… ๊ธฐ์ˆ 

 

์‹๋ณ„๊ด€๊ณ„์™€ ๋น„์‹๋ณ„๊ด€๊ณ„!!!

 

5) ๊ด€๊ณ„์˜ ์ฐธ์—ฌ๋„ ๊ธฐ์ˆ (1:1, 1:N, M:N)

6) ๊ด€๊ณ„์˜ ํ•„์ˆ˜์—ฌ๋ถ€ ๊ธฐ์ˆ (ํ•„์ˆ˜์  ๊ด€๊ณ„ : I, ์„ ํƒ์  ๊ด€๊ณ„ : O)

 

 

์‹๋ณ„์ž ๊ตฌ๋ถ„

 

๋Œ€ํ‘œ์„ฑ ์—ฌ๋ถ€

  • ์ฃผ์‹๋ณ„์ž : ์œ ์ผ์„ฑ, ์ตœ์†Œ์„ฑ, ๋Œ€ํ‘œ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ์‹๋ณ„์ž์ด๋ฉฐ ํƒ€ ์—”ํ„ฐํ‹ฐ์™€ ์ฐธ์กฐ ๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค.(Primary Key)
  • ๋ณด์กฐ์‹๋ณ„์ž : ์œ ์ผ์„ฑ, ์ตœ์†Œ์„ฑ์€ ๋งŒ์กฑํ•˜์ง€๋งŒ ๋Œ€ํ‘œ์„ฑ์„ ๊ฐ–์ง€ ๋ชปํ•˜๋Š” ์‹๋ณ„์ž์ด๋‹ค.

์†์„ฑ์˜ ์ˆ˜

  • ๋‹จ์ผ ์‹๋ณ„์ž
  • ๋ณตํ•ฉ ์‹๋ณ„์ž : 2๊ฐธ ์ด์ƒ์˜ ์†์„ฑ์„ ๊ตฌ์„ฑ๋œ ์‹๋ณ„์ž

 

 

์Šค์Šค๋กœ ์ƒ์„ฑ ์—ฌ๋ถ€

  • ๋‚ด๋ถ€ ์‹๋ณ„์ž : ์—”ํ„ฐํ‹ฐ ๋‚ด์—์„œ ์ƒ์„ฑ๋œ ์‹๋ณ„์ž
  • ์™ธ๋ถ€ ์‹๋ณ„์ž : ํƒ€ ์—”ํ„ฐํ‹ฐ์™€์˜ ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด ๋ฐ›์•„์˜ค๋Š” ์‹๋ณ„์ž(Foreign Key)

๋Œ€์ฒด ์—ฌ๋ถ€

  • ๋ณธ์งˆ ์‹๋ณ„์ž : ์—…๋ฌด์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง€๋Š” ์‹๋ณ„์ž
  • ์ธ์กฐ ์‹๋ณ„์ž : ๋ณต์žกํ•œ ์›์กฐ ์‹๋ณ„์ž ๋Œ€์‹ ์— ์ธ์œ„์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์‹๋ณ„์ž(ex. ์ผ๋ จ๋ฒˆํ˜ธ)

 

์ฃผ์‹๋ณ„์ž

  • ์œ ์ผ์„ฑ : ์ฃผ์‹๋ณ„์ž์— ์˜ํ•ด ์—”ํ„ฐํ‹ฐ ์† ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋“ค์ด ์œ ์ผํ•˜๊ฒŒ ๊ตฌ๋ถ„๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
  • ์ตœ์†Œ์„ฑ : ์ฃผ์‹๋ณ„์ž๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ์˜ ์ˆ˜๋Š” ์œ ์ผ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ์ตœ์†Œ์˜ ์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ํ•จ
  • ๋ถˆ๋ณ€์„ฑ : ์ง€์ •๋œ ์ฃผ์‹๋ณ„์ž์˜ ๊ฐ’์€ ์ž์ฃผ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด์–ด์•ผ ํ•จ
  • ์กด์žฌ์„ฑ : ์ฃผ์‹๋ณ„์ž๊ฐ€ ์ง€์ •๋˜๋ฉด ๋ฐ˜๋“œ์‹œ ๊ฐ’์ด ์žˆ์–ด์•ผ ํ•จ(NULL)

 

2) ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ์„ฑ๋Šฅ

 

์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ถ„์„/์„ค๊ณ„ ๋‹จ๊ณ„๋ถ€ํ„ฐ ์„ฑ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ์‚ฌํ•ญ์ด ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ฆฌ์— ๋ฐ˜์˜๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ
  • ๋ฐ์ดํ„ฐ์˜ ์ฆ๊ฐ€๊ฐ€ ๋น ๋ฅผ์ˆ˜๋ก ์„ฑ๋Šฅ ๊ฐœ์„  ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•จ
  • ์„ค๊ณ„๋‹จ๊ณ„๋ถ€ํ„ฐ ๊ณ ๋ คํ•  ์…ฉ์šฐ ๋น„์šฉ ์ตœ์†Œํ™”๊ฐ€ ๊ฐ€๋Šฅํ•จ

 

์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์ˆœ์„œ

  1. ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์‹œ ์ •๊ทœํ™”๋ฅผ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ•จ
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šฉ๋Ÿ‰์„ ์‚ฐ์ •ํ•จ
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐœ์ƒํ•˜๋Š” ํŠธ๋žœ์žญ์…˜ ์œ ํ˜•์„ ํŒŒ์•…ํ•จ
  4. ์šฉ๋Ÿ‰๊ณผ ํŠธ๋žœ์žญ์…˜์˜ ์œ ํ˜•์— ๋”ฐ๋ผ ๋ฐ˜์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•จ
  5. ์ด๋ ฅ๋ชจ๋ธ, PK/FK ์กฐ์ •, ์Šˆํผํƒ€์ž…/์„œ๋ธŒํƒ€์ž… ์กฐ์ •์„ ์ˆ˜ํ–‰ํ•จ

 

์ •๊ทœํ™”๋ž€?

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •
  • ๋ชฉ์  : ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ์œ ์—ฐ์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ๋ณ€๊ฒฝ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๊ด€๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ œ 1~5 ์ •๊ทœํ™”๊ฐ€ ์žˆ์ง€๋งŒ, ์ฃผ๋กœ 1~3 ์ •๊ทœํ™”๊นŒ์ง€ ์ˆ˜ํ–‰ํ•จ

 

* ์ œ1์ •๊ทœํ™”

  • ๊ธฐ๋ณธํ‚ค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •
  • ์†์„ฑ์˜ ์›์ž์„ฑ๊ณผ ์—”ํ„ฐํ‹ฐ์˜ ์œ ์ผ์„ฑ์„ ํ™•๋ณดํ•จ
  • ๋ชจ๋“  ์†์„ฑ์ด ์‹๋ณ„์ž์— ์ข…์†๋˜์–ด์•ผ ํ•จ
    X๊ฐ€ ๋ณ€ํ•˜๋ฉด Y๊ฐ€ ๋ณ€ํ•œ๋‹ค(T๋Š” X์— ํ•จ์ˆ˜์ ์œผ๋กœ ์ข…์†๋จ)
    ์‹๋ณ„์ž๊ฐ€ ๋ณ€ํ•˜๋ฉด ์†์„ฑ์ด ๋ณ€ํ•จ
  • ์†์„ฑ๊ฐ’์˜ ์ค‘๋ณต ์—ฌ๋ถ€ ์ฒดํฌ! (๋‹จ์ผ -> ๋ณตํ•ฉ ์ˆœ)

๋งค์žฅ ์ฝ”๋“œ์™€ ๋ฉ”๋‰ด ์ฝ”๋“œ์— ๋”ฐ๋ผ ๊ฐ€๊ฒฉ์ด ๋ณ€๋™๋˜๋ฏ€๋กœ ๋งค์žฅ ์ฝ”๋“œ์™€ ๋ฉ”๋‰ด์ฝ”๋“œ๋ฅผ ์‹๋ณ„์ž๋กœ ์„ ์ •

 

* ์ œ2์ •๊ทœํ™”

  • ๊ธฐ๋ณธํ‚ค๊ฐ€ 2๊ฐœ ์ด์ƒ์œผ๋กœ ๊ตฌ์„ฑ๋  ๊ฒฝ์šฐ ์ˆ˜ํ–‰ํ•จ
  • ๋ชจ๋“  ์†์„ฑ(์ง€์—ญ๋ช…, ์ ์ฃผ๋ช…, ๋ฉ”๋‰ด๋ช…, ์ถœ์‹œ์ผ, ๊ฐ€๊ฒฉ)์ด ์‹๋ณ„์ž์— ์ข…์†ํ•ด์•ผํ•˜๋ฉฐ, ์•„๋‹ˆ๋ฉด ๋ถ„ํ•ดํ•ด์•ผ ํ•จ
  • ๋ถ€๋ถ„ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ๋ถ„ํ•ดํ•จ
  • ์ฃผ์‹๋ณ„์ž ์ค‘ ์ผ๋ถ€๋กœ๋ถ€ํ„ฐ ๋…๋ฆฝํ•˜์—ฌ 1:M ์˜ ๊ด€๊ณ„๋กœ ์žฌ์„ค๊ณ„

 

* ์ œ 3์ •๊ทœํ™”

  • ๊ธฐ๋ณธํ‚ค ์™ธ์— ์ปฌ๋Ÿผ๊ฐ„ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•จ
  • ์ดํ–‰ ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ œ๊ฑฐ

 

๋ฐ˜์ •๊ทœํ™”

  • ์ •๊ทœํ™”๋ฅผ ํ–ˆ์„ ๋•Œ ์„ฑ๋Šฅ์ด ๋”์šฑ ์•…ํ™”๋  ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๊ณ  ์กฐ์ธ์„ ์ค„์—ฌ์„œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

 

๋ฐ˜์ •๊ทœํ™” ๊ธฐ๋ฒ•(์ปฌ๋Ÿผ & ํ…Œ์ด๋ธ”)

* ์ปฌ๋Ÿผ ์ถ”๊ฐ€ - ์ค‘๋ณต ์ปฌ๋Ÿผ ์ถ”๊ฐ€, ํŒŒ์ƒ์ปฌ๋Ÿผ ์ถ”๊ฐ€(ex. ๊ณ„์‚ฐ๋œ ์ปฌ๋Ÿผ), ์ด๋ ฅํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ์ถ”๊ฐ€, PK์— ์˜ํ•œ ์นผ๋Ÿผ ์ถ”๊ฐ€ ๋“ฑ

ex) ์ค‘๋ณต ์ปฌ๋Ÿผ ์ถ”๊ฐ€
      A ํ…Œ์ด๋ธ”์— ์žˆ๋Š” a, b ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ๋•Œ, C ํ…Œ์ด๋ธ”์˜ c ์ •๋ณด์™€ D ํ…Œ์ด๋ธ”์˜ d์ •๋ณด๋ฅผ ๋Š˜ ํ•จ๊ป˜ ์กฐํšŒํ•œ๋‹ค๋ฉด?

     >>> ๊ณผ๋„ํ•œ ์กฐ์ธ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด A ํ…Œ์ด๋ธ”์— c, d ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์กฐํšŒ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

 

ex) ํŒŒ์ƒ์ปฌ๋Ÿผ ์ถ”๊ฐ€

      ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ JOINํ•ด์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด ๊ฐ’์ด ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด?

      >>> ๋ฏธ๋ฆฌ ๊ณ„์‚ฐ๋œ ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•ด๋‘”๋‹ค. ex) SUM(๋‹จ๊ธฐ)

 

 

* ํ…Œ์ด๋ธ” ๋ณ‘๋ฐฅ / ํ…Œ์ด๋ธ” ๋ถ„ํ•  / ํ…Œ์ด๋ธ” ์ถ”๊ฐ€

  • ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ : 1:1๊ด€๊ณ„ ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ, 1:M ๊ด€๊ณ„ ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ, ์Šˆํผ/์„œ๋ธŒํƒ€์ž… ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ
    * ์Šˆํผ ํƒ€์ž…(ํšŒ์›œ) <=> ์„œ๋ธŒ ํƒ€์ž…(๊ฐœ์ธํšŒ์›, ๋ฒ•์ธํšŒ์›)
  • ํ…Œ์ด๋ธ” ๋ถ„ํ• 
    * ์ˆ˜์ง๋ถ„ํ•  : [a, b, c, d] ์ปฌ๋Ÿผ -> [a,b] [c,d] ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณด๊ด€
    * ์ˆ˜ํ‰๋ถ„ํ•  : ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ด๋ธ” ๋ถ„ํ• (Partition ๊ธฐ๋ฒ•)
    ex. ๋ฉ”์ผ ์Œ’์ด๋Š” ๊ณ ๊ฐ๋ณ„ ์œ„์น˜ ์ •๋ณด๋ฅผ ํ•œ ํ…Œ์ด๋ธ”์— ๋„ฃ์–ด๋‘๋ฉด ์—‘์„ธ์Šค ๋ฒ”์œ„๊ฐ€ ๋„“์Œ -> ์—ฐ๋„๋ณ„๋กœ ์ชผ๊ฐœ์„œ ์ €์žฅ
  • ํ…Œ์ด๋ธ” ์ถ”๊ฐ€ : ์ค‘๋ณตํ…Œ์ด๋ธ”, ํ†ต๊ณ„ํ…Œ์ด๋ธ”, ์ด๋ ฅํ…Œ์ด๋ธ”, ๋ถ€๋ถ„ํ…Œ์ด๋ธ”

 

๊ธฐํƒ€ ์„ฑ๋Šฅ๊ด€๋ จ ๋ง๋ฌธ์ œ ๊ฐœ๋… ์ •๋ฆฌ

 

1. ํ•œ ํ…Œ์ด๋ธ”์— ๋„ˆ๋ฌด ๋งŽ์€ ์นผ๋Ÿผ์ด ์กด์žฌํ•˜๋ฉฐ ๋กœ์šฐ์ฒด์ด๋‹˜์ด ๋ฐœ์ƒํ•˜๋Š” ๋“ฑ ์กฐํšŒ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด
=> ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•˜๋Š” ์ปฌ๋Ÿผ ์œ ํ˜•์„ ๋ถ„์„ํ•ด ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•˜๋ฉด, ๋””์Šคํฌ I/O๊ฐ€ ์ค„์–ด์„œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ๋‹ค.

2. WHERE๋ฌธ์„ ํ†ตํ•ด ์กฐํšŒ๋ฅผ ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” PK ์ˆœ์œผ๋กœ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์— ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค
ex) WHERE ์ง€์—ญ๋ช… = '์„œ์šธ' AND ์ถœ์‹œ์ผ BETWEEN '20220101' AND '20220331'
-> (1) ์ƒ์ˆ˜๊ฐ’์œผ๋กœ ์กฐํšŒํ•˜๋Š” PK(2) ๋ฒ”์œ„๋กœ ์กฐํšŒํ•˜๋Š” PK ์ˆœ
-> ์•ž์ชฝ์— ์œ„์น˜ํ•œ ์†์„ฑ์˜ ๊ฐ’์ด ๊ฐ€๊ธ‰์  '=', ์ตœ์†Œํ•œ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 'BETWEEN', '<' '>'๊ฐ€ ๋“ค์–ด์™€์•ผ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

3. ํŠธ๋žœ์žญ์…˜์˜ ํ†ตํ•ฉ / ๊ฐœ๋ณ„ ์ฒ˜๋ฆฌ ์ผ€์ด์Šค
- ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ผ๊ด„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ํ…Œ์ด๋ธ”์ด ๋ถ„๋ฆฌ๋˜์–ด ๊ฐœ๋ณ„๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ์˜คํžˆ๋ ค ์—ฐ์‚ฐ๋Ÿ‰์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๊ณ 
- ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐœ๋ณ„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ํ…Œ์ด๋ธ”์€ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ๋˜์–ด ๊ด€๋ฆฌํ•˜๋ฉด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋งŽ์€ ๋ฐ์ดํ„ฐ์˜ ์ง‘์ ์œผ๋กœ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Œ
-> ํŠธ๋žœ์žญ์…˜์„ ํ†ตํ•ฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋ฉด ํ†ตํ•ฉํ•ด๋‘๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์— ์ข‹๊ณ , ๊ฐœ๋ณ„๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๊ฐœ๋ณ„๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค

 

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

 

1) JOIN : ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ฒฐํ•ฉ / ์ง‘ํ•ฉ๊ณผ ์œ ์‚ฌํ•จ!

*๊ต์ง‘ํ•ฉ & ํ•ฉ์ง‘ํ•ฉ 

  • INNER JOIN
  • LEFT (OUTER) JOIN
  • RIGHT (OUTER) JOIN
  • (FULL) OUTER JOIN

 

* ํ•ฉ์ง‘ํ•ฉ

- UNION (ALL)

 

* ์ฐจ์ง‘ํ•ฉ

- MINUS (#orable) = EXCEPT (#SQL Server)

 

* ๊ฒฐํ•ฉ๋˜๋Š” ๋Œ€์ƒ๊ฐ„์˜ ์ผ์น˜ ์ •๋„

- EQUI ์กฐ์ธ <> non-EQUI ์กฐ์ธ

 

* ์กฐ๊ฑด๊ตฌ ์—†๋Š” CROSS JOIN(์ƒํ˜ธ ๊ฒฐํ•ฉ)

 

INNER JOIN

์™„์ „ํ•œ ๊ต์ง‘ํ•ฉ๋งŒ ๊ฐ€์ ธ์˜ฌ ๋–„ INNER JOIN์„ ์‚ฌ์šฉํ•œ๋‹ค

 

INNER JOIN ํ‘œํ˜„ ๋ฐฉ์‹ 2๊ฐ€์ง€

1๋ฒˆ
SELECT A.*, B.์—ฐ๋ น
FROM GENDER A INNER JOIN AGE B
         ON A.ํšŒ์›์ฝ”๋“œ = B.ํšŒ์›์ฝ”๋“œ
WHERE A.์„ฑ๋ณ„ = 'F';

2๋ฒˆ.
SELECT A.*, B.์—ฐ๋ น
FROM GENDER A, AGE B
WHERE A.ํšŒ์›์ฝ”๋“œ = B.ํšŒ์›์ฝ”๋“œ
           AND A.์„ฑ๋ณ„ = 'F';

 

 

LEFT (OUTER) JOIN

 

 

LEFT (OUTER) JOIN ํ‘œํ˜„๋ฐฉ์‹ 2๊ฐ€์ง€

1๋ฒˆ
SELECT A.*, B.์—ฐ๋ น
FROM GENDER A LEFT JOIN AGE B
        ON A.ํšŒ์›์ฝ”๋“œ = B.ํšŒ์›์ฝ”๋“œ;

2๋ฒˆ
SELECT A.*, B.์—ฐ๋ น
FROM GENDER A, AGE B
WHERE A.ํšŒ์›์ฝ”๋“œ = B.ํšŒ์›์ฝ”๋“œ(+);

 

 

RIGHT (OUTER) JOIN

 

 

RIGHT (OUTER) JOIN ํ‘œํ˜„๋ฐฉ์‹ 2๊ฐ€์ง€

1๋ฒˆ
SELECT B.ํšŒ์›์ฝ”๋“œ, ์„ฑ๋ณ„, ์—ฐ๋ น
FROM GENDER A RIGHT JOIN AGE B
          ON A.ํšŒ์›์ฝ”๋“œ = B.ํšŒ์›์ฝ”๋“œ;

2๋ฒˆ
SELECT B.ํšŒ์›์ฝ”๋“œ, ์„ฑ๋ณ„, ์—ฐ๋ น
FROM GENDER A, AGE B
WHERE A.ํšŒ์›์ฝ”๋“œ(+) = B.ํšŒ์›์ฝ”๋“œ;

 

 

(FULL) OUTER JOIN

 

(FULL) OUTTER JOIN  ํ‘œํ˜„๋ฐฉ์‹ 2๊ฐ€์ง€

1๋ฒˆ.
SELECT A.*, B.์—ฐ๋ น
FROM GENDER A FULL OUTER JOIN AGE B
         ON A.ํšŒ์›์ฝ”๋“œ = B.ํšŒ์›์ฝ”๋“œ;

2๋ฒˆ.
SELECT A.*, B.์—ฐ๋ น
FROM GENDER A , AGE B
WHERE A.ํšŒ์›์ฝ”๋“œ(+) = B.ํšŒ์›์ฝ”๋“œ(+);
# Oracle9 ๋ฒ„์ „ ์ดํ›„๋ถ€ํ„ฐ๋Š” ์–‘์ชฝ์˜ (+) ๊ฐ€๋Šฅ

 

 

์˜ˆ์ œ1)

 

 => ์ •๋‹ต!!

 

SELECT *

FROM T1 [ LEFT OUTER JOIN ] T2

ON T1.c2 = T2.c2;

 

 

UNION, UNION ALL - ๋‘ ํ”Œ๋žซํผ ๊ธฐ์—…์ด ํ•ฉ๋ณ‘ํ•  ๋–„!

UNION : ์ค‘๋ณต๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•œ ํ›„ ๋ฐ˜ํ™˜ / UNION ALL : ์ค‘๋ณต๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฐ˜ํ™˜

 

์˜ˆ์ œ2)

=> ์ •๋‹ต!!

A. JOIN

B. UNION

 

 

์˜ˆ์ œ3)

 

์˜ˆ์ œ4)

 

MINUS - A ํšŒ์‚ฌ์—๋งŒ ์žˆ๋Š” ๊ณ ๊ฐ ์ •๋ณด๋ฅผ ์ถ”๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค!!!

EQUI JOIN, non-EQUI JOIN

 

CROSS JOIN - A ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰๊ณผ B ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ์กฐ์ธ(A ๋ ˆ์ฝ”๋“œ ์ˆ˜ * B ๋ ˆ์ฝ”๋“œ ์ˆ˜)

๋‘˜์„ ๊ณฑ์…ˆํ•˜๋Š” ๋Š๋‚Œ!!

 

 

2) ๊ณ„์ธตํ˜• ์กฐํšŒ & ๊ทธ๋ฃน ํ•จ์ˆ˜

 

๊ณ„์ธตํ˜• ์กฐํšŒ : ํŠธ๋ฆฌํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์กฐํšŒ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ

 

>> ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ : LEAF ๋…ธ๋“œ

 

์˜ˆ์ œ 1)

=> ์ •๋‹ต!!  12

 

๊ณ„์ธตํ˜• ์กฐํšŒ ๋ฌธ์ œ๋Š”...

์กฐํšŒ๋ฅผ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žฌ๋ฐฐ์น˜ ๋˜๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”!!

1. ์‹œ์ž‘์  ์žก๊ธฐ

START WITH : ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์ง€์ (ROOT NODE)์„ ์•Œ๋ ค์คŒ, ์—ฌ๊ธฐ์— ์ ํžŒ ์กฐ๊ฑด์— ๋งž๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ROOT(๋ถ€๋ชจ), ํ˜„ ๋ฌธ์ œ์—์„œ๋Š” ์ฒซ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ๊ฐ€ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ROOT NODE

 

 

2. ์žฌ๋ฐฐ์น˜ ๊ธฐ์ค€

CONNECT BY, PRIOR : ๋‹ค์Œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์–ด๋–ค ๊ฒƒ์ด ์˜ฌ์ง€ ์•Œ๋ ค์คŒ
- CONNECT BY PRIOR a = b
- CONNECT BY a = PRIOR b
๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•˜์—ฌ ๊ด€๊ณ„์„ฑ(๊ณ„์ธต ๊ตฌ์กฐ)๋ฅผ ํŒŒ์•…ํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ์žฌ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•จ

1) a์ปฌ๋Ÿผ๊ณผ b์ปฌ๋Ÿผ์ด ๋™์ผํ•œ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฐ„์— ๊ณ„์ธตํ™”๊ฐ€ ๋ฐœ์ƒ(a=b)
2) ์•ž์„ (PRIOR) ๋ ˆ์ฝ”๋“œ์˜ a์ปฌ๋Ÿผ๊ณผ ๋™์ผํ•œ b์ปฟํ—˜์„ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ๋“ค์ด ๋’ค์— ์˜จ๋‹ค
CONNECT BY PRIOR a = b : ์•ž์„  ๋ ˆ์ฝ”๋“œ์˜ a = b์ด๋‹ค

ํ˜„ ๋ฌธ์ œ์—์„œ๋Š” 
1) col1๊ณผ col2๊ฐ€ ๋™์ผํ•œ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฐ„์— ๊ณ„์ธตํ™”๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
2) ใ„ฑ์˜ col1๊ณผ ๋™์ผํ•œ col2๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ ์ˆœ์„œ์— ์˜จ๋‹ค

 

 

๊ทธ๋Ÿผ ใ„ด, ใ„ท ์ค‘์— ๋ญ๊ฐ€ ๋จผ์ € ์˜ฌ์ง€ ์–ด๋–ป๊ฒŒ ์•”?? =? ORDER SIBLINGS BY ๊ฐ€ ํ•ด๊ฒฐํ•ด์คŒ!!

 ORDER SIBLINGS BY col3 
: col3 ๊ธฐ์ค€, ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ ์ˆœ์„œ ๊ฒฐ์ •
>> col3 : [ใ„ด] 12 < [ใ„ท] 13 

 

 

์˜ˆ์ œ 2)

 

GROUP ํ•จ์ˆ˜

GROUP BY ์„ฑ๋ณ„, ์—ฐ๋ น 1. ์„ฑ๋ณ„ * ์—ฐ๋ น ๋ณ„ ์†Œ๊ณ„
GROUP BY
GROUPING SETS(
์„ฑ๋ณ„, ์—ฐ๋ น)
1. ์„ฑ๋ณ„ ๋ณ„ ์†Œ๊ณ„
2. ์—ฐ๋ น ๋ณ„ ์†Œ๊ณ„
* ๊ด„ํ˜ธ ๋ฌถ์€ ์ง‘ํ•ฉ๋ณ„ ์ง‘๊ณ„ ๊ฐ€๋Šฅ
GROUP BY
ROLLUP(์„ฑ๋ณ„, ์—ฐ๋ น)
1. ์„ฑ๋ณ„ * ์—ฐ๋ น ๋ณ„ ์†Œ๊ณ„
2. ์„ฑ๋ณ„ ๋ณ„ ์†Œ๊ณ„
3. ์ „์ฒด ์ง‘๊ณ„
GROUP BY
CUBE(์„ฑ๋ณ„, ์—ฐ๋ น)
1. ์„ฑ๋ณ„ * ์—ฐ๋ น ๋ณ„ ์†Œ๊ณ„
2. ์„ฑ๋ณ„ ๋ณ„ ์†Œ๊ณ„
3. ์—ฐ๋ น ๋ณ„ ์†Œ๊ณ„
4. ์ „์ฒด ์ง‘๊ณ„
* ๊ทธ๋ฃนํ™”๋  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์ƒ์„ฑ

 

ex) QUERY ์‚ฌ๋ก€

SELECT ์„ฑ๋ณ„, ์—ฐ๋ น, SUM(๊ฒฐ์ œ๊ธˆ์•ก)

FROM ๊ฒฐ์ œ

GROUP BY GROUPING SETS(์„ฑ๋ณ„, ์—ฐ๋ น๋Œ€);

 

์™ธ์šฐ๊ธฐ!!!

  • Grouping Sets (set1, set2) :๊ทธ๋ฃนํ•‘ ์„ธํŠธ ์„ธํŠธ(UNION ALL๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ)
  • Rollup(์•ž, ๋’ค) : ๋กค์—… ์••๋’ค
  • CUBE(๋ชจ๋“ ๊ฒฝ์šฐ) : ํ๋ธŒ

 

์˜ˆ์ œ 3)

 

=> ์ •๋‹ต!! 2๋ฒˆ

CUBE๋Š” ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์˜ ๊ฒฝ์šฐ

 

์˜ˆ์ œ 4)

=> ์ •๋‹ต!! 1, 2๋ฒˆ

1๋ฒˆ => ROLLUP์— ํ•ด๋‹นํ•˜๋Š” ์„ค๋ช…

2๋ฒˆ => ์ง‘๊ณ„ ๋Œ€์ƒ ์ปฌ๋Ÿผ ๊ฐ’์€ NULL์ด ์•„๋‹ˆ๋ผ ๊ธฐ์ค€์ด ๋˜๋Š” ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค

 

 

3) TOP(N) ์ฟผ๋ฆฌ

: ํ…Œ์ด๋ธ”์—์„œ N ๊ฐœ์˜ ํ–‰๋งŒ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ๋‹ค!

 

1. ORACLE ๊ธฐ์ค€ : ROWNUM ์Šˆ๋„ ์นผ๋Ÿผ
 => ์ปฌ๋Ÿผ๊ณผ ๋น„์Šทํ•œ ์„ฑ๊ฒฉ์˜ Pseudo Column ์œผ๋กœ์„œ, SQL ์ฒ˜๋ฆฌ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์˜ ๊ฐ ํ–‰์— ๋Œ€ํ•ด ์ž„์‹œ์ ์œผ๋กœ ๋ถ€์—ฌ๋˜๋Š” ์ผ๋ จ๋ฒˆํ˜ธ

SELECT *
FROM C_INFO
WHERE ROWNUM <= 100;

** (์˜ค๋ฅ˜) C_INFO ํ…Œ์ด๋ธ”์—์„œ ๋‚˜์ด๊ฐ€ ์–ด๋ฆฐ 100๋ช…์„ ์กฐํšŒํ•˜๋ ค๋ฉด?
SELECT *
FROM C_INFO
WHERE ROWNUM <= 100
ORDER BY AGE;
=> C_INFO์—์„œ ๋ฌด์ž‘์œ„๋กœ ์ถ”์ถœ๋œ 100๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ AGE ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค

** (์ •๋‹ต) C_INFO ํ…Œ์ด๋ธ”์—์„œ ๋‚˜์ด๊ฐ€ ์–ด๋ฆฐ 100๋ช…์„ ์กฐํšŒํ•˜๋ ค๋ฉด?
=> ์ธ๋ผ์ธ ๋ทฐ์—์„œ ๋จผ์ € ์ •๋ ฌํ•˜๊ธฐ!
SELECT *
FROM (SELECT *
            FROM C_INFO
            ORDER BY AGE)
WHERE ROWNUM <= 100;

 

 

2. SQL SERVER ๊ธฐ์ค€ : TOP ์ ˆ

** C_INFO ํ…Œ์ด๋ธ”์—์„œ ๋‚˜์ด๊ฐ€ ์–ด๋ฅธ 100๋ช…์„ ์กฐํšŒํ•˜๋ ค๋ฉด?
SELECT TOP(100)
              NAME, AGE
FROM C_INFO
ORDER BY AGE;

** WITH TIES
=> TOP N์˜ ๋งˆ์ง€๋ง‰ ํ–‰๊ณผ ๋™์ผํ•œ ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€ ํ–‰์ด ์ถœ๋ ฅ๋จ
SELECT TOP(2) WITH TIES
               NAME, AGE
FROM C_INFO
ORDER BY AGE;

=> C_INFO ํ…Œ์ด๋ธ”์—์„œ AGE๊ฐ€ ๋‚ฎ์€ 2๋ช…์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š”๋ฐ, ๊ฐ™์€ AGE์ธ ๊ณ ๊ฐ์ด ์ž‡์œผ๋ฉด ๊ฐ™์ด ์ถœ๋ ฅํ•œ๋‹ค
=> ORDER BY๊ฐ€ ์ง€์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

 

3. ROW LIMITING ์ ˆ(ANSI ํ‘œ์ค€ SQL)

** C_INFO ํ…Œ์ด๋ธ”์—์„œ ๋‚˜์ด๊ฐ€ ์–ด๋ฆฐ 100๋ช…์„ ์กฐํšŒํ•˜๋ ค๋ฉด?
SELECT NAME, AGE
FROM C_INFO
ORDER BY AGE FETCH FIRST 100 ROWS ONLY;

* FETCH : ๋ฐ˜ํ™˜ํ•  ๊ฒƒ ์ง€์ •ํ•ด์คŒ
* ONLY : ์ง€์ •ํ•œ ๋งŒํผ(with ties ๋งˆ์ง€๋ง‰ํ–‰ ๋™์ˆœ์œ„ ํฌํ•จ)

- ORACLE 
SELECT *
FROM (SELECT *
             FROM C_INFO
             ORDER BY AGE )
WHERE ROWNUM <= 100;

- SQL SERVER
SELECT TOP(100)
               NAME, AGE
FROM C_INFO
ORDER BY AGE;

**์ƒ์œ„ 100๊ฐœ ํ–‰์„ ๊ฑด๋„ˆ๋›ด ์ดํ›„์˜ ์ „์ฒด ํ–‰ ๋ฐ˜ํ™˜ํ•˜๋ ค๋ฉด?
SELECT NAME, AGE FROM C_INFO ORDER BY AGE OFFSET 100 ROWS;

* OFFSET : ๊ฑด๋„ˆ๋›ธ ๊ฒƒ ์ง€์ •ํ•ด์คŒ

 

 

3. ์œˆ๋„์šฐ ํ•จ์ˆ˜ & ํŒŒํ‹ฐ์…˜

 

WINDOW ํ•จ์ˆ˜

: ๋ ˆ์ฝ”๋“œ(ํ–‰) ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์‰ฝ๊ฒŒ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜

๋งค์žฅ ์ฝ”๋“œ ์ง€์—ญ๋ช… ๋ฉ”๋‰ด๋ช… ํŒ๋งค๋Ÿ‰ ํŒ๋งค์ˆœ์œ„
101 ์„œ์šธ ์—ฐ์–ด์Šค์‹œ 500 1
101 ์„œ์šธ ์ฐธ์น˜์Šค์‹œ 400 2
101 ์„œ์šธ ์™€๊ทœ 300 3
102 ๋ถ€์‚ฐ ์—ฐ์–ด์Šค์‹œ 600 1
102 ๋ถ€์‚ฐ ํŠ€๊น€ 300 2

 

SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ( [PARTITON BY ์ปฌ๋Ÿผ๋ช…] [ORDER BY ์ปฌ๋Ÿผ๋ช…] [WINDOWING] ) FROM ํ…Œ์ด๋ธ”๋ช…;

- WINDOW_FUNCTION : ์œˆ๋„์šฐ ํ•จ์ˆ˜
- ARGUMENTS : ์ธ์ˆ˜(์ปฌ๋Ÿผ๋ช… ๋“ฑ ํ•จ์ˆ˜์˜ ์ž‘์—…์ด ์ด๋ค„์ง€๋Š” ๋Œ€์ƒ)
- PARTITION BY : ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋“ค์„ ์ชผ๊ฐœ๋Š” ๊ธฐ์ค€
- ORDER BY : ์ชผ๊ฐœ์ง„ ๋ ˆ์ฝ”๋“œ๋“ค ๋‚ด์—์„œ ํ˜น์€ ์ „์ฒด ํ…Œ์ด๋ธ”์—์„œ ๋ ˆ์ฝ”๋“œ๋“ค์„ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ• ์ง€
- WINDOWING : ํ•จ์ˆ˜์˜ ์—ฐ์‚ฐ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ ˆ์ฝ”๋“œ์˜ ๋ฒ”์œ„๋ฅผ ์ •ํ•จ

 

* WINDOW_FUNCTION ์ข…๋ฅ˜

- ๊ทธ๋ฃน ๋‚ด ์ง‘๊ณ„ ํ•จ์ˆ˜ : COUNT, SUM, MIN, MAX, AVG๋“ฑ

- ๊ทธ๋ฃน ๋‚ด ์ˆœ์œ„(RANK) ํ•จ์ˆ˜

- ๊ทธ๋ฃน ๋‚ด ๋น„์œจ ๊ด€๋ จ ํ•จ์ˆ˜

- ๊ทธ๋ฃน ๋‚ด ํ–‰ ์ˆœ์„œ ํ•จ์ˆ˜

 

 

WINDOW ํ•จ์ˆ˜ - ๊ทธ๋ฃน ๋‚ด RANK ํ•จ์ˆ˜

RANK - ๋™์ผํ•œ ์ˆœ์œ„์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค
- ๋™์ผํ•œ ์ˆœ์œ„๋ฅผ ํ•˜๋‚˜์˜ ๊ฑด์ˆ˜๋กœ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๋Š”๋‹ค (1 / 2, 2 / 4)
DENSE_RANK - ๋™์ผํ•œ ์ˆœ์œ„์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค
- ๋™์ผํ•œ ์ˆœ์œ„๋Š” ํ•˜๋‚˜์˜ ๊ฑด์ˆ˜๋กœ ๊ณ„์‚ฐํ•œ๋‹ค (1 / 2, 2 / 3)
ROW_NUMBER - ๋™์ผํ•œ ์ˆœ์œ„์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค (1 / 2 / 3 / 4 )

**RANK์™€ DENSE_RANK ์ฐจ์ด ๋น„๊ต!!

 

์˜ˆ์‹œ1)

 

=> ์ •๋‹ต!! 

 

A : DENSE_RANK

B : RANK

C : ROW_NUMBER

 

์˜ˆ์‹œ2) 

 

=> ์ •๋‹ต!!  1๋ฒˆ (์—ฌํƒ€ SQL๋ฌธ๊ณผ ๋™์ผํ•˜๊ฒŒ ORDER BY๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅ / ์ˆœ์œ„๋กœ ์ž๋™์œผ๋กœ ์ •๋ ฌ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹˜)

 

์˜ˆ์‹œ 3)

 

=> ์ •๋‹ต!!

 

SELECT ๋งค์žฅ ์ฝ”๋“œ, ์ง€์—ญ๋ช…, ๋ฉ”๋‰ด๋ช…, ํŒ๋งค๋Ÿ‰

                , DENSE_RANK () OVER (PARTITION BY ์ง€์—ญ๋ช… ORDER BY ํŒ๋งค๋Ÿ‰ DESC) AS

            ํŒ๋งค์ˆœ์œ„

FROM ํŒ๋งค

 

 

 Window ํ•จ์ˆ˜ - ๊ทธ๋ฃน ๋‚ด ๋น„์œจ ํ•จ์ˆ˜

PERCENT_RANK - ๊ฐ’์ด ์•„๋‹Œ, ์ˆœ์„œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ, ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ์˜ ์ˆœ์„œ๋ณ„ ๋ฐฑ๋ถ„์œจ์„ ์กฐํšŒํ•จ
NTILE(n) - ํŒŒํ‹ฐ์…˜๋ณ„๋กœ ์ „์ฒด ๊ฑด์ˆ˜๋ฅผ n๋“ฑ๋ถ„ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. n=4์ด๋ฉด 4๋“ฑ๋ถ„ํ•œ ๊ฒƒ ๋‚ด์—์„œ ๋ช‡์ธ์ง€ ์กฐํšŒ
CUME_DIST - ํŒŒํ‹ฐ์…˜ ๋‚ด ์ „์ฒด์—์„œ ํ˜„์žฌ ํ–‰์˜ ๊ฐ’ ์ดํ•˜์ธ ๋ ˆ์ฝ”๋“œ ๊ฑด์ˆ˜์— ๋Œ€ํ•ด ๋ˆ„์  ๋ฐฑ๋ถ„์œจ์„ ์กฐํšŒ
- ๋ˆ„์  ๋ถ„ํฌ ์ƒ์— 0~1 ๊ฐ’์„ ๊ฐ€์ง

 

 

WIndow ํ•จ์ˆ˜ - ๊ทธ๋ฃน ๋‚ด ํ–‰ ์ˆœ์„œ ํ•จ์ˆ˜

FIRST_VALUE - ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ ๊ฐ€์žฅ ์ฒ˜์Œ ๋‚˜์˜ค๋Š” ๊ฐ’ ๋ฐ˜ํ™˜
- MIN๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ
LAST_VALUE - ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋‚˜์˜ค๋Š” ๊ฐ’ ๋ฐ˜ํ™˜
- MAX์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ
LAG(์ปฌ๋Ÿผ๋ช…, ๋ ˆ์ฝ”๋“œ ์œ„์น˜ ์ฐจ์ด๊ฐ’) - ์ด์ „ ํ–‰์„ ๊ฐ€์ ธ์˜จ๋‹ค
LEAD(์ปฌ๋Ÿผ๋ช…, ๋ ˆ์ฝ”๋“œ ์œ„์น˜ ์ฐจ์ด๊ฐ’,  null์ผ ๊ฒฝ์šฐ ๋Œ€์ฒด๊ฐ’) - ๋‹ค์Œ(ํŠน์ • ์œ„์น˜์˜) ํ–‰์„ ๊ฐ€์ ธ์˜จ๋‹ค
- default๋Š” 1์ด๋‹ค

 

์˜ˆ์ œ4)

 

 

=> ์ •๋‹ต (ใ„ฑ : E,  ใ„ด : E)

 

 

Window ํ•จ์ˆ˜ ์ค‘ WINDOWING

SELECT WINDOW _FUNCTION (ARGUMENTS) OVER ( [PARTITION BY ์ปฌ๋Ÿผ๋ช…] [ORDER BY ์ปฌ๋Ÿผ๋ช…] [WINDOWING] ) FROM ํ…Œ์ด๋ธ”๋ช…; 

 

- WINDOWING : ํ•จ์ˆ˜์˜ ์—ฐ์‚ฐ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ ˆ์ฝ”๋“œ์˜ ๋ฒ”์œ„๋ฅผ ์ •ํ•จ

 

RANGE ex ) RANGE BETWEEN 100 AND 200
๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด์ค„ ๋•Œ ์‚ฌ์šฉ
BETWEEN a AND b a๋ถ€ํ„ฐ b๊นŒ์ง€ ์œˆ๋„์šฐ๊ฐ€ ์ ์šฉ๋จ
UNBOUNDED PRECEDING ์œˆ๋„์šฐ์˜ ์‹œ์ž‘ ์œ„์น˜ = ์ฒซ ๋ฒˆ์งธ ํ–‰
UNBOUNDED FOLLOWING ์œˆ๋„์šฐ์˜ ๋งˆ์ง€๋ง‰ ์œ„์น˜ = ๋งˆ์ง€๋ง‰ ํ–‰
CURRENT ROW ์œˆ๋„์šฐ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ํ˜„์žฌ ํ–‰

 

์˜ˆ์ œ5)

 

=> ์ •๋‹ต!! UNBOUNDED PRECEDING

 

 

ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…˜

 

- ๋Œ€์šฉ๋Ÿ‰์˜ ํ…Œ์ด๋ธ”์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋ถ„๋ฆฌํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๊ฒƒ

๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌ๋œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์ž…๋ ฅ / ์ˆ˜์ • / ์‚ญ์ œ / ์กฐํšŒ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ณ , ๋…๋ฆฝ์  ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ

์กฐํšŒ์˜ ๋ฒ”์œ„๋ฅผ ์ค„์ด๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์–ด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋จ

** ๋ง‰ ์—„์ฒญ ์ค‘์š”ํ•˜์ง„ ์•Š์Œ;;

 

RANGE PARTITION ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒŒํ‹ฐ์…˜์„ ๋‚˜๋ˆ  ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•
ex) ๋งค์ถœ์•ก์— 50000 ์ด์ƒ์ธ ๋ ˆ์ฝ”๋“œ์™€ ๋ฏธ๋งŒ์ธ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ณ„๋„๋กœ ์ €์žฅ
LIST PARTITION ํŠน์ • ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• 
ex) ํŠน์ • ๊ฐ’์ด 100์ผ ๋•Œ์™€ 250์ผ ๋•Œ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐํŒŒ์ผ์— ์ €์žฅ
HASH PARTITION ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ์ž์ฒด์ ์œผ๋กœ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ถ„ํ• ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹

 

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

SQL์˜ ์ •์˜

 

SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์—‘์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ,

๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  => DDL

์กฐ์ž‘ํ•˜๋ฉฐ => DML

์กฐ์ž‘ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๊ณ  => TCL

์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œ์–ดํ•˜๋Š” ์ฒ˜๋ฆฌ๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค => DCL

 

 

1) DCL : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌ / ํšŒ์ˆ˜ํ•˜๋Š” ์–ธ์–ด

 

์ถœ์ œ ํฌ์ธํŠธ 1

GRANT :๊ถŒํ•œ์„ ์คŒ

REVOKE : ๊ถŒํ•œ์„ ํšŒ์ˆ˜

**์ถœ์ œ ๋นˆ๋„๊ฐ€ ๋‚ฎ์Œ...

 

์ถœ์ œ ํฌ์ธํŠธ 2

 

WITH GRANT์˜ ๊ฒฝ์šฐ : ์—„๋งˆ๊ฐ€ ํšŒ์ˆ˜ ๋˜๋ฉด ์ž์‹๋„ ํšŒ์ˆ˜๋œ๋‹ค!!(A -> B, B -> C, B๊ฐ€ ํ‡ด์‚ฌ ํ•˜์—ฌ ๊ถŒํ•œ์„ ํšŒ์ˆ˜๋‹นํ•˜๋ฉด C๋„ ๊ฐ™์ด ํšŒ์ˆ˜ํ•˜๋Š” ๊ฒฝ์šฐ)

WITH ADMIN์˜ ๊ฒฝ์šฐ : ์—„๋งˆ๊ฐ€ ํšŒ์ˆ˜ ๋‹นํ•˜๋”๋ผ๋„ ์ž์‹์€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ

 

 

์˜ˆ์‹œ ๋ฌธ์ œ1)

 

=> ์ •๋‹ต!! GRANT SELECT, UPDATE ON hoho_qualification.data(ํ…Œ์ด๋ธ” ๋ช…) TO hoho(์œ ์ €, ๊ถŒํ•œ์„ ๋ถ€์—ฌ ๋ฐ›๋Š” ์‚ฌ๋žŒ);

 

GRANT ๊ถŒํ•œ(SELECT, UPDATE๋“ฑ๋“ฑ...) ON ํ…Œ์ด๋ธ”๋ช… TO ์œ ์ €๋ช…;

 

 

์˜ˆ์‹œ ๋ฌธ์ œ 2) 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์—์„œ ๋งŽ์€ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์–ด๋ ค์›€์„ ํ•ด์†Œํ•˜๊ณ ์ž ๋‹ค์–‘ํ•œ ๊ถŒํ•œ์„ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ถŒํ•œ์˜ ๊ทธ๋ฃน(๋ช…๋ น์–ด)์„ ์นญํ•˜๋Š” ๋ง์€?

 

=> ์ •๋‹ต!!  ROLE

 

* ๋‹ค์–‘ํ•œ ๊ถŒํ•œ์„ ๋‹ค์–‘ํ•œ ์œ ์ €๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด์ด๋‹ค
* ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋™์ผํ•œ ROLE ๋ถ€์—ฌ ๊ฐ€๋Šฅํ•˜๋‹ค
* ROLE์˜ ์ƒ์„ฑ์€ [ CREATE ROLE ] ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์œ ์ €๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

2) DDL : ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด

 

 

1. CREATE : ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ƒ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ์ƒ์„ฑ

CREATE TABLE C_INFO(ํ…Œ์ด๋ธ” ๋ช…) {
    ์ปฌ๋Ÿผ๋ช…(์†์„ฑ๋ช…)  /  ๋ฐ์ดํ„ฐ์˜ ์œ ํ˜•  /  ํฌ๊ธฐ
    ์ด๋ฆ„                       varchar2(10),
    ์ƒ๋…„                       number(4) default 9999,
    phone                    varchar2(15) not null,
    ์ฒซ๋ฐฉ๋ฌธ์ผ               date,
    ๊ณ ๊ฐ ๋ฒˆํ˜ธ              varchar2(10) primary key
);

=> C_INFO๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค

 

* ์ปฌ๋Ÿผ๋ช…(์†์„ฑ๋ช…) : ์˜๋ฌธ, ํ•œ๊ธ€, ์ˆซ์ž ๋ชจ๋‘ ๊ฐ€๋Šฅ(์‹œ์ž‘๋งŒ ๋ฌธ์ž๋กœ) ex) h10(o), 10h(x)

* ๋ฐ์ดํ„ฐ ์œ ํ˜•(data type)

  • char : ๊ณ ์ •๊ธธ์ด ๋ฌธ์ž์—ด(ํ• ๋‹น๋œ ๊ธธ์ด๋งŒํผ ๋ฌธ์ž ์ฑ„์›€)
  • varchar2 : ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด
  • number :  ์ˆซ์žํ˜•
  • date : ๋‚ ์งœํ˜•

* ์ œ์•ฝ ์กฐ๊ฑด(constraint)

  • default : ๊ธฐ๋ณธ๊ฐ’ ์ง€์ •
  • not null : null ์ž…๋ ฅ ๋ถˆ๊ฐ€
  • primary key : ๊ธฐ๋ณธํ‚ค ์ง€์ •(PK๋Š” not null, PK๋Š” unique ํ•œ ๊ฐ’, ํ…Œ์ด๋ธ” ๋‚ด ์ค‘๋ณต ์—†์Œ)
  • foreign key : ์™ธ๋ž˜ํ‚ค ์ง€์ •

 

์˜ˆ์‹œ ๋ฌธ์ œ1)

 

 

=> ์ •๋‹ต!! ์„œ๋กœ ๊ฐ™๋‹ค.

 

ํ•˜์ง€๋งŒ SELECT count(๊ฐ€๊ฒฉ) FROM MENU์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅด๋‹ค!!!!!!!!!!

- ๊ฐ€๊ฒฉ ์ปฌ๋Ÿผ์€ NOT NULL ์ œ์•ฝ์กฐ๊ฑด์ด ๋ถ™์ง€๋„ ์•Š์•˜๊ณ , primary key๋„ ์•„๋‹ˆ๋‹ค

- ์‹ค์ œ๋กœ ์‚ฝ์ž…๋œ ํŠœํ”Œ ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐ€๊ฒฉ ๊ฐ’์ด Null์ด๋‹ค

- count(*)๋Š” 4๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ . count(๊ฐ€๊ฒฉ)์€ 3์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

* NULL์— ๋Œ€ํ•ด์„œ ๐Ÿ˜‹

1. NULL์€ ๋ชจ๋ฅด๋Š” ๊ฐ’์„ ์ƒ์ง•ํ•˜๊ณ , ๊ฐ’์ด ์—†์Œ(๋ถ€์žฌ)๋ฅผ ์˜๋ฏธํ•จ
2. NULL๊ณผ์˜ ์‚ฌ์น™์—ฐ์‚ฐ(+, -, /, *), NULL ๊ณผ์˜ ๋น„๊ต์—ฐ์‚ฐ(=, <, > ๋“ฑ) ๊ฒฐ๊ณผ๋Š” ๋Š˜ NULL(์•Œ ์ˆ˜ ์—†์Œ)์ด๋‹ค
3. ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด NULL ์ธ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด '=' ๊ฐ€ ์•„๋‹Œ 'IS' ํ˜น์€ 'IS NOT'๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
4. NULL์€ ์ˆซ์ž 0์ด๋‚˜ ๊ณต๋ฐฑ๋ฌธ์ž(' ') ์™€ ๋™์ผํ•˜์ง€ ์•Š์Œ(์–˜๋„ค๋Š” ๊ฐ’์ด ์žˆ์Œ, NULL์€ ์•„์˜ˆ ๊ฐ’์ด ์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

 

 

2. ALTER : ํ…Œ์ด๋ธ”๊ณผ ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ์ด๋ฆ„ ๋ฐ ์†์„ฑ ๋ณ€๊ฒฝ, ์ถ”๊ฐ€/์‚ญ์ œ ๋“ฑ ๊ตฌ์กฐ ์ˆ˜์ •์„ ์œ„ํ•ด ์‚ฌ์šฉ!

 

ํ…Œ์ด๋ธ” ๋ช… ๋ณ€๊ฒฝ : ALTER TABLE MENU RENAME (TO) ho_MENU;
์ปฌ๋Ÿผ ๋ช… ๋ณ€๊ฒฝ :    ALTER  TABLE MENU RENAME COLUMN phone TO ์ „ํ™”๋ฒˆํ˜ธ(์ˆ˜์ • ๊ฒฐ๊ณผ);

!! : ์ˆ˜์ •ํ• ๊ฒŒ์š” / ํ…Œ์ด๋ธ”์—์„œ / ์ด๋ฆ„ ๋‹ค์‹œ / ์–ด๋–ค ์ปฌ๋Ÿผ / ์ด๊ฑธ๋กœ

์ปฌ๋Ÿผ ์†์„ฑ ๋ณ€๊ฒฝ : ALTER TABLE_MENU MODIFY (์ด๋ฆ„ varchar(20) not null);
์ปฌ๋Ÿผ ์ถ”๊ฐ€ : ALTER TABLE_MENU ADD( ๊ฑฐ์ฃผ ์ง€์—ญ varchar2(10));
์ปฌ๋Ÿผ ์‚ญ์ œ  : ALTEr TABLE_MENU DROP COLUMN ์ด๋ฆ„;
์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€ / ์‚ญ์ œ : ALTER TABLE_MENU ADD CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช… ์ œ์•ฝ์กฐ๊ฑด(๋Œ€์ƒ);
                                                                          DROP CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…;

 

ALTER ์ƒ๋žตํ•˜์—ฌ์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์š” ^^

 

 

++) MODIFY์™€ ADD CONSTRAINT ๋น„๊ต

 

์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€ / ์‚ญ์ œ  : ALTER TABLE MENU ADD CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช… ์ œ์•ฝ ์กฐ๊ฑด (๋Œ€์ƒ);

์ปฌ๋Ÿผ ์†์„ฑ ๋ณ€๊ฒฝ : ALTER TABLE MENU MODIFY ( ์ด๋ฆ„ varchar(20) not null );

 

๋Œ€ํ‘œ ์ œ์•ฝ์กฐ๊ฑด 5๊ฐ€์ง€(NOT NULL, UNIQUE, Primary Key, Foreign Key, CHECK)๋ฅผ ์ˆ˜์ •์„ ํ†ตํ•ด ๋ถ€์—ฌํ•  ๊ฒฝ์šฐ
5๊ฐ€์ง€ ์ค‘ NOT NULL๋งŒ MODIFY๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ ๋ฐ–์˜ ์ œ์•ฝ์กฐ๊ฑด๋“ค์€ ๋ชจ๋‘ ADD๋ฅผ ์‚ฌ์šฉ

 

 

  • NOT NULL : ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๊ฐ’์—๋Š” NULL์ด ํฌํ•จ๋  ์ˆ˜ ์—†์Œ(๊ฐ’์€ ๋ชจ๋‘ ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ ํ•จ)
  • UNIQUE : ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๋‚ด์—์„œ๋Š” ๊ฐ’์ด ์ค‘๋ณต๋  ์ˆ˜ ์—†์Œ ex) ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD UNIQUE (์ปฌ๋Ÿผ๋ช…);
  • PRIMARY KEY : NOt NULL + UNIQUE 
    ex) ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD PRIMARY KEY (์ปฌ๋Ÿผ๋ช…);
          ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD CONSTRAINT PK_RIDING PRIMARY KET (์ปฌ๋Ÿผ๋ช…1, ์ปฌ๋Ÿผ๋ช…2);
  • FOREIGN KEY : ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ฐ’์„ ์ฐธ์กฐํ•˜์—ฌ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋ผ๋Š” ์ œ์•ฝ
    ex) ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD FOREIGN KEY (์ปฌ๋Ÿผ๋ช…) REFERENCES ๋ถ€๋ชจํ…Œ์ด๋ธ”๋ช… (์ปฌ๋Ÿผ๋ช…);
  • CHECK : ํŠน์ • ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ๊ฐ’๋งŒ์„ ์ปฌ๋Ÿผ์— ๋„ฃ์–ด์ค˜์•ผ ํ•จ
    ex) ALTER TABLE RIDING ADD CONSTRAINT RD_CHECK CHECK (ride_date > '2021-12-10');

 

์˜ˆ์‹œ ๋ฌธ์ œ1)

 

=> ์ •๋‹ต!! ALTER TABLE RIDING MODIFY ( phone varchar(15) NOT NULL );

 ** ๋Œ€ํ‘œ ์ œ์•ฝ์กฐ๊ฑด 5๊ฐ€์ง€ ์ค‘ NOT NULL๋งŒ MODIFY ๋ฅผ ์‚ฌ์šฉ

 

 

3. DROP : ํ…Œ์ด๋ธ” ๋ฐ ์ปฌ๋Ÿผ ์‚ญ์ œ 

 

์ปฌ๋Ÿผ ์‚ญ์ œ : ALTER TABLE MENU DROP COLUMN ์ด๋ฆ„;
ํ…Œ์ด๋ธ” ์‚ญ์ œ : DROP TABLE MENU;

**์œ ์˜
DROP TABLE MENU CASCADE CONSTRAINT;
* ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ž˜ํ‚ค(FK)๋กœ ์ฐธ์กฐํ•œ ์ œ์•ฝ์‚ฌํ•ญ๋„ ๋ชจ๋‘ ์‚ญ์ œ
* Oracle์—๋งŒ ์žˆ๋Š” ์˜ต์…˜, SQL Server์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Œ
* FK ์ œ์•ฝ์กฐ๊ฑด๊ณผ ์ฐธ์กฐํ…Œ์ด๋ธ” ๋จผ์ € ์‚ญ์ œํ•˜๊ณ , ํ•ด๋‹น ํ…Œ์ด๋ธ”์„ ์‚ญ์ œ

 

 

DROP VS TRUNCATE ๋น„๊ตํ•˜๊ธฐ

 

1) DROP(ํ…Œ์ด๋ธ” ์‚ญ์ œ) : DROP TABLE MENU;

  • ํ…Œ์ด๋ธ” ๊ด€๋ จํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์‚ญ์ œ๋œ๋‹ค. ๊ตฌ์กฐ๋„, ๋ฐ์ดํ„ฐ๋„!
  • ํ…Œ์ด๋ธ” ์ •์˜๋ฅผ ์™„์ „ ์‚ญ์ œํ•จ
  • ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ–ˆ๋˜ ๋ชจ๋“  ์ €์žฅ๊ณต๊ฐ„์ด Release

 

2) TRUNCATE(ํ…Œ์ด๋ธ” ์ดˆ๊ธฐํ™”) : TRUNCATE TABLE MENU;

  • ํ…Œ์ด๋ธ” ์† ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œ๋˜๊ณ  ๊ตฌ์กฐ๋Š” ์‚ด์•„์žˆ๋‹ค
  • ํ…Œ์ด๋ธ”์„ ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ ๋‹ค
  • ํ…Œ์ด๋ธ” ์ตœ์ดˆ ํ˜•์„ฑ ์‹œ ์‚ฌ์šฉํ–ˆ๋˜ ์ €์žฅ๊ณต๊ฐ„๋งŒ ๋‚จ๊ธฐ๊ณ  Release

 

์˜ˆ์‹œ ๋ฌธ์ œ1)

 

=> ์ •๋‹ต!!!

A : DROP TABLE F_INFO;

B : TRUNCATE TABLE F_INFO;

 

 

3) DML : ์ •์˜๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜, ์ˆ˜์ •, ์‚ญ์ œ ๋ฐ ์กฐํšŒ(SELECT) ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด๋‹ค.

 

์˜ˆ์‹œ ๋ฌธ์ œ1)

 

 

=> ์ •๋‹ต!!  3, 4
3 : not null ๊ฐ’์ด ๋ฉ”๋‰ด๋ช…์— ๋Œ€ํ•œ insert๊ฐ€ ์ด๋ค„์ง€์ง€ ์•Š์œผ๋ฏ€๋กœ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

4 : ์ปฌ๋Ÿผ๋ช… ์ง€์ •์ด ์ด๋ค„์ง€์ง€ ์•Š์€ ์ƒํƒœ์—์„œ๋Š” ์ „์ฒด ์ปฌ๋Ÿผ์— ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผ ํ•จ => VALUES์˜ ๊ฐ’์ด 4๊ฐœ๊ฐ€ ์™€์•ผ ํ•œ๋‹ค!! ('102', '์™€๊ทœ', 30000, )

 

* ์ˆซ์ž๋Š” varchar2 ์™€ char์— ์ž…๋ ฅ ๊ฐ€๋Šฅ

* DELETE (FROM) MENU : FROM ์ƒ๋žตํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค

 

 

์˜ˆ์‹œ ๋ฌธ์ œ2)

 

 

=> ์ •๋‹ต!!  2

 

DELETE

* WHERE ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ง€์šธ ์ˆ˜ ์žˆ๋‹ค

* ์‚ญ์ œํ•œ ๊ฒƒ์€ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.(DB์— ๋ฐ˜์˜๋˜๊ธฐ ์ „๊นŒ์ง€๋Š”)

* ๋ฐ์ดํ„ฐ๋Š” ์ง€์›Œ์ง€์ง€๋งŒ ํ…Œ์ด๋ธ” ์šฉ๋Ÿ‰์€ ์ค„์–ด๋“ค์ง€ ์•Š๋Š”๋‹ค

 

 

4) TCL : ํŠธ๋žœ์žญ์…˜์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด

 

* ํŠธ๋žœ์žญ์…˜(Transaction)์ด๋ž€..?

  •  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„
  • ๊ณ ๋ฆฝ์„ฑ, ์›์ž์„ฑ, ์ง€์†์„ฑ, ์ผ๊ด€์„ฑ์˜ ํŠน์ง•์„ ๊ฐ€์ง
  1. ๊ณ ๋ฆฝ์„ฑ :  ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์˜ํ–ฅ์„ ๋ฐ›์•„ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด์„  ์•ˆ๋œ๋‹ค
  2. ์›์ž์„ฑ : ํŠธ๋žœ์žญ์…˜์—์„œ ์ •์˜๋œ ์—ฐ์‚ฐ์€ ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋˜์ง€ ์•„๋‹ˆ๋ฉด ์ „ํ˜€ ์‹คํ–‰๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์žˆ์–ด์•ผ ํ•œ๋‹ค
  3. ์ง€์†์„ฑ : ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์ด ๊ฐฑ์‹ ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์€ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค
  4. ์ผ๊ด€์„ฑ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์šฉ์— ์ž˜๋ชป๋œ ์ ์ด ์—†๋‹ค๋ฉด ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ํ›„์—๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์— ์ž˜๋ชป์ด ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.

COMMIT ์ดํ›„ : ์ด์ „ ๋ฐ์ดํ„ฐ๋Š” ์˜์›ํžˆ ์‚ฌ๋ผ์ง€๊ณ  ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋Š” DB์— ๋ฐ˜์˜๋œ๋‹ค

 

 

์˜ˆ์‹œ ๋ฌธ์ œ1)

 

=> ์ •๋‹ต!! 250 (ROLLBACK ํ• ๋–„๋Š” ๊ฐ€์žฅ ์ตœ์‹ ์˜ SavePoint๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค!!)

 

 

์˜ˆ์‹œ ๋ฌธ์ œ2)

 

=> ์ •๋‹ต!!  10, 50, 30

 

 

COMMIT๊ณผ ROLLBACK ํšจ๊ณผ

 

  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์˜๊ตฌ์ ์ธ ๋ณ€๊ฒฝ ์ „ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ณ€๋™์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค
  • ๋…ผ๋ฆฌ์  ์—ฐ๊ด€์„ฑ ์žˆ๋Š” ์ž‘์—…์„ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค

**๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ด๋ž€?

: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ, ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ๋ณด์ฆํ•˜๋Š” ๊ฒƒ

- ์ •ํ™•์„ฑ : ์ค‘๋ณต์ด๋‚˜ ๋ˆ„๋ฝ์ด ์—†๋Š” ์ƒํƒœ(๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ์ €์žฅ x)

- ์ผ๊ด€์„ฑ : ์›์ธ๊ณผ ๊ฒฐ๊ณผ์˜ ์˜๋ฏธ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ๋ณด์žฅ๋˜์–ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ

 

** ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด ์ด๋ž€?

: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •ํ™•์„ฑ, ์ผ๊ด€์„ฑ(๋ฌด๊ฒฐ์„ฑ)์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅ, ์‚ญ์ œ, ์ˆ˜์ • ๋“ฑ์„ ์ œ์•ฝํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด

  1. ๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ(๊ธฐ๋ณธํ‚ค ์ œ์•ฝ) 
    - ํ…Œ์ด๋ธ”์€ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ง€์ •ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ฅธ ๋ฌด๊ฒฐ์„ฑ์„ ์ง€์ผœ์•ผ ํ•œ๋‹ค.
    - ๊ธฐ๋ณธํ‚ค์—๋Š” NULL ๊ฐ’์ด ์˜ฌ ์ˆ˜ ์—†์Œ
    - ๊ธฐ๋ณธํ‚ค๋Š” ํ…Œ์ด๋ธ” ๋‚ด์— ์˜ค์ง ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.
    (๋™์ผํ•œ ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ํ…Œ์ด๋ธ” ๋‚ด์— ์—ฌ๋Ÿฌ๊ฐœ์ผ ์ˆ˜ ์—†๋‹ค.)
  2. ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ(์™ธ๋ž˜ํ‚ค ์ œ์•ฝ)
    - ์™ธ๋ž˜ํ‚ค ๊ฐ’์€ NULL์ด๊ฑฐ๋‚˜ ์ฐธ์กฐํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค ๊ฐ’๊ณผ ๋™์ผํ•ด์•ผ ํ•จ
    ([๊ฒฐ์ œ]์—์„œ [๊ณ ๊ฐ]์˜ ํšŒ์›๋ฒˆํ˜ธ๋ฅผ ์ฐธ์กฐํ•˜๋ฉด, ์žˆ๋Š” ํšŒ์›๋ฒˆํ˜ธ๋งŒ ๊ฐ€์ ธ์™€์•ผ ํ•จ)
  3. ๋„๋ฉ”์ธ ๋ฌด๊ฒฐ์„ฑ : ์†์„ฑ๊ฐ’์€ ์†์„ฑ์˜ ๋„๋ฉ”์ธ ์†ํ•œ ๊ฐ’(์ดˆ๋“ฑํ•™๊ต ํ•™๋…„ 1 ~ 6)
  4. ๊ณ ์œ  ๋ฌด๊ฒฐ์„ฑ : UNIQUE ์กฐ๊ฑด์ด ์ฃผ์–ด์ง„ ์ปฌ๋Ÿผ์˜ ์†์„ฑ๊ฐ’์€ ์„œ๋กœ ๋‹ฌ๋ผ์•ผ ํ•จ
  5. NULL ๋ฌด๊ฒฐ์„ฑ : NOT NULL๋กœ ์ œํ•œํ•˜๋ฉด NULL์ด ์™€์„  ์•ˆ๋จ

 

5) DML_ SELECT(๋ฐ์ดํ„ฐ ์กฐํšŒ)  

SELECT ์กฐํšŒ ๋Œ€์ƒ(์ปฌ๋Ÿผ๋ช…)
FROM ํ…Œ์ด๋ธ” ๋ช…
WHERE ์กฐ๊ฑด๋ฌธ
GROUP BY ์ง‘๊ณ„๊ธฐ์ค€ ์ปฌ๋Ÿผ๋ช…
HAVING grouping๋œ ํ›„ ์ƒํƒœ ๊ธฐ๋ฐ˜์˜ ์กฐ๊ฑด๋ฌธ
ORDER BY ์ปฌ๋Ÿผ๋ช…

 

์˜ˆ์‹œ ๋ฌธ์ œ1)

 

 

=> ์ •๋‹ต!!  3

 

 

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

TRIM๊ณผ REPLACE ๋น„๊ต!!

 

TRIM ํ•จ์ˆ˜

- RTRIM (๋ฌธ์ž์—ด, ์ œ๊ฑฐ ๋Œ€์ƒ)

- LTRIM (๋ฌธ์ž์—ด, ์ œ๊ฑฐ ๋Œ€์ƒ)

- TRIM (์ œ๊ฑฐ ๋Œ€์ƒ FROM ๋ฌธ์ž์—ด)

 

++) ์ฟผ๋ฆฌ๋ฌธ

SELECT RTRIM ('XXSQLXX', 'X')

         .TRIM ( 'X' FROM 'XXSQLXX')

FROM DUAL;

 

REPLACE ํ•จ์ˆ˜

- TRIM (์ œ๊ฑฐ ๋Œ€์ƒ FROM ๋ฌธ์ž์—ด)

- REPLACE (๋ฌธ์ž์—ด, ์ œ๊ฑฐ ๋ฌธ์ž์—ด, [๋Œ€์ฒด ๋ฌธ์ž์—ด])

 

++) ์ฟผ๋ฆฌ๋ฌธ

SELECT TRIM ('X' FROM 'XXSQLXX')

           .REPLACE('XXSQLXX', 'X')

           .REPLACE('XXSQLXX', 'X', 'Y')

FROM DUAL;

 

 

์˜ˆ์‹œ ๋ฌธ์ œ2)

 

=> ์ •๋‹ต!! SELECT ํšŒ์›์ฝ”๋“œ, RTRIM(์—ฐ๋ น๋Œ€, '๋Œ€'), UPPER(์ด๋ฆ„) FROM C_INFO;

 

 

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

 

 

 

์˜ˆ์‹œ ๋ฌธ์ œ3)

 

=> ์ •๋‹ต!! TO_CHAR(SYSDATE -1, 'YYYYMMDD')

 

*DUAL

- ๋“€์–ผ ํ…Œ์ด๋ธ”์€ ์˜ค๋ผํด์— ์กด์žฌํ•˜๋Š” ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”๋กœ, ํ•˜๋‚˜์˜ ์—ด๋กœ๋งŒ ์ด๋ค„์ ธ์žˆ์Œ

- ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ ๊ตฌํ•˜๊ฑฐ๋‚˜ ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ์„ ํ•˜๋Š” ๋“ฑ์— ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉ

 

** SYSDATE

- SQL์„ ์ž‘์—…ํ•˜๋Š” ์‹œ์ ์˜ ๋‚ ์งœ์™€ ์‹œ๊ฐ์„ ์•Œ๋ ค์ฃผ๋ฉฐ, -1์„ ํ•  ๊ฒฝ์šฐ ์ „๋‚ ์˜ ๋‚ ์งœ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค

- ๋‚ ์งœ๋ฅผ ์กฐํšŒํ•œ๋‹ค๊ณ  ํ•˜์˜€์œผ๋ฉฐ TO_CHAR์„ ํ†ตํ•ด ํ˜•๋ณ€ํ™˜์„ ํ•˜์—ฌ ๋‚ ์งœ๋งŒ ๋‚จ๊ธด๋‹ค.

 

 

DECODE & CASE WHEN

 

* DECODE(= IF๋ฌธ)

- DECODE (๊ฐ’1, ๊ฐ’2, ์ฐธ์ผ ๋•Œ ์ถœ๋ ฅ ๊ฐ’, ๊ฑฐ์ง“์ผ ๋•Œ ์ถœ๋ ฅ ๊ฐ’)

ex) .DECODE(col1, 'KATE', '๋ณธ์ธ', '๋‹ค๋ฅธ์‚ฌ๋žŒ')

 

* CASE WHEN(= ์—ฌ๋Ÿฌ ์ผ€์ด์Šค๋ฅผ ํฌํ•จํ•˜๋Š” IF ๋ฌธ)

 

- ๋‹จ์ผ ์กฐ๊ฑด : CASE WHEN ์กฐ๊ฑด THEN ์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ ๊ฒฐ๊ณผ ELSE ๊ฑฐ์ง“์ผ ๋–„ ๊ฒฐ๊ณผ END

- ๋‹ค์ค‘ ์กฐ๊ฑด : 

 

CASE WHEN ์กฐ๊ฑด๋ฌธ1 THEN ๊ฒฐ๊ณผ๊ฐ’1

           WHEN ์กฐ๊ฑด๋ฌธ2 THEN ๊ฒฐ๊ณผ๊ฐ’2

                                  ....

           WHEN ์กฐ๊ฑด๋ฌธn THEN ๊ฒฐ๊ณผ๊ฐ’n

ELSE ๊ฒฐ๊ณผ๊ฐ’ n+1

END

 

ex) CASE WHEN col1 < 10 THEN 'ํ•œ์ž๋ฆฌ ์ˆ˜' (CASE col1 WHEN ๋„ ๊ฐ€๋Šฅ)

                 WHEN col1 BETWEEN 10 AND 99 THEN '๋‘์ž๋ฆฌ ์ˆ˜'

ELSE '์„ธ์ž๋ฆฌ ์ˆ˜'

END

*๋‹จ, col1์—๋Š” ์ •์ˆ˜ํ˜•์œผ๋กœ 1000๋ฏธ๋งŒ์˜ ์ˆซ์ž๋งŒ ๋“ค์–ด๊ฐ€ ์žˆ์Œ์„ ๊ฐ€์ •ํ•จ

 

 

WHERE ์กฐ๊ฑด๋ฌธ

 

  • ์กฐ๊ฑด์„ ์ง€์ •ํ•ด์„œ ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ๋ ˆ์ฝ”๋“œ(ํ–‰)๋งŒ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ
  • ๋น„๊ต์—ฐ์‚ฐ์ž, ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž ๋“ฑ '์—ฐ์‚ฐ์ž'๋ฅผ ํ†ตํ•ด ์กฐ๊ฑด์„ ๋ถ€์—ฌํ•จ
  • '์กฐ๊ฑด'์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ true or false์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด(์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” true์ธ ๋ ˆ์ฝ”๋“œ๋“ค๋งŒ ์ถœ๋ ฅ)
CASE WHEN col1 < 10 THEN 'ํ•œ์ž๋ฆฌ์ˆ˜'
        WHEN col1 BETWEEN 10 AND 99
        THEN '๋‘์ž๋ฆฌ ์ˆ˜'
        ELSE '์„ธ์ž๋ฆฌ ์ˆ˜'
END _
;

SELECT *
FROM C_INFO
WHERE NAME = '๊น€ํ˜ธํ˜ธ' AND PHONE LIKE %1234'

 

 

์—ฐ์‚ฐ์ž ์ข…๋ฅ˜

๋น„๊ต ์—ฐ์‚ฐ์ž =, >, >=, <, <=
- ๋ถ€์ • ๋น„๊ต ์—ฐ์‚ฐ์ž : !=, ^=, <> : ๊ฐ™์ง€ ์•Š์€ ๊ฒƒ์„ ์กฐํšŒ
WHERE col1 <> 1
๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž AND, OR, NOT
- AND : ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•ด์•ผ ํ•จ
- OR : ์กฐ๊ฑด์„ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•˜๋ฉด ์ฐธ
- NOT : ์ฐธ์ด๋ฉด ๊ฑฐ์ง“์œผ๋กœ, ๊ฑฐ์ง“์ด๋ฉด ์ฐธ์œผ๋กœ ๋ฐ”๊ฟˆ
WHERE NOT col1 = 1 (WHERE col1 <> 1๊ณผ ๊ฐ™์€ ์˜๋ฏธ)
WHERE NOT col1 > 10(WHERE col1 <= 10๊ณผ ๊ฐ™์€ ์˜๋ฏธ)
BETWEEN a AND b a์™€ B ์‚ฌ์ด์— ๊ฐ’์ด ์žˆ๋Š”์ง€ ํŒ๋‹จ
WHERE col1 BETWEEN 10 AND 99
- WHERE col1 >= 10 AND col1 <= 99์™€ ๋™์ผํ•จ

 

 

์—ฐ์‚ฐ์ž ์ข…๋ฅ˜ - NULL ํŒ๋‹จ

IS NULL NULL์ธ์ง€ ํŒ๋‹จ, NULL์ผ ๊ฒฝ์šฐ TRUE
IS NOT NULL NULL์ด ์•„๋‹ ๊ฒฝ์šฐ TRUE

 

NULL์€ =, <>์œผ๋กœ ๋น„๊ต๋  ์ˆ˜ ์—†๊ณ , IS, IS NOT์œผ๋กœ๋งŒ ๋น„๊ต๋œ๋‹ค

 

WHERE A.col IS NULL (0)
WHERE A.col IS NOT NULL (0)
WHERE A.col = NULL (X)
WHERE A.col <> NULL (X)

 

์˜ˆ์‹œ ๋ฌธ์ œ4)

=> ์ •๋‹ต!! NVL or ISNULL or IFNULL(๋‹จ, ํ‘œํ˜„์‹ ๋‘๊ฐœ(์ƒ๋…„, 9999)์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๊ฐ™์•„์•ผ ํ•จ)

 

 

์—ฐ์‚ฐ์ž ์ข…๋ฅ˜ - IN

IN(x, y, z....) x, y, z ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ชฉ๋ก ๋‚ด ๊ฐ’ ์ค‘ ์–ด๋Š ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•˜๋ฉด ๋œ๋‹ค.(or ์กฐ๊ฑด)
NOT IN(x, y, z....) x, y, z ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ชฉ๋ก ๋‚ด ๊ฐ’ ์ค‘ ์–ด๋Š ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.(and ์กฐ๊ฑด)

 

WHERE A.COL IN (1, 2, 3)์„ ๋งŒ์กฑํ•˜๋ ค๋ฉด...
A.col = 1์ด ์ฐธ์ด๊ฑฐ๋‚˜(or)
A.col = 2์ด ์ฐธ์ด๊ฑฐ๋‚˜(or)
A.col = 3์ด ์ฐธ์ด์–ด์•ผ ํ•œ๋‹ค  => OR ์กฐ๊ฑด

WHERE A,COL NOT IN (1, 2, 3)์„ ๋งŒ์กฑํ•˜๋ ค๋ฉด...
A.col <> 1 ์ด ์ฐธ์ด๊ณ  (and)
A.col <> 2 ์ด ์ฐธ์ด๊ณ  (and)
A.col <> 3 ์ด ์ฐธ์ด์–ด์•ผ ํ•œ๋‹ค  => AND ์กฐ๊ฑด

ex) 
SELECT * FROM C_INFO WHERE AGE IN (20, 30, 40);
>> ๋‚˜์ด๊ฐ€ 20์‚ด์ด๊ฑฐ๋‚˜ 30์‚ด์ด๊ฑฐ๋‚˜ 40์‚ด์ธ ๊ณ ๊ฐ์˜ ํšŒ์›์ •๋ณด๋งŒ ์ถœ๋ ฅ

 

**) NULL์ด IN() ํ˜น์€ NOT IN() ์•ˆ์— ํฌํ•จ๋œ๋‹ค๋ฉด??

 

  • IN(1, 2, NULL) >> IN์€ OR ์กฐ๊ฑด์ด๋ฏ€๋กœ 1๋˜๋Š” 2๋ฅผ ๋งŒ์กฑํ•˜๋ฉด TRUE ๊ฐ€๋Šฅ
  • NOT IN(1, 2, NULL) >> NOT IN์€ AND ์กฐ๊ฑด์ด๋ฏ€๋กœ ํ•ญ์ƒ FALSE์ธ NULL์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํ•ญ์ƒ FALSE ๋ฅผ ์ถœ๋ ฅ

 

๋ฌธ์ž์—ด ์กฐ๊ฑด๋ฌธ ์—ฐ์‚ฐ์ž

 

A LIKE B A์— ๋Œ€ํ•˜์—ฌ B์™€ ์œ ์‚ฌํ•œ ๋ฌธ์ž์—ด์„ ์ฐพ์•„์คŒ
% ๋ฌธ์ž 0๊ฐœ ์ด์ƒ์ด ์กด์žฌํ•œ๋‹ค๋Š” ์˜๋ฏธ
๋ฌธ์ž ํ•œ๊ฐœ

 

 

1. %๋Š” ๋ฌธ์ž๊ฐ€ ํ•ด๋‹น ์œ„์น˜์— 0๊ฐœ ์ด์ƒ์ด ์กด์žฌํ•œ๋‹ค๋Š” ์˜๋ฏธ

ex) WHERE name LIKE '%k%' ์ผ ๊ฒฝ์šฐ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” name์€ k๋ผ๋Š” ๋‹จ์–ด๋ฅผ ํฌํ•จ๋งŒ ํ•˜๋ฉด ๋จ

  • key : k ์•ž์— ๋ฌธ์ž 0๊ฐœ (True)
  • chuck : k ๋’ค์— ๋ฌธ์ž 0๊ฐœ (True)
  • bike : k ์•ž๋’ค์— ๋ฌธ์ž ์กด์žฌ (True)
  • k : k ์•ž๋’ค์— ๋ฌธ์ž 0๊ฐœ (True)

2, k๊ฐ€ ์–‘๋์— ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด

>> LIKE 'k%k' (์–‘๋ ๋ฌธ์ž์—ด์€ ๊ณ ์ •์ด๊ณ , ์ค‘๊ฐ„์€ 0~n๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ์กด์žฌ๊ฐ€๋Šฅ)

 

3. ํŠน์ •ํ•œ ์œ„์น˜์™€ ๋ฌธ์ž ๊ฐœ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ์‹ถ์œผ๋ฉด

>> LIKE 'k_y'

 

์˜ˆ์‹œ ๋ฌธ์ œ5)

 

 

=> ์ •๋‹ต!! LIKE '%ki%'

 

๐Ÿ’ช ์ถ”๊ฐ€ ์‚ฌ๋ก€

- ํ•ด๋‹น ์ž๋ฆฌ์— ๋ฌธ์ž๊ฐ€ 0๊ฐœ ์ด์ƒ ์กด์žฌํ•œ๋‹ค๋Š” ์˜๋ฏธ
ex) 'ki%' : ki๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž
>> kind, kite

ex) '%ce' : 'ce'๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž
>> choice, chance

์‹ค๋ฌด) '202309%' : '202309'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์—ด(ex. 2023๋…„ 9์›”)

- ๋ฌธ์ž ํ•œ๊ฐœ
ex) WHERE ๋‹จ์–ด LIKE 'ki__' : ki๋’ค์— ๋‘ ์ž๋ฆฌ๊ฐ€ ๋” ์žˆ๋Š” row ์ถœ๋ ฅ
>> kind, kite

ex) WHERE ๋‹จ์–ด LIKE '__ce' : ce๋กœ ๋๋‚˜๋Š” 6์ž๋ฆฌ ๋ฌธ์ž
>> choice, chance

 

 

Subquery 

 

: ํ•˜๋‚˜์˜ SQL ๋ฌธ์— ํฌํ•จ๋˜์–ด์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ SQL ๋ฌธ์„ ์˜๋ฏธํ•จ

SELECT COUNT(*)
FROM ๊ฒฐ์ œ
WHERE ํšŒ์›๋ฒˆํ˜ธ NOT IN (SELECT ํšŒ์›๋ฒˆํ˜ธ FROM ํšŒ์›)
  • SELECT์ ˆ, FROM์ ˆ, WHERE์ ˆ, HAVING์ ˆ, ORDER BY์ ˆ ๋“ฑ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•จ, ์„ธ๋ฏธ์ฝœ๋ก  ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
  • ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋‹จ์ผํ–‰ ๋˜๋Š” ๋ณต์ˆ˜ํ–‰ ๋น„๊ต์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์„œ๋ธŒ์ฟผ๋ฆฌ๋„ AS๋กœ ๋ณ„์นญ ์ง€์ •์ด ๊ฐ€๋Šฅ (FROM ์ ˆ์— ์‚ฌ์šฉ๋˜๋ฉด ๋ณ„์นญ ์ง€์ • ํ•„์ˆ˜)

 

์œ„์น˜์— ๋”ฐ๋ฅธ ์„œ๋ธŒ์ฟผ๋ฆฌ ๋ช…์นญ

  • ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ : SELECT ์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ, ๊ฒฐ๊ณผ๋Š” ํ•˜๋‚˜์˜ ํ–‰์ด์–ด์•ผ๋งŒ ํ•œ๋‹ค
    SELECT *,  (SELECT ๋ถ€์„œ๋ช… FROM ๋ถ€์„œ WHERE ๋ถ€์„œ,๋ถ€์„œ๋ฒˆํ˜ธ = ์ง์›.๋ถ€์„œ๋ฒˆํ˜ธ) AS ์†Œ์†๋ถ€์„œ FROM ์ง์›;
  • ์ธ๋ผ์ธ๋ทฐ : FROM ์ ˆ ๋‚ด์— ์“ฐ์—ฌ์ง„ ์„œ๋ธŒ์ฟผ๋ฆฌ
    SELECT * FROM (SELECT * FROM C_INFO WHERE name LIKE '%a%') AS T;

 

๋‹ค์ค‘ํ–‰ ์—ฐ์‚ฐ์ž

๋น„๊ต ์—ฐ์‚ฐ์ž =, >, >=, <, <=, !=, ^=, <>
SELECT ๋‚ ์งœ, ๋งค์ถœ์ด์•ก, ๊ฒฐ์ œ๊ฑด์ˆ˜
FROM ๋งค์ถœ
WHERE ๋งค์ถœ์ด์•ก >= (SELECT AVG(๋งค์ถœ ์ด์•ก) FROM ๋งค์ถœ WHERE SUBSTR(๋‚ ์งœ, 1.6) = '202309');
๋‹ค์ค‘ํ–‰ ์—ฐ์‚ฐ์ž - IN : ๋ฉ”์ธ ์ฟผ๋ฆฌ์˜ ๋น„๊ต๋Œ€์ƒ์ด ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ค‘์—์„œ ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•˜๋ฉด ์ฐธ
- EXISTS : ๋ฉ”์ธ ์ฟผ๋ฆฌ์˜ ๋น„๊ต๋Œ€์ƒ์ด ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ค‘์—์„œ ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•˜๋ฉด ์ฐธ
=> ๋น„๊ต์—ฐ์‚ฐ์ž๋ž‘ ๊ฐ™์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ
- ALL : ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ๋น„๊ต๋Œ€์ƒ์ด ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์™€ ๋ชจ๋“  ๊ฐ’์ด ์ผ์น˜ํ•˜๋ฉด ์ฐธ
- ANY, SOME : ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ๋น„๊ต๋Œ€์ƒ์ด ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์ด ์ผ์น˜ํ•˜๋ฉด ์ฐธ
=> =, >, < ๋“ฑ ๋น„๊ต์—ฐ์‚ฐ์ž๋ž‘ ๊ฐ™์ด ์‚ฌ์šฉ (ex. col1 = ALL(a, b, c) a, b, c๋ชจ๋“  ๊ฐ’์„ ๊ฐ€์ง€๋Š” col1๋ฐ˜ํ™˜)

 

์˜ˆ์‹œ ๋ฌธ์ œ6)

 

 

=> ์ •๋‹ต!!

SELECT ์ด๋ฆ„
FROM ์‚ฌ์žฅํ›„๋ณด
WHERE ์ž…์‚ฌ๋…„๋„ < ALL (SELECT ์ž…์‚ฌ๋…„๋„ FROM ์ž„์›)

 

์˜ˆ์‹œ ๋ฌธ์ œ7)

 

๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ์„œ๋ธŒ์ฟผ๋ฆฌ์™€ ๋‹ค์ค‘ํ–‰ ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ณ์€ ๊ฒƒ์€?

1. ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ๋Š” ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ORDER BY๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (X)

>> ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค

2. ์—ฌ๋Ÿฌ ํ–‰์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋‹จ์ผ ํ–‰ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค (X)

>> ๋‹ค์ค‘ ํ–‰ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค

3. ๋ฉ”์ธ ์ฟผ๋ฆฌ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์ปฌ๋Ÿผ์„ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค (X)

>> ๋ฉ”์ธ ์ฟผ๋ฆฌ์—์„œ๋Š” SELECT ๋˜์ง€ ์•Š์€ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

>> ์„œ๋ธŒ ์ฟผ๋ฆฌ ๋‚ด๋ถ€์—์„œ๋Š” ๋ฉ”์ธ ์ฟผ๋ฆฌ์˜ ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

4. EXIST๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ’์€ True ํ˜น์€ False ์ด๋‹ค (0)

>> ๊ฒฐ๊ณผ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•˜๋ฉด ์ฐธ

ex. WHERE EXISTS(SELECT 1 FROM WHERE ๊ฑฐ์ฃผ์ง€ = '์„œ์šธ')

 

 

WITH์ ˆ : ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ WITH์ ˆ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

SELECT * FROM (SELECT * FROM C_INFO WHERE name LIKE '%a%') AS T;

WITH T AS (
    SELECT * FROM C_INFO WHERE name LIKE '%a%')
,     T2 AS (SELECT _ FROM T)
SELECT *
FROM T;

* WITH ํ…Œ์ด๋ธ”๋ช… AS (์ฟผ๋ฆฌ๋ฌธ) SELECT _ FROM ํ…Œ์ด๋ธ”๋ช…
* ์ž„์‹œํ…Œ์ด๋ธ”(์ค‘๊ฐ„๊ฒฐ๊ณผ ์ €์žฅ์šฉ ๋“ฑ ์ž„์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ”)์ด๋‚˜ ๋ทฐ(VIEW)์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ
* ์ฟผ๋ฆฌ๋ฌธ ๋‚ด์—์„œ ๋ฐ˜๋ณตํ•ด์„œ ๋™์ผํ•œ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ WITH ์ ˆ๋กœ ๋ฐ˜๋ณต ์ฟผ๋ฆฌ๋ฌธ์„ ์ค„์—ฌ ํ…Œ์ด๋ธ” ์—‘์„ธ์Šค๋ฅผ ์ค„์ด๊ณ  ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ

 

 

View ํ…Œ์ด๋ธ”์ด๋ž€?

  • ์ผ์ข…์˜ ๊ฐ€์ƒํ…Œ์ด๋ธ”๋กœ์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋“œ์›จ์–ด์— ์ €์žฅ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค
  • ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ณ  SQL๋งŒ ์ €์žฅํ•œ๋‹ค(Table์€ ์‹ค์งˆ์  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„๋‹ค)
    => ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ๋งŒ ํ•˜๋Š” ํ…Œ์ด๋ธ”
  • ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•œ๋‹ค

 

VIEW ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ์‚ฌ์šฉ์ƒ์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ
    => ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฌธ์ด ์žˆ์œผ๋ฉด ๋งค๋ฒˆ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ํ•ด๋‹น ์ฟผ๋ฆฌ๋ฌธ์„ View ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ค์–ด๋‘๊ณ  ๊ด€๋ฆฌํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•˜๋ฏ€๋กœ
  • ๋ณด์•ˆ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ
  • ์ž„์‹œ์ ์ธ ์ž‘์—…์„ ์œ„ํ•ด ์‚ฌ์šฉ\

 

์˜ˆ์‹œ ๋ฌธ์ œ8)

 

=> ์ •๋‹ต!!

WITH T AS (
SELECT *
FROM C_INFO
WHERE NAME LIKE '%a%'
)
SELECT count (*) FROM T ;

 

 

์ง‘๊ณ„ํ•จ์ˆ˜

COUNT(*), COUNT(exp) count(*) : NULL ํฌํ•จ, count(exp) : NULL ์ œ์™ธ
SUM( [DISTINCT | ALL] exp ) ํ•ฉ๊ณ„
AVG( [DISTINCT | ALL] exp ) ํ‰๊ท 
MAX( [DISTINCT | ALL] exp ) ์ตœ๋Œ€๊ฐ’
MIN( [DISTINCT | ALL] exp ) ์ตœ์†Œ๊ฐ’
STDDEV( [DISTINCT | ALL] exp ) ํ‘œ์ค€ํŽธ์ฐจ
VARIAN( [DISTINCT | ALL] exp ) ๋ถ„์‚ฐ

 

**) NULL๊ฐ’์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋Š” ๋ชจ๋‘ NULL์ด๋ฉฐ ํ†ต๊ณ„์  ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์—ฐ์‚ฐํ•  ๋•Œ, NULL์€ ์ œ์™ธํ•˜๊ณ  ๊ณ„์‚ฐํ•œ๋‹ค

ex) NULL / 10 = NULL

 

 

์˜ˆ์‹œ ๋ฌธ์ œ9) 

C_INFO์—์„œ ํ‰๊ท  ์—ฐ๋ น์ด 30๋Œ€์ธ ์„ฑ๋ณ„๊ณผ ํ•ด๋‹น ์„ฑ๋ณ„์˜ ํ‰๊ท  ์—ฐ๋ น์„ ์ถœ๋ ฅํ•˜๋Š” SQL์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

=> ์ •๋‹ต!!

SELECT ์„ฑ๋ณ„, AVG(์—ฐ๋ น)

FROM  C_INFO

GROUP BY ์„ฑ๋ณ„

HAVING AVG(์—ฐ๋ น) >= 30 AND AVG(์—ฐ๋ น) < 40;

 

 

์˜ˆ์‹œ ๋ฌธ์ œ10) 

FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY 

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

๋ฐ˜์ •๊ทœํ™”

 

๋ฐ˜์ •๊ทœํ™” ๊ฐœ๋… 

- ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ, ๊ฐœ๋ฐœ ๋ฐ ์šด์˜์˜ ํŽธ์˜์„ฑ ๋“ฑ์„ ์œ„ํ•ด ์ •๊ทœํ™”๋œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ํ†ตํ•ฉ, ์ค‘๋ณต, ๋ถ„๋ฆฌํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ์˜๋„์ ์œผ๋กœ ์ •๊ทœํ™” ์›์น™์„ ์œ„๋ฐฐํ•˜๋Š” ํ–‰์œ„

 

๋ฐ˜์ •๊ทœํ™”์˜ ๋Œ€์ƒ ๋ถ„์„

- ๋””์Šคํฌ I/O ๋Ÿ‰์ด ๋งŽ์•„ ์„ฑ๋Šฅ ์ €ํ•˜

- ๊ฒฝ๋กœ๊ฐ€ ๋„ˆ๋ฌด ๋ฉ€์–ด ์กฐ์ธ์œผ๋กœ ์„ฑ๋Šฅ ์ €ํ•˜

- ์ปฌ๋Ÿผ์„ ๊ณ„์‚ฐํ•˜์—ฌ ์ฝ์„ ๋–„ ์„ฑ๋Šฅ ์ €ํ•˜

 

๋ฐ˜์ •๊ทœํ™”์˜ ํŠน์ง•

- ๋ฐ˜์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ณ  ๊ด€๋ฆฌ ํšจ์œจ์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ ๋ฐ ์ •ํ•ฉ์„ฑ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค

- ๊ณผ๋„ํ•œ ๋ฐ˜์ •๊ทœํ™”๋Š” ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚จ๋‹ค.

- ๋ฐ˜์ •๊ทœํ™”๋ฅผ ์œ„ํ•ด์„œ๋Š” ์‚ฌ์ „์— ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ์šฐ์„ ์œผ๋กœ ํ• ์ง€, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ๊ณผ ๋‹จ์ˆœํ™”๋ฅผ ์šฐ์„ ์œผ๋กœ ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค

- ๋ฐ˜์ •๊ทœํ™” ๋ฐฉ๋ฒ•์—๋Š” ํ…Œ์ด๋ธ” ํ†ตํ•ฉ, ํ…Œ์ด๋ธ” ๋ถ„ํ• , ์ค‘๋ณต ํ…Œ์ด๋ธ” ์ถ”๊ฐ€, ์ค‘๋ณต ์†์„ฑ ์ถ”๊ฐ€ ๋“ฑ์ด ์žˆ๋‹ค

 

ํ…Œ์ด๋ธ” ํ†ตํ•ฉ

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

 

 

์†์„ฑ

์†์„ฑ์˜ ์˜๋ฏธ

- ์—…๋ฌด์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์ธ์Šคํ„ด์Šค์—์„œ ๋” ์ด์ƒ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š๋Š” ์ตœ์†Œ์˜ ๋ฐ์ดํ„ฐ ๋‹จ์œ„

 

์†์„ฑ์˜ ํŠน์ง•

- ํ•œ ๊ฐœ์˜ ์†์„ฑ์€ ๋ฐ˜๋“œ์‹œ ํ•œ ๊ฐœ์˜ ์†์„ฑ๊ฐ’๋งŒ์„ ๊ฐ€์ง„๋‹ค

- ํ•œ ๊ฐœ์˜ ์—”ํ‹ฐํ‹ฐ๋Š” ์ตœ์†Œ 2๊ฐœ ์ด์ƒ์˜ ์†์„ฑ์„ ๊ฐ€์ง„๋‹ค

- ํ•œ๊ฐœ์˜ ์—”ํ‹ฐํ‹ฐ๋Š” ์ตœ์†Œ 1๊ฐœ ์ด์ƒ์˜ ๋‹ค๋ฅธ ์—”ํ‹ฐํ‹ฐ์™€์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค

- ํ•œ๊ฐœ์˜ ์—”ํ‹ฐํ‹ฐ๋Š” ์ตœ์†Œ 2๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค ์ง‘ํ•ฉ์ด์–ด์•ผ ํ•œ๋‹ค

 

์†์„ฑ์˜ ์ข…๋ฅ˜(ํŠน์„ฑ์— ๋”ฐ๋ฅธ)

- ๊ธฐ๋ณธ ์†์„ฑ : ์—…๋ฌด์ƒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ •์˜ 

- ์„ค๊ณ„ ์†์„ฑ : ์—…๋ฌด๋ฅผ ๊ทœ์น™ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ณ€ํ˜•ํ•œ ์†์„ฑ

- ํŒŒ์ƒ ์†์„ฑ : ๋‹ค๋ฅธ ์†์„ฑ์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ๋ฐœ์ƒ, ์ฃผ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๊ฐ’๋“ค์ด ์ด์— ํ•ด๋‹น(๊ณ„์‚ฐ์„ ํ†ตํ•ด ๊ตฌํ•œ๋‹ค -> ํŒŒ์ƒ, ํŒŒ์ƒ => ์ตœ์†Œ์ฃผ๋ฌธ ์ผ์ž, ์ฃผ๋ฌธ ๊ธˆ์•ก, ์ด์ฃผ๋ฌธ๊ธˆ์•ก)

 

 

ex) ์€ํ–‰์— ์ ๊ธˆ์„ ๋“ค๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์›๊ธˆ์„ ํ†ต์žฅ์— ์ž…๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ž์œจ์€ 5%๋ผ์„œ ์—ฐ ์ด์ž๋Š” ์›๊ธˆ์˜ * 0.05๋ฅผ ๊ธฐ๋Œ€ํ•˜๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ธฐ๋ณธ์†์„ฑ : ์›๊ธˆ, ์ด์ž์œจ

ํŒŒ์ƒ ์†์„ฑ : ์ด์ž

์„ค๊ณ„ ์†์„ฑ : ์˜ˆ๊ธˆ ๋ถ„๋ฅ˜

 

์ธ์Šคํ„ด์Šค

: ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๋‚ด์šฉ์˜ ์ „์ฒด ์ง‘ํ•ฉ์„ ์˜๋ฏธ(ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ์•„๋‹˜)

 

 

๋น„์‹๋ณ„์ž ๊ด€๊ณ„ 

: ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ๋กœ๋ถ€ํ„ฐ ์†์„ฑ์„ ๋ฐ›์•˜์ง€๋งŒ ์ž์‹ ์—”ํ‹ฐํ‹ฐ์˜ ์ฃผ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•ฎ ์•Š๊ณ  ์ผ๋ฐ˜์ ์ธ ์†์„ฑ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

 

ex)

1. ์ž์‹ ์—”ํ‹ฐํ‹ฐ์—์„œ ๋ฐ›์€ ์†์„ฑ์ด ๋ฐ˜๋“œ์‹œ ํ•„์ˆ˜๊ฐ€ ์•„๋‹ˆ์–ด๋„ ๋ฌด๋ฐฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ชจ ์—†๋Š” ์ž์‹์ด ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

2. ์—”ํ‹ฐํ‹ฐ๋ณ„๋กœ ๋ฐ์ดํ„ฐ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๊ด€๋ฆฌํ•  ๊ฒฝ์šฐ

3. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ํ•˜๋‚˜์˜ ์—”ํ‹ฐํ‹ฐ๋กœ ํ†ตํ•ฉ๋˜์–ด ํ‘œํ˜„๋˜์—ˆ๋Š”๋ฐ ๊ฐ๊ฐ์˜ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ณ„๋„์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์งˆ ๋•Œ์˜ ๊ฒฝ์šฐ

4. ์ž์‹ ์—”ํ‹ฐํ‹ฐ์— ์ฃผ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•˜์—ฌ๋„ ๋˜์ง€๋งŒ ์ž์‹์—”ํ‹ฐํ‹ฐ์—์„œ ๋ณ„๋„์˜ ์ฃผ์‹๋ณ„์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ์œ ๋ฆฌํ•˜๋‹ค๊ณ  ํŒ๋‹จ ๋˜๋Š” ๊ฒฝ์šฐ

 

 

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

 

- ๊ฐœ๋…์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง : ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋†’๊ณ  ์—…๋ฌด์ค‘์‹ฌ์ ์ด๊ณ  ํฌ๊ด„์ ์ธ ์ˆ˜์ค€์˜ ๋ชจ๋ธ๋ง ์ง„ํ–‰, ์ „์‚ฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง, EA ์ˆ˜๋ฆฝ์‹œ ๋งŽ์ด ์‚ฌ์šฉ

- ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง : ์‹œ์Šคํ…œ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๊ณ ์ž ํ•˜๋Š” ์—…๋ฌด์— ๋Œ€ํ•ด Key ์†์„ฑ, ๊ด€๊ณ„ ๋“ฑ์„ ์ •ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„, ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์Œ

- ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง : ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ด์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ฑ๋Šฅ, ์ €์žฅ ๋“ฑ ๋ฌผ๋ฆฌ์ ์ธ ์„ฑ๊ฒฉ์„ ๊ณ ๋ คํ•˜์—ฌ ์„ค๊ณ„

 

 

์ •๊ทœํ˜•

 

์ œ 1์ •๊ทœํ˜• 

: ๋ชจ๋“  ์†์„ฑ์ด ๋„๋ฉ”์ธ์ด ์›์ž ๊ฐ’์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉด ์ œ 1์ •๊ทœํ˜•์— ์†ํ•œ๋‹ค

์ œ 2์ •๊ทœํ˜•

: ์ œ 1์ •๊ทœํ˜•์— ์†ํ•˜๊ณ , ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์†์„ฑ์ด ๊ธฐ๋ณธํ‚ค์— ์™„์ „ ํ•จ์ˆ˜ ์ข…์†๋˜๋ฉด ์ œ 2์ •๊ทœํ˜•์— ์†ํ•œ๋‹ค.

์ œ 3์ •๊ทœํ˜•

: ์ œ 2์ •๊ทœํ˜•์— ์†ํ•˜๊ณ , ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์†์„ฑ์ด ๊ธฐ๋ณธํ‚ค์— ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์ด ๋˜์ง€ ์•Š์œผ๋ฉด ์ œ 3์ •๊ทœํ˜•์— ์†ํ•œ๋‹ค

=> ์†์„ฑ ๊ฐ„์˜ ํ•จ์ˆ˜ ์ข…์†์„ฑ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

 

 

 

++ ๋‹จ๋‹ตํ˜• + ์ฃผ๊ด€์‹

 

๋„๋ฉ”์ธ : ์†์„ฑ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„

 

์œ ์ผ์„ฑ : ํ•˜๋‚˜์˜ ํ‚ค๋กœ ํŠน์ • ํ–‰์„ ๋ฐ”๋กœ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ๋ฐ์ดํ„ฐ ์†์„ฑ

 

๋ทฐ(VIEW) : ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ํŒŒ์ƒ๋œ ํ…Œ์ด๋ธŒ๋กœ, ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋…ธ๋ฆฌ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ

 

 

728x90
๋ฐ˜์‘ํ˜•

+ Recent posts