์ž๊ฒฉ์ฆ/SQLD

[SQLD] ์ตœ์ข… ์ •๋ฆฌ

hello_u 2023. 3. 18. 17:26

 

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

 

FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY 

 

1. ๋ฐœ์ทŒ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐ (FROM)

2. ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์€ ์ œ๊ฑฐ (WHERE)

3. ๊ทธ๋ฃนํ™” (GROUP BY)

4. ๊ทธ๋ฃนํ•‘ ์กฐ๊ฑด (HAVING)

5. ์ถœ๋ ฅ (SELECT)

6. ์ •๋ ฌ (ORDER BY)

 

 

SQL ๋ฌธ์žฅ๋“ค์˜ ์ข…๋ฅ˜


๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML) : SELECT , INSERT , UPDATE , DELETE

๋ฐ์ดํ„ฐ ์ •์˜์–ด(DDL) : CREATE , ALTER , DROP , RENAME

๋ฐ์ดํ„ฐ ์ œ์–ด์–ด(DCL) : GRANT , REVOKE

ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด(TCL) : COMMIT , ROLLBACK

 

 

DISTINCT

์ค‘๋ณต๋œ ๊ฒฝ์šฐ 1๊ฑด๋งŒ ์ถœ๋ ฅ

 

๋ฐ์ดํ„ฐ ๊ทธ๋ฃนํ™”/์ง‘๊ณ„ (GROUP BY)


๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ ํ–‰๋ผ๋ฆฌ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ญ‰์นจ

์žฅ๋ฅด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃน

 

 

DISTINCT deptno,mgr == GROUP BY (deptno,mgr) ๊ฐ™์€ ์˜๋ฏธ 

 

 

๋ณ„์นญ ์‚ฌ์šฉ(ALIAS) AS

 

SELECT - 1. AS ์ƒ๋žต๊ฐ€๋Šฅ /  2. ์ปฌ๋Ÿผ๋ช… ๋„์–ด์“ฐ๊ธฐ ( ex. " ์ง์› ๋ฒˆํ˜ธ " ) 

 

FROM - AS ์‚ฌ์šฉ๋ถˆ๊ฐ€ 

 

 

๋ฌธ์ž์—ด ํ•ฉ์น˜๊ธฐ(CONCAT)

์ธ์ˆ˜ ๋ฌด์กฐ๊ฑด 2๊ฐœ 

 

SELECT CONCAT( ' abc ' , ' 123 ' ) ๋ฌธ์ž์—ด๊ฒฐ๊ณผ

FROM ํ…Œ์ด๋ธ”;

 

SQL Server - " + " 

 

ORACLE - " || " 

 

 

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

 

1. NOT 

2. AND 

3. OR 

 

A BETWEEN 1 AND 2  -->  1 <= A <= 2 

 

A IN (1,2,3)   -->   A= 1 or 2 or 3 

 

 

LIKE ์—ฐ์‚ฐ์ž 

 

 ๋ฌธ์ž์—ด์—์„œ ์™€์ผ๋“œ์นด๋“œ(%)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ์ž๋ฃŒ๋ฅผ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

" %  " : ๋ชจ๋“  ๋ฌธ์ž   

"  _  " :  ํ•œ๊ธ€์ž

 

 

ESCAPE ์‹๋ณ„์ž

 

_ , % ๋ฅผ ๋ฌธ์ž๋กœ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์‹๋ณ„์ž 

 

 

"  \ " ์™€ ๊ฐ™์€ escape ์‹๋ณ„์ž๋Š” ์•„๋ฌด ๋ฌธ์ž๋‚˜ ์™€๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ 

 

 

์กฐํšŒ ์ˆœ๋ฒˆ ์ ์šฉํ•˜๊ธฐ/์›ํ•˜๋Š” ๊ฐœ์ˆ˜๋งŒ ์กฐํšŒ(ROWNUM)

 

ROWNUM(ORACLE) - 1 ์„ ํฌํ•จ

 

 

ORDER BY ๊ฐ€ ๋งˆ์ง€๋ง‰์— ์‹คํ–‰ !! 

 

 

์ƒ์œ„ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ (TOP) 

 

