SQL ๋ฌธ๋ฒ• ์ •๋ฆฌ

Updated:     Updated:

Categories:

Tags: ,

๋ฌธ์ž์—ด ๊ด€๋ จ SQL

1. ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ / ํ•ฉ์น˜๊ธฐ

1) โ€˜ ย  โ€™ ๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ž์—ด ํ•ฉ์น˜๊ธฐ
select 'M'||'Y'||'T'||'E'||'X'||'T' as mytext
#### from TEXT

> MYTEXT

2) concat ํ•จ์ˆ˜ ์‚ฌ์šฉ

ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ 2๊ฐœ ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

SELECT CONCAT(str1, str2 ...);



SELECT CONCAT('Wook', ' ', 'Min')
 FROM NAME;
 
 > WookMin

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

1)chr(ascII์ฝ”๋“œ) chr(65) -> a

2)LOWER(๋ฌธ์ž์—ด) : ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜

3) UPPER(๋ฌธ์ž์—ด) : ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜

4) LTRIM(๋ฌธ์ž์—ด, [ํŠน์ •๋ฌธ์ž]) : ํŠน์ •๋ฌธ์ž ์•ˆ ๋„ฃ์œผ๋ฉด ์™ผ์ชฝ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐ, ํŠน์ •๋ฌธ์ž ๋„ฃ์œผ๋ฉด ํŠน์ •๋ฌธ์ž ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ œ๊ฑฐํ•˜๊ธฐ

5) RTRIM(๋ฌธ์ž์—ด, [ํŠน์ •๋ฌธ์ž]) : ์˜ค๋ฅธ์ชฝ ๊ณต๋ฐฑ ์ œ๊ฑฐ, ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ํŠน์ •๋ฌธ์ž ์ œ๊ฑฐ

6) TRIM([์œ„์น˜], [ํŠน์ •๋ฌธ์ž], [FROM] ๋ฌธ์ž์—ด) : ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ž์—ด ์œ„์น˜๋ถ€ํ„ฐ ํ•œ ๊ธ€์ž์”ฉ ๋น„๊ตํ•˜์—ฌ ํŠน์ • ๋ฌธ์ž์™€ ๊ฐ™์œผ๋ฉด ์ œ๊ฑฐ

TRIM(LEADING ์ œ๊ฑฐํ•  ๋ฌธ์ž FROM ๋ฌธ์ž์—ด) : ๋ฌธ์ž์—ด ์ขŒ์ธก ๋ฌธ์ž ์ œ๊ฑฐ

TRIM(TRAILING ์ œ๊ฑฐํ•  ๋ฌธ์ž FROM ๋ฌธ์ž์—ด) : ๋ฌธ์ž์—ด ์šฐ์ธก ๋ฌธ์ž ์ œ๊ฑฐ

7) LENGTH(๋ฌธ์ž์—ด) : ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ๋ฐ˜ํ™˜

8) LPAD(์›๋ณธ๋ฌธ์ž์—ด , ์›ํ•˜๋Š” ์ž๋ฆฌ์ˆ˜, ์ฑ„์šธ ๋ฌธ์ž์—ด) : ์™ผ์ชฝ์— ํŠน์ •๋ฌธ์ž๋ฅผ ์›ํ•˜๋Š” ์ž๋ฆฌ์ˆ˜๋งŒํผ ์ฑ„์›Œ์„œ ๋ฐ˜ํ™˜

SELECT LPAD('ABC',10,'0')  FROM EXAM;

> 0000000ABC

9) RPAD(์›๋ณธ๋ฌธ์ž์—ด , ์›ํ•˜๋Š” ์ž๋ฆฌ์ˆ˜, ์ฑ„์šธ ๋ฌธ์ž์—ด) : ์˜ค๋ฅธ์ชฝ์— ํŠน์ •๋ฌธ์ž๋ฅผ ์›ํ•˜๋Š” ์ž๋ฆฌ์ˆ˜๋งŒํผ ์ฑ„์›Œ์„œ ๋ฐ˜ํ™˜

SELECT RPAD('ABC',10,'0')  FROM EXAM;

> ABC0000000

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

1) ROUND(์ˆ˜, [์ž๋ฆฟ์ˆ˜]) : ์ง€์ •๋œ ์ž๋ฆฟ์ˆ˜๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผ, ์ž๋ฆฟ์ˆ˜๊ฐ€ ์—†์œผ๋ฉด 0์ด ๊ธฐ๋ณธ๊ฐ’

2) TRUNC(์ˆ˜, [์ž๋ฆฟ์ˆ˜]) : ์ง€์ •๋œ ์ž๋ฆฟ์ˆ˜๊นŒ์ง€ ๋ฒ„๋ฆผ, ์ž๋ฆฟ์ˆ˜๊ฐ€ ์—†์œผ๋ฉด 0์ด ๊ธฐ๋ณธ๊ฐ’

