SQL ๋ฌธ๋ฒ ์ ๋ฆฌ
Categories: sql
๋ฌธ์์ด ๊ด๋ จ 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() : ํน์ ์๋งํผ ๋ค์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ตฌํ๋ ํจ์์ด๋ค.
Leave a comment