TOP(n) : ์ƒ์œ„ n ๊ฐœ์˜ ํ–‰์„ ๊ฐ€์ ธ์˜จ๋‹ค. 

 

 

 

 

NULL

 

์•„์ง ์ •์˜๋˜์ง€ ์•Š์€ ๊ฐ’ , ๋ชจ๋ฅด๋Š” ๊ฐ’ 

 

NULL ์€ 0 ๊ณผ ๊ณต๋ฐฑ์ด๋ž‘์€ ๋‹ค๋ฅด๋‹ค. 
 

์—ฐ์‚ฐ 


NULL์€ ํŠน์ • ๊ฐ’๋ณด๋‹ค ํฌ๋‹ค,์ ๋‹ค๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋‹ค.
 
NULL๊ฐ’ ๊ณผ์˜ ์—ฐ์‚ฐ์€ NULL๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. ( ๋น„๊ต์—ฐ์‚ฐ์€ FALSE ๋ฆฌํ„ด ) 
 
NULL + 40 = NULL 
 
NULL ๊ฐ’์„ ์กฐ๊ฑด์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ IS NULL , IS NOT NULL ์ด๋ž€ ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ 

 

์ •๋ ฌ์—์„œ์˜ ์˜๋ฏธ 

ORACLE - ๊ฐ€์žฅ ํฐ ๊ฐ’

SQL Server - ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’ 

 

ISNULL/NVL ํ•จ์ˆ˜


ํ‘œํ˜„์‹1์˜ ๊ฒฐ๊ณผ๊ฐ’์ด NULL์ด๋ฉด ํ‘œํ˜„์‹2์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

NVL(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2)
ISNULL(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2)

--์˜ˆ์‹œ--
ISNULL(Colum,0)

NVL2 ํ•จ์ˆ˜

 

NVL2 ํ•จ์ˆ˜๋Š” NULL์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์ง€์ •๊ฐ’1์„  ์ถœ๋ ฅํ•˜๊ณ , NULL์ธ ๊ฒฝ์šฐ ์ง€์ •๊ฐ’2๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

- ํ•จ์ˆ˜ :  NVL2("๊ฐ’", "์ง€์ •๊ฐ’1", "์ง€์ •๊ฐ’2") // NVL2("๊ฐ’", "NOT NULL", "NULL") 

 

NULLIF ํ•จ์ˆ˜


ํ‘œํ˜„์‹1์ด ํ‘œํ˜„์‹2์™€ ๊ฐ™์œผ๋ฉด NULL์„ , ๊ฐ™์ง€ ์•Š์œผ๋ฉด ํ‘œํ˜„์‹1์„ ๋ฆฌํ„ดํ•œ๋‹ค.

NULLIF(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2)


COALESCE ํ•จ์ˆ˜


์ž„์˜์˜ ๊ฐœ์ˆ˜ ํ‘œํ˜„์‹์—์„œ NULL ์ด ์•„๋‹Œ ์ตœ์ดˆ์˜ ํ‘œํ˜„์‹์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
๋ชจ๋“  ํ‘œํ˜„์‹์ด NULL์ด๋ผ๋ฉด NULL ์„ ๋ฆฌํ„ดํ•œ๋‹ค.

COALESCE(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2, … )

 

 

์ •๋ ฌ(ORDER BY)

 

SELECT๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ถœ๋ ฅ๋˜๋Š” ๊ฒฐ๊ณผ๋ฌผ์€ ํ…Œ์ด๋ธ”์— ์ž…๋ ฅ๋˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ด๋‹ค.

 

SELECT ๋ฌธ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ , ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‹คํ–‰ / ์„ฑ๋Šฅ์ด ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค

(null ์ •๋ ฌ์‹œ ORACLE ์—์„œ๋Š” ๋ฌดํ•œ๋Œ€๋กœ ์ทจ๊ธ‰ ) 

 

ASC : ์˜ค๋ฆ„์ฐจ์ˆœ(๊ธฐ๋ณธ๊ฐ’)   /    DESC : ๋‚ด๋ฆผ์ฐจ์ˆœ

 

 

 

 

 

์ถœ๋ ฅ๋˜๋Š” ์ปฌ๋Ÿผ์˜ ์ˆ˜๋ณด๋‹ค ํฐ ๊ฐ’์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค . 

 

 