3) CEIL(์ˆ˜) : ์†Œ์ˆ˜์  ์ดํ•˜์˜ ์ˆ˜๋ฅผ ์˜ฌ๋ฆผํ•œ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

4) FLOOR(์ˆ˜) : ์†Œ์ˆ˜์  ์ดํ•˜์˜ ์ˆ˜๋ฅผ ๋ฒ„๋ฆผํ•œ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜

5) MOD(์ˆ˜1, ์ˆ˜2): ์ˆ˜1์„ ์ˆ˜2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜

4. ๋‚ ์งœ ํ•จ์ˆ˜

1) EXTRACT(ํŠน์ •๋‹จ์œ„ FROM ๋‚ ์งœ ๋ฐ์ดํ„ฐ) : ํŠน์ • ๋‹จ์œ„๋งŒ์„ ์ถœ๋ ฅํ•ด์„œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ํŠน์ • ๋‹จ์œ„ : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND

EXTRACT(YEAR FROM SYSDATE) 

> ํ˜„์žฌ์˜ ์‹œ๊ฐ„์—์„œ ๋…„๋„ ๋ฐ˜ํ™˜

2) ADD_MONTHS(๋‚ ์งœ ๋ฐ์ดํ„ฐ, ํŠน์ • ๊ฐœ์›” ์ˆ˜) : ๋‚ ์งœ ๋ฐ์ดํ„ฐ์—์„œ ํŠน์ • ๊ฐœ์›” ์ˆ˜๋ฅผ ๋”ํ•œ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜, ๋‹ค์Œ ๋‹ฌ์— ๊ธฐ์ค€ ๋‚ ์งœ์˜ ์ผ์ž๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ์›”์˜ ๋งˆ์ง€๋ง‰ ์ผ์ž๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

ADD_MONTHS(TO_DATE('2021-12-31','YYYY-MM-DD'),-1) -> 2021-11-30

ADD_MONTHS(TO_DATE('2021-12-31','YYYY-MM-DD'),1) -> 2021-01-31

5. ๊ธฐํƒ€

1) COALESCE(์ธ์ˆ˜1, ์ธ์ˆ˜2, ์ธ์ˆ˜3, ..) : null์ด ์•„๋‹Œ ์ตœ์ดˆ์˜ ์ธ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค

select NAME,
	COALESCE(PHONE,EMAIL,FAX) as CONTACT
from member

2) RANK() over(order by ์ •๋ ฌ๊ธฐ์ค€) : ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์ˆœ์œ„๋ฅผ ๋งค๊ฒจ์ฃผ๋Š” ํ•จ์ˆ˜, ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๊ฐ™์€ ์ˆœ์œ„์— ์œ„์น˜ํ•˜๊ณ  ๋‹ค์Œ ๊ฐ’์€ ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ ๊ฐœ์ˆ˜๋งŒํผ ๊ฑด๋„ˆ๋›ด ์ˆœ์œ„๊ฐ€ ๋‚˜์˜จ๋‹ค

3) DENSE_RANK() over(order by ์ •๋ ฌ๊ธฐ์ค€) : ์ด์ „์— ๊ณต๋™ ์ˆœ์œ„๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ฐ™์€ ๊ฐœ์ˆ˜๋งŒํผ ๊ฑด๋„ˆ ๋›ฐ๋Š”๊ฒƒ์ด ์•„๋‹Œ ๋‹ค์Œ ์ˆœ์œ„๊ฐ€ ๋‚˜์˜จ๋‹ค.

  • partition by : ๊ทธ๋ฃน๋ณ„๋กœ ์ˆœ์œ„๋ฅผ ๋งค๊ธธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

ex) ํ•œ๊ตญ 4ํŒ€, ๋ฏธ๊ตญ 4ํŒ€ ์žˆ๋‹ค๋ฉด ํ•œ๊ตญ ํŒ€ ๋‚ด์—์„œ 1,2,3,4๋“ฑ ๋ฏธ๊ตญ ํŒ€ ๋‚ด์—์„œ 1,2,3,4๋“ฑ

4) ROW_NUMBER() : ๋™์ผํ•œ ๊ฐ’์ด๋ผ๋„ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค. ํ–‰์ด ๋ช‡๋ฒˆ์งธ์— ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค.

5) LAG() : ํŒŒํ‹ฐ์…˜ ๋ณ„๋กœ ํŠน์ • ์ˆ˜๋งŒํผ ์•ž์„  ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

6) LEAD() : ํŠน์ • ์ˆ˜๋งŒํผ ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

sql ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด ๋‹ค๋ฅธ ๊ธ€ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

Leave a comment