์ธ์ˆ˜๊ฐ€ 2๊ฐœ ์ผ๋•Œ 

 

sal DESC , ename ASC : sal ์ด ๊ฐ™์œผ๋ฉด ename ์˜ค๋ฆ„์ฐจ์ˆœ 

 

 

cf) ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š” ์ปฌ๋Ÿผ๋ช…์œผ๋กœ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค . 

SELECT ename ORDER BY sal; 

 

sal ์ด ์—†์–ด๋„ ์ •๋ ฌ๊ฐ€๋Šฅ 

 

 

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

 

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

LOWER(c): ์ฃผ์–ด์ง„ ์ž๋ฃŒ c์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
UPPER(c): ์ฃผ์–ด์ง„ ์ž๋ฃŒ c์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜

 

LPAD(๊ฐ’, ์ด๋ฌธ์ž๊ธธ์ด, ์ฑ„์šธ ๋ฌธ์ž) 

 

์˜ค๋ผํด์—์„œ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์— ํŠน์ •๋ฌธ์ž๋ฅผ ์ฑ„์›Œ์„œ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ๋งž์ถœ ๋•Œ๋Š” LPAD, RPAD  ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ฃผ๋กœ ์ˆซ์ž ์•ž์— '0'์„ ์ฑ„์›Œ์„œ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ๋งž์ถœ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฌธ์ž์—ด์˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ณ ์ •ํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•œ๋‹ค.

 

LPAD(123, 5, '0') → ๊ฒฐ๊ณผ: 00123

LPAD(123, 8, '0') → ๊ฒฐ๊ณผ: 00000123

 

RPAD ํ•จ์ˆ˜๋Š” ์ง€์ •ํ•œ ๊ธธ์ด๋งŒํผ ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›€๋ฌธ์ž๋กœ ์ฑ„์šด๋‹ค.

 

TRIM ํ•จ์ˆ˜

๋ฌธ์ž์—ด์˜ ์–‘์ชฝ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ํ•จ์ˆ˜

 

  LTRIM("๋ฌธ์ž์—ด", "์˜ต์…˜") 

LTRIM ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์˜ ์™ผ์ชฝ(์ขŒ์ธก) ๊ณต๋ฐฑ  ์ œ๊ฑฐ, ๋ฌธ์ž ์™ผ์ชฝ ๋ฐ˜๋ณต์ ์ธ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐ๋ฅผ ํ•œ๋‹ค. 

 

 

SUBSTR

SQL์—์„œ ํ•จ์ˆ˜ substring์€ ํ•˜๋‚˜์˜ ํ•„๋“œ ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋ฅผ ์ฝ๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

 

๋‚ ์งœ ํ•จ์ˆ˜

 

๋ฐ์ดํ„ฐ์˜ ํ˜•๋ณ€ํ™˜์„ ์ผ์œผํ‚จ๋‹ค. 

 

TO_CHAR()

๋‚ ์งœ, ์ˆซ์ž ๋“ฑ์˜ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

TO_DATE()

๋ฌธ์ž๋ฅผ ๋‚ ์งœ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™”ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜

 

ํ˜„์žฌ ์‹œ๊ฐ„ ์กฐํšŒ

SYSDATE() - ORACLE

GETDATE() - SQL Server

 

 

๋‚ ์งœ ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐ 

๋‚ ์งœ + 100 : 100์€ day(๊ธฐ๋ณธ๊ฐ’)

1/24/60์€ 1์ผ์„ 24์‹œ๊ฐ„์œผ๋กœ ๋‚˜๋ˆ„๊ณ  60๋ถ„์œผ๋กœ ๋‚˜๋ˆด์œผ๋ฏ€๋กœ 1๋ถ„์„ ์˜๋ฏธ

 

 

์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ ๊ฐ’์„ ์ง€์ •(CASE)

 

CASE ์ปฌ๋Ÿผ

WHEN ์กฐ๊ฑด1 THEN ๊ฐ’1 

WHEN ์กฐ๊ฑด2 THEN ๊ฐ’2 

ELSE ๊ฐ’3 

END 

 

์ปฌ๋Ÿผ์ด ์กฐ๊ฑด1 ์ผ๋•Œ๋Š” ๊ฐ’1 , ์กฐ๊ฑด2 ์ผ๋•Œ๋Š” ๊ฐ’2 ๋ฐ˜ํ™˜ 

์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ฐ’3 ๋ฐ˜ํ™˜ 

 

ELSE ๊ฐ€ ์—†๊ณ  ์กฐ๊ฑด1,์กฐ๊ฑด2๊ฐ€ ๋งŒ์กฑํ•˜์ง€ ์•Š์„๊ฒฝ์šฐ NULL ์„ ๋ฐ˜ํ™˜

 

 

 

์ง‘๊ณ„ํ•จ์ˆ˜(SUM,COUNT)

 

 SUM์€ ์„ ํƒํ•œ ์—ด(Column)์˜ ํ•ฉ์„ ๊ณ„์‚ฐํ•œ๋‹ค.  NULL๊ฐ’์€ ๋ฌด์‹œํ•˜๊ณ  ๊ณ„์‚ฐ

 

SUM(A+B+C) ์™€ SUM(A) +SUM(B) + SUM(C) ๋Š” ๋‹ค๋ฅด๋‹ค

 

 

COUNT๋Š” ํŠน์ • ์—ด(Column)์˜ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

COUNT(*)๋กœ ์ž‘์„ฑํ•˜๋ฉด ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ํ–‰์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜๊ณ ,

ํŠน์ • ์—ด์— ๋Œ€ํ•ด์„œ COUNT๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ํ•ด๋‹น ์—ด์ด NULL์ด ์•„๋‹Œ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

 

 

๋ฐ์ดํ„ฐ ๊ทธ๋ฃนํ™”/์ง‘๊ณ„ (GROUP BY)


๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ ํ–‰๋ผ๋ฆฌ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ญ‰์นจ

์žฅ๋ฅด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃน




SELECT ์ง‘๊ณ„ํ•จ์ˆ˜(์ปฌ๋Ÿผ1), ์ง‘๊ณ„ํ•จ์ˆ˜(์ปฌ๋Ÿผ2) ..
FROM ํ…Œ์ด๋ธ”
GROUP BY ์ปฌ๋Ÿผ

 

 

HAVING

๊ทธ๋ฃน์— ๋Œ€ํ•œ ์กฐ๊ฑด์ ˆ , ๊ทธ๋ฃน ์ค‘ ์กฐ๊ฑด์— ๋งž๋Š” ๊ทธ๋ฃน๋งŒ ๋‚จ๊น๋‹ˆ๋‹ค.

 

 

JOIN

 

Natural JOIN ์€ ์ค‘๋ณต๋œ ์ปฌ๋Ÿผ์„ ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ณ  ์ œ์ผ ์•ž์— ๋“ฑ์žฅํ•œ๋‹ค. 

 

USING ์กฐ๊ฑด์ ˆ 

 

FROM์ ˆ์˜ USING ์กฐ๊ฑด์ ˆ์„ ์ด์šฉํ•˜๋ฉด ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ๋“ค ์ค‘์—์„œ ์›ํ•˜๋Š” ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด์„œ๋งŒ EQUI JOIN์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

sql server์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

SELECT  *
FROM    DEPT JOIN DEPT_TEMP
USING   (DEPTNO) ;

USING ์กฐ๊ฑด์ ˆ์—์„œ๋„ ํ…Œ์ด๋ธ” ์ด๋ฆ„์ด๋‚˜ ALIAS, ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค.

 

 

LEFT OUTER JOIN

 

์™ผ์ชฝ ํ…Œ์ด๋ธ” ๋ชจ๋“  ๋ฐ์ดํ„ฐ + ์ค‘๋ณต๋ฐ์ดํ„ฐ๋“ค์ด ๊ฒ€์ƒ‰๋จ

 

๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ NULL ๊ฐ’์œผ๋กœ ์ฑ„์šด๋‹ค.

 

A LEFT OUTER JOIN  ๊ฐ™์€์˜๋ฏธ    Acol = Bcol(+)

 

๋Œ€์ƒ ์ปฌ๋Ÿผ(+) : ๊ธฐ์ค€ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”

 

 

์„œ๋ธŒ์ฟผ๋ฆฌ

 

 

EXISTS ์—ฐ์‚ฐ์ž

 

EXISTS ์—ฐ์‚ฐ์ž๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์ฒดํฌํ•˜๊ณ  ์กด์žฌํ•  ๊ฒฝ์šฐ TRUE๋ฅผ ๋ฐ˜ํ™˜

 

 

 

NOT EXISTS ์—ฐ์‚ฐ์ž

 

NOT EXISTS๋Š” EXISTS์™€ ๋ฐ˜๋Œ€๋กœ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋œ๋‹ค.

 

(TRUE → FALSE, FALSE → TRUE) ๋ฐ˜ํ™˜ ๊ฐ’์ด ๋ฐ˜๋Œ€๋กœ ๋ฐ”๋€Œ์–ด์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒ

 

 

์ง‘ํ•ฉ์—ฐ์‚ฐ์ž(UNION/INTERSECT/MINUS)

 

UNION ALL : ์ค‘๋ณต๋ฐ์ดํ„ฐ O ,  ์ •๋ ฌ์ž‘์—… X , ๋น ๋ฅด๋‹ค 

 

 

 

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


ํ…Œ์ด๋ธ” ์ž์ฒด ์‚ญ์ œ ๋ช…๋ น์–ด

ํ…Œ์ด๋ธ” ์ž์ฒด๊ฐ€ ๋ชจ๋‘ ์ง€์›Œ์ง€๋ฉฐ , ์ธ๋ฑ์Šค๋„ ์‚ญ์ œ๋จ

DROP TABLE ํ…Œ์ด๋ธ”๋ช…;


ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ์ „๋ถ€ ์‚ญ์ œ (TRUNCATE)

ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์‚ญ์ œ๋˜์ง€๋งŒ ํ…Œ์ด๋ธ” ์ž์ฒด๊ฐ€ ์ง€์›Œ์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค๋„ ํ•จ๊ป˜ TRUNCATE ๋œ๋‹ค.

TRUNCATE TABLE ํ…Œ์ด๋ธ”๋ช…;



TRUNCATE ๋ช…๋ น์–ด๋Š” UNDO๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผ ๋ฐ์ดํ„ฐ๋Ÿ‰ ์‚ญ์ œ์‹œ DELETE ๋ณด๋‹ค ๋น ๋ฅด๋‹ค. 

 

DROP , TRUNCATE - Auto Commit / DDL 

 

DELETE - ์‚ฌ์šฉ์ž Commit / Commit ์ด์ „์— Rollback ๊ฐ€๋Šฅ  DML 


TRUNCATE ๊ณผ DROP ์€ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๋Š”๋‹ค .

 

 

 

 

VIEW

 

ํ…Œ์ด๋ธ”์€ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ˜๋ฉด, ๋ทฐ(view)๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค. 

๋ทฐ๋Š” ๋‹จ์ง€ ๋ทฐ ์ •์˜ (view definition)๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

์งˆ์˜์—์„œ ๋ทฐ๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉด ๋ทฐ ์ •์˜๋ฅผ ์ฐธ์กฐํ•ด์„œ DBMS ๋‚ด๋ถ€์ ์œผ๋กœ ์งˆ์˜๋ฅผ ์žฌ์ž‘์„ฑ ํ•˜์—ฌ ์งˆ์˜๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. 

๋ทฐ๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์ง€๋งŒ ํ…Œ์ด๋ธ”์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ƒ ํ…Œ์ด๋ธ”(virtual table)์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. 

 

๋ทฐ์˜ ์žฅ์ 

๋…๋ฆฝ์„ฑ : ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. 

ํŽธ๋ฆฌ์„ฑ : ๋ณต์žกํ•œ ์งˆ์˜๋ฅผ ๋ทฐ๋กœ ์ƒ์„ฑํ•จ์œผ๋กœ์จ ๊ด€๋ จ ์งˆ์˜๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋ณด์•ˆ์„ฑ : ์ง์›์˜ ๊ธ‰์—ฌ์ •๋ณด์™€ ๊ฐ™์ด ์ˆจ๊ธฐ๊ณ  ์‹ถ์€ ์ •๋ณด๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•ด๋‹น ์ปฌ๋Ÿผ์„ ๋นผ๊ณ  ์ƒ์„ฑํ•ด์„œ ๊ฐ์ถœ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 ROLLUP

 

ROLLUPํ•จ์ˆ˜๋Š” ์†Œ๊ทธ๋ฃน๊ฐ„์˜ ํ•ฉ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

ROLLUP์„ ์‚ฌ์šฉํ•˜๋ฉด GROUP BY๋กœ ๋ฌถ์€ ๊ฐ๊ฐ์˜ ์†Œ๊ทธ๋ฃน ํ•ฉ๊ณ„์™€ ์ „์ฒด ํ•ฉ๊ณ„๋ฅผ ๋ชจ๋‘ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

SELECT ์ƒํ’ˆID, ์›”, SUM(๋งค์ถœ์•ก) AS ๋งค์ถœ์•ก
FROM ์›”๋ณ„๋งค์ถœ
GROUP BY ROLLUP(์ƒํ’ˆID, ์›”);

 

NULL๊ฐ’์œผ๋กœ ํ‘œ์‹œ๋œ ๋ถ€๋ถ„๋“ค์ด ๋ฐ”๋กœ ROLLUPํ•จ์ˆ˜๋ฅผ ์จ์„œ ๋‚˜์˜จ ํ•ฉ๊ณ„์ž…๋‹ˆ๋‹ค. 

 

 

CUBE

 

CUBEํ•จ์ˆ˜๋Š” ํ•ญ๋ชฉ๋“ค ๊ฐ„์˜ ๋‹ค์ฐจ์›์ ์ธ ์†Œ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

ROLLUP๊ณผ ๋‹ฌ๋ฆฌ GROUP BY์ ˆ์— ๋ช…์‹œํ•œ ๋ชจ๋“  ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ์†Œ๊ทธ๋ฃน ํ•ฉ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•ด์ค๋‹ˆ๋‹ค.

 

SELECT ์ƒํ’ˆID, ์›”, SUM(๋งค์ถœ์•ก) AS ๋งค์ถœ์•ก
FROM ์›”๋ณ„๋งค์ถœ
GROUP BY CUBE(์ƒํ’ˆID, ์›”);

ROLLUPํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋ณด๋‹ค ๊ฒฐ๊ณผ๊ฐ€ ์ข€ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ์ƒํ’ˆID๋ณ„ ํ•ฉ๊ณ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์›”๋ณ„ ํ•ฉ๊ณ„๊นŒ์ง€ ํ•œ ๋ฒˆ์— ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

GROUPING SETS

 

GROUPING SETS๋Š” ํŠน์ • ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์†Œ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. 

SELECT ์ƒํ’ˆID, ์›”, SUM(๋งค์ถœ์•ก) AS ๋งค์ถœ์•ก
FROM ์›”๋ณ„๋งค์ถœ
GROUP BY GROUPING SETS(์ƒํ’ˆID, ์›”);

์•ž์˜ ROLLUP, CUBE์— ๋น„ํ•ด ํ›จ์”ฌ ๊ฒฐ๊ณผ๊ฐ€ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค.

 

 

์œˆ๋„์šฐ ํ•จ์ˆ˜

SQL์˜ ์œˆ๋„์šฐ ํ•จ์ˆ˜๋ž€ ํ–‰๊ณผ ํ–‰ ๊ฐ„์„ ๋น„๊ต, ์—ฐ์‚ฐ, ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜์ด๋‹ค. ๋ถ„์„ํ•จ์ˆ˜ ๋˜๋Š” ์ˆœ์œ„ํ•จ์ˆ˜๋ผ๊ณ  ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. 

 

 

 ROWS๋Š” ๊ฐ ํ–‰์˜ ์œ„์น˜๊ณ , RANGE๋Š” ๊ฐ’์˜ ๋ฒ”์œ„

 

ROWS์™€ RANGE ์ฐจ์ด์ 

ROWS์™€ RANGE ์ฐจ์ด

ROWS :  ์กฐํšŒ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌผ๋ฆฌ์  ์œ„์น˜(ROWNUM)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ชจ๋“  ํ–‰์ด 1๊ฐœ์˜ ํ–‰์œผ๋กœ ์ธ์‹ํ•œ๋‹ค.

 

RANGE:  ORDER BY ์ ˆ์— ๋ช…์‹œ๋œ ์นผ๋Ÿผ์œผ๋กœ ๋…ผ๋ฆฌ์ ์ธ ํ–‰ ์ง‘ํ•ฉ์„ ๊ตฌ์„ฑํ•˜๋ฉฐ, ์ง‘ํ•ฉ์œผ๋กœ ๋ฌถ์ธ ๊ทธ๋ฃน์ด 1๊ฐœ์˜ ํ–‰์œผ๋กœ ์ธ์‹ํ•œ๋‹ค.

์œ„์˜ ์˜ˆ์ œ๋Š” SALES_QUARTER ์นผ๋Ÿผ์˜ ๊ฐ’์œผ๋กœ ํ–‰ ์ง‘ํ•ฉ์„ ์ง€์ •ํ•˜์˜€๋‹ค. ORDER BY์— ๋ช…์‹œ๋œ ์นผ๋Ÿผ์— ๋”ฐ๋ผ์„œ ํ–‰ ์ง‘ํ•ฉ์ด ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.

 

 

RANK

RANK ํ•จ์ˆ˜๋Š” ์ค‘๋ณต ๊ฐ’๋“ค์— ๋Œ€ํ•ด์„œ ๋™์ผ ์ˆœ์œ„๋กœ ํ‘œ์‹œํ•˜๊ณ ,

์ค‘๋ณต ์ˆœ์œ„ ๋‹ค์Œ ๊ฐ’์— ๋Œ€ํ•ด์„œ๋Š” ์ค‘๋ณต ๊ฐœ์ˆ˜๋งŒํผ ๋–จ์–ด์ง„ ์ˆœ์œ„๋กœ ์ถœ๋ ฅํ•˜๋„๋ก ํ•˜๋Š” ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค.

 

SELECT empNo, empName, salary,

RANK() OVER (ORDER BY salary DESC) RANK๋“ฑ์ˆ˜

FROM employee;

 

 

DENSE_RANK

DENSE_RANK ํ•จ์ˆ˜๋Š” ์ค‘๋ณต ๊ฐ’๋“ค์— ๋Œ€ํ•ด์„œ ๋™์ผ ์ˆœ์œ„๋กœ ํ‘œ์‹œํ•˜๊ณ ,

์ค‘๋ณต ์ˆœ์œ„ ๋‹ค์Œ ๊ฐ’์— ๋Œ€ํ•ด์„œ๋Š” ์ค‘๋ณต ๊ฐ’ ๊ฐœ์ˆ˜์™€ ์ƒ๊ด€์—†์ด ์ˆœ์ฐจ์ ์ธ ์ˆœ์œ„ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋„๋ก ํ•˜๋Š” ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค.

 

SELECT empNo, empName, salary,

DENSE_RANK() OVER (ORDER BY salary DESC) DENSE_RANK๋“ฑ์ˆ˜

FROM employee;

 

 

 

 

๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ(CONNECT BY)

 

๊ณ„์ธตํ˜• ๊ตฌ์กฐ๋Š” ์ƒํ•˜ ์ˆ˜์ง๊ด€๊ณ„์˜ ํŠธ๋ฆฌํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ง„ ํ˜•ํƒœ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ํŠน์ •ํšŒ์‚ฌ์˜ ๋ถ€์„œ, ํŠน์ •ํ•™๊ต์˜ ํ•™๊ณผ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ๋Š” ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์ธตํ˜• ๊ตฌ์กฐ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

 

์ˆ˜ํ–‰์ˆœ์„œ

1. START WITH ์ ˆ์— ์‹œ์ž‘ ์กฐ๊ฑด์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

2. CONNECT BY ์ ˆ์— ์—ฐ๊ฒฐ์กฐ๊ฑด์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

 

 

 

 

START WITH : ๋ฃจํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค. / ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๋ ˆ๋ฒจ๊ฐ’์€ 0 ์ด๋‹ค. 

 

ORDER SIBLINGS BY : ํ˜•์ œ๋…ธ๋“œ ์‚ฌ์ด์—์„œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 

 

CONNECT BY PRIOR ์ž์‹ = ๋ถ€๋ชจ : ๋ถ€๋ชจ -> ์ž์‹ ์ˆœ๋ฐฉํ–ฅ ์ „๊ฐœ