์ค๋ผํด์ ์๋ฃํ๊ณผ ํจ์
1. ์ค๋ผํด์ ์๋ฃํ
- VARCHAR2(๋ฐ์ดํธ๋จ์์ ๊ธธ์ด) : 4000byte๋งํผ์ ๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.
- CHAR(๊ธธ์ด) : 1byte ๋ฌธ์๋ก ์ฌ์ฉ์ ์ฃผ๋ก ํ๋ฉฐ ํ๋๊ทธ๋ก ์ฃผ๋ก ์ฌ์ฉ๋๋ค.(ํํด์ฌ๋ถ(Y/N), ์น์ธ์ฌ๋ถ(Y/N),...)
- NUMBER(์ ์ฒด์๋ฆฌ์)- ์ ์, NUMBER(์ ์ฒด์๋ฆฌ์, ์์์ ๋ค์๋ฆฌ์)-์์ : ์ต๋ 38์๋ฆฌ๊น์ง ์ง์ ๊ฐ๋ฅํ ์ซ์ํ์ , ์ ์ฒด์๋ฆฌ์๋ก ์ซ์์ ์ ์ฒด์๋ฆฌ์๊ฐ ์ ํด์ง๊ณ ์์์ ๋ค ์๋ฆฌ์์ ๋ฐ๋ผ ์์์ ๋ค์ ์ซ์์ ๊ฐ์๊ฐ ์ ํด์ง๋ค.
- DATE : ๋ ์ง ํ์์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์๋ฃํ, ์ฐ,์,์ผ,์,๋ถ,์ด ์ ์ฅ์ด ๊ฐ๋ฅํ๋ค. SYSDATE(ํ์ฌ์ ๋ ์ง์ ์๊ฐ์ ๋ณด๋ฅผ ์ ๊ณตํด์ฃผ๋ ์์)
- BLOB : ์ต๋ 4GB์ ๋์ฉ๋ ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.
- CLOB : ์ต๋ 4GB์ ๋์ฉ๋ ํ ์คํธ๋ฅผ ์ ์ฅํ ์ ์๋ค.
- - BLOB, CLOB์ ์์ ์ ํ์ผ์ ๋ก๋ ์ ํ์ผ์์ฒด๋ฅผ ์ด์ง๋ฐ์ดํฐ๋ ํ ์คํธ๋ก ๋ณํํ์ฌ ์ ์ฅ์ ํ์๋๋ฐ DB ์๋ฒ๊ฐ ํดํน๋นํ๊ฑฐ๋ ๋ถ์์์ฌ๊ณ ๋ก ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํ๋ฉด ํ์ผ๋ค๋ ๋ค ์ญ์ ๋๊ธฐ ๋๋ฌธ์ ์์ฆ์ ํ์ผ์ ํ์ผ์๋ฒ์ ๋ฐ๋ก ๊ด๋ฆฌํ๊ณ DB์๋ ๊ทธ ํ์ผ์ ๊ฒฝ๋ก, ํ์ผ๋ช ์ ์ ์ฅํด์ ํจ๊ป ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
- BFILE : ์ต๋ 4GB์ ๋์ฉ๋ ์ด์ง ๋ฐ์ดํฐ ํ์ผ(.bin)์ ์ ์ฅํ ์ ์๋ค.
2. ์ค๋ผํด์ ๊ฐ์ฒด
- ํ ์ด๋ธ(table) : ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์ฅ์.
- ์ธ๋ฑ์ค(index) : ํ ์ด๋ธ์ ๊ฒ์์๋๋ฅผ ๋์ด๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๊ฐ์ฒด. ์ธ๋ฑ์ค๋ก ์ง์ ๋ ์ปฌ๋ผ ๊ธฐ์ค์ผ๋ก ๊ฒ์์ด ๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋์์ง๋ค.
- ๋ทฐ(view) : ํ๋๋ ์ฌ๋ฌ๊ฐ์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ค์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ฒฐํด์ ํ๋์ ํ ์ด๋ธ์ฒ๋ผ ๋ง๋ค์ด์ฃผ๋ ๊ฐ์ฒด. ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํด์ ๋ ผ๋ฆฌ์ ์ธ ๊ฐ์ํ ์ด๋ธ์ DB์ ์์ฑํด์ค๋ค.
- ์ํ์ค(sequence) : ์ผ๋ จ๋ฒํธ๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ฐ์ฒด. ์ฃผ๋ก ์ผ๋ จ๋ฒํธ๋ฅผ ๋ง๋ค์ด์ PK(Primary Key)๋ก ์ฌ์ฉ๋๋ค.
- ์๋ ธ๋(synonym) : ์ค๋ผํด ๊ฐ์ฒด ๋ณ์นญ์ ๋ถ์ฌ์ฃผ๋ ๊ฐ์ฒด.
- ํ๋ก์์ (procedure) : ํ๋ก๊ทธ๋๋ฐ ์ฐ์ฐ ๋ฐ ๊ธฐ๋ฅ ์ํ์ด ๊ฐ๋ฅํ ๊ฐ์ฒด(๋ฐํ ๊ฐ ์์)
- ํจ์(function) : ํ๋ก๊ทธ๋๋ฐ ์ฐ์ฐ ๋ฐ ๊ธฐ๋ฅ ์ํ์ด ๊ฐ๋ฅํ ๊ฐ์ฒด(๋ฐํ ๊ฐ ์์)
- ํจํค์ง(package) : ๊ด๋ จ์๋ ํ๋ก์์ ์ ํจ์์ ์งํฉ
- ํธ๋ฆฌ๊ฑฐ(trigger) : ๋ฐ์ดํฐ ๊ด๋ จ ์์ ์ ์ฐ๊ฒฐ ๋ฐ ๋ฐฉ์ง ๊ด๋ จ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฐ์ฒด
3. PL/SQL
1.DBMS์์๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ณ๋์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ ๊ณตํ๋๋ฐ ๊ทธ๊ฒ์ PL/SQL(Procdural Lanaguage extension to SQL)์ด๋ผ๊ณ ํ๋ค.
2.PL/SQL์ ์ฌ์ฉํ๋ฉด DBMS์์๋ ๋ณ์, ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ ๋ฑ ํ๋ก๊ทธ๋จ๋ฐ ์ธ์ด์์ ์ ๊ณตํ๋ ๋ฌธ๋ฒ๋ค์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ๋๋ค.
(PL/SQL์ ๋ํด์๋ ๋ค์ ์์ธํ๊ฒ ํฌ์คํ ํ๊ฒ ์ต๋๋ค.)
4. ํจ์
1.์ค๋ผํด์์๋ SQL ์ฟผ๋ฆฌ๋ฌธ์ ํจ์จ์ ์ผ๋ก ์์ฑํ ์ ์๋๋ก ๋์์ ์ฃผ๋ ํจ์๋ค์ ์ ๊ณตํ๊ณ ์๋ค.
2.์ค๋ผํด์ ํจ์๋ ๋จ์ผํํจ์, ๊ทธ๋ฃนํจ์๋ก ๋ถ๋ฅ ํ ์ ์๋ค.
3.๋จ์ผํ ํจ์๋ ๋ฐ์ดํฐ๊ฐ ํ ํ ์ ๋ ฅ๋ ๋ ํ ํ๋น ๊ฒฐ๊ณผ๊ฐ ํ๋์ฉ ๋์ค๋ ํจ์. TO_DATE, LOWER, CONCAT, SUBSTR....
4.๊ทธ๋ฃนํจ์๋ ํน์ ์ปฌ๋ผ์ ๊ทธ๋ฃนํํ์ฌ ๊ณ์ฐ์ ํ ์ ์๊ฒ ์ ๊ณต๋๋ ํจ์. SUM, COUNT, AVG....
5. ๋จ์ผํ ํจ์
1.๋ฌธ์ ํจ์, ์ซ์ ํจ์, ๋ ์ง ํจ์, ๋ณํ ํจ์, ์ผ๋ฐ ํจ์ ๋ฑ์ด ์กด์ฌํ๋ค.
2.๋จ์ผํ ํจ์๋ SELECT์ , WHERE์ , HAVING์ ์ด๋์๋ ์ฌ์ฉ๊ฐ๋ฅ
3.๋จ์ผํ ํจ์๋ ์ ๋ ฅ ๊ฐ ํ๋๋น ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํด
๋ฌธ์ ํจ์
- LOWER(์ปฌ๋ผ๋ช ์ด๋ ๋ฌธ์์ด) : ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฌธ์๋ก ๋ณํ ํ ๋ฐํ
- UPPER(์ปฌ๋ผ๋ช ์ด๋ ๋ฌธ์์ด) : ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๋ฌธ์๋ก ๋ณํ ํ ๋ฐํ
- INITCAP(์ปฌ๋ผ๋ช ์ด๋ ๋ฌธ์์ด) : ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ๋๋จธ์ง ๊ธ์๋ ์๋ฌธ์๋ก ๋ณํ ํ ๋ฐํ
๋ฌธ์ ์ฐ์ฐ ํจ์
- -CONCAT(๋ฌธ์์ด1, ๋ฌธ์์ด2) : ๋ฌธ์์ด ๊ฒฐํฉ ํจ์. ์ค๋ผํด์๋ || ๋ฌธ์์ด ๊ฒฐํฉ ์ฐ์ฐ์๋๋ฌธ์ ํ์ฉ๋๊ฐ ๋จ์ด์ง๋ค. ๋ ๊ฐ์ ๋ฌธ์์ด๋ง ๋งค๊ฐ๋ณ์๋ก ์ ๋ ฅ ๊ฐ๋ฅํ๋ค.
- -SUBSTR(๋ฌธ์์ด, ์์์์น, ๊ฐ์) : ๋ฌธ์์ด์ ์์์์น๋ถํฐ ๊ฐ์๋งํผ ์๋ฅธ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํ
- -LENGTH(๋ฌธ์์ด) : ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ฐํ
- -LENGTHB(๋ฌธ์์ด) : ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ byte๋จ์๋ก ๋ฐํ
- -INSTR(๋ฌธ์์ด, ์ง์ ๋ฌธ์) : ๋ฌธ์์ด์์ ์ง์ ํ ๋ฌธ์์ ์์น๋ฅผ ๋ฐํ
- -TRIM(leading FROM ๋ฌธ์์ด) : ์ ๋์ด๋ฅผ ์๋ผ์ ๋ฐํ
- TRIM(trailing FROM ๋ฌธ์์ด) : ์ ๋ฏธ์ฌ๋ฅผ ์๋ผ์ ๋ฐํ
- TRIM(both FROM ๋ฌธ์์ด) : ์ ๋์ด์ ์ ๋ฏธ์ฌ๋ฅผ ์๋ผ์ ๋ฐํ
- TRIM(๋ฌธ์์ด) : ๊ณต๋ฐฑ์ด ์ ๊ฑฐ๋ ์๋ก์ด ๋ฌธ์์ด ๋ฐํ
- -LPAD(๋ฌธ์์ด, ๊ธธ์ด, ์ฑ์ธ๋ฌธ์) : ์ง์ ๋ ๊ธธ์ด๋งํผ ๋ฌธ์์ด์์ ๋น๊ณต๊ฐ์ ์ง์ ํ ๋ฌธ์๋ก ์์์๋ถํฐ ์ฑ์์ ๋ฐํ
- -RPAD(๋ฌธ์์ด, ๊ธธ์ด, ์ฑ์ธ๋ฌธ์) : ์ง์ ๋ ๊ธธ์ด๋งํผ ๋ฌธ์์ด์์ ๋น๊ณต๊ฐ์ ์ง์ ํ ๋ฌธ์๋ก ๋ค์์๋ถํฐ ์ฑ์์ ๋ฐํ
๋ฌธ์ ์นํ ํจ์
- -TRANSLATE(๋ฌธ์์ด, ์นํ๋ ๋ฌธ์, ์นํํ ๋ฌธ์) : ๋ฌธ์์ด์ ์นํ๋ ๋ฌธ์๋ฅผ ์นํํ ๋ฌธ์๋ก ์นํํ ์๋ก์ด ๋ฌธ์์ด ๋ฐํ
- -REPLACE(๋ฌธ์์ด, ์นํ๋ ๋ฌธ์์ด, ์นํํ ๋ฌธ์์ด) : ๋ฌธ์์ด์์ ์นํ๋ ๋ฌธ์์ด์ ์นํํ ๋ฌธ์์ด๋ก ์นํํ ํ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํ
์ซ์ ํจ์
- ROUND(์ค์, ํ์ํ ์์์ ์๋ฆฌ์) : ํ์ํ ์์์ ์๋ฆฌ์๊น์ง ๋ฐ์ฌ๋ฆผํ ์๋ฅผ ๋ฐํ
- TRUNC(์ค์, ํ์ํ ์์์ ์๋ฆฌ์) : ํ์ํ ์์์ ์๋ฆฌ์ ์ดํ์ ์ซ์๋ฅผ ๋ฒ๋ฆฐ ์๋ฅผ ๋ฐํ
- MOD(m, n) : m์ n์ผ๋ก ๋๋ ๋๋จธ์ง ๊ฐ ๋ฐํ
- POWER(m, n) : m์ n์น ๊ฐ์ ๋ฐํ
- CEIL(m) : m๋ณด๋ค ํฐ ์ ์ผ ์์ ์ ์๋ฅผ ๋ฐํ
- FLOOR(m) : m๋ณด๋ค ์์ ์ ์ผ ํฐ ์ ์๋ฅผ ๋ฐํ
- ABS(m) : m์ ์ ๋ ๊ฐ ๋ฐํ(๋ฌด์กฐ๊ฑด ์์ ๋ฐํ)
- SQRT(m) : m์ ์ ๊ณฑ๊ทผ ๊ฐ ๋ฐํ
- SIGN(m) : m์ด ์์๋ฉด -1, ์์๋ฉด 1, 0์ด๋ฉด 0์ ๋ฐํ. ๋ถํธ ํ๋จ ํจ์
๋ ์ง ๋ฐ์ดํฐ ์ฐ์ฐ
- ์ค๋ผํด์์๋ ๋ ์ง๋ฅผ 6byte๋ก ์ฐ์ฐ
- DATE ์๋ฃํ์ ๊ธฐ๋ณธ์ ์ผ๋ก 'YYYY/MM/DD HH24:mi:ss'์ ํ์์ ๊ฐ์ง๊ณ ์๋ค.
- ์ถ๋ ฅํ ๋ ์ง์ ํ์ ๋ณ๊ฒฝ์ ALTER SESSION SET NLS_DATE_FORMAT = '๋ณ๊ฒฝํ ๋ ์งํ์'
- ALTER SESSION : ํ์ฌ DB์ ์ฐ๊ฒฐ๋ ์ธ์ ์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝ.
- NLS_DATE_FORMAT : ๋ ์ง ์ถ๋ ฅ ํ์
๋ ์ง ์ฐ์ฐ
- ๋ ์ง + ์ซ์ : ์ซ์ ์ผ๋งํผ์ด ๋ ์ง์ ๋ํด์ง ์๋ก์ด ๋ ์ง ๋ฐํ. ์ซ์ ์ผ๋งํผ ์ดํ์ ๋ ์ง.
- ๋ ์ง - ์ซ์ : ์ซ์ ์ผ๋งํผ์ด ๋ ์ง์์ ๋บด์ง ์๋ก์ด ๋ ์ง ๋ฐํ. ์ซ์ ์ผ๋งํผ ์ด์ ์ ๋ ์ง.
- ๋ ์ง + ์ซ์ / 24 : ์ซ์ ์๊ฐ๋งํผ์ด ๋ ์ง์ ๋ํด์ง ์๋ก์ด ๋ ์ง ๋ฐํ. ์ซ์ ์๊ฐ๋งํผ ์ดํ์ ๋ ์ง.
- ๋ ์ง - ์ซ์ / 24 : ์ซ์ ์๊ฐ๋งํผ์ด ๋ ์ง์ ๋นผ์ง ์๋ก์ด ๋ ์ง ๋ฐํ. ์ซ์ ์๊ฐ๋งํผ ์ด์ ์ ๋ ์ง.
- ๋ ์ง - ๋ ์ง : ๋ ๋ ์ง๊ฐ์ ์ฐจ์ด๊ฐ ์ผ์๋ก ๋ฐํ
๋ ์ง ํจ์
-ROUND(๋ ์ง, ๋ ์ง๋จ์(๋ ๋, ์, ์ผ, ์, ๋ถ, ์ด)) : ์ง์ ํ ๋จ์๊น์ง์ ๋ ์ง๋ฅผ ๋นผ์ ๊ฐ์ ธ์ค๊ณ ๋๋จธ์ง ๋จ์๋ค์ ์ด๊ธฐํ๋ ์ํ๋ก ์ถ๋ ฅ. ๋ ์ง์ ์ํ์ ๋ฐ๋ผ์ ๋ฐ์ฌ๋ฆผ(์๊ฐ์ด ์ ์ค๊ฐ ์ง๋ฌ์ผ๋ฉด ๋ค์์ผ์ ๋ ์ง, ์ผ์ด 15์ผ ์ด์ ์ง๋ฌ์ ๋๋ ๋ค์ ์์ด ๋์จ๋ค.)
ex) ROUND(SYSDATE, 'yyyy') -> 20230101 00:00:00
ROUND(SYSDATE, 'mi') -> 20230413 16:00:00
-TRUNC(๋ ์ง, ๋ ์ง๋จ์(๋ ๋, ์, ์ผ, ์, ๋ถ, ์ด)) : ์ง์ ํ ๋จ์๊น์ง์ ๋ ์ง๋ฅผ ๋นผ์ ๊ฐ์ ธ์ค๊ณ ๋๋จธ์ง ๋จ์๋ค์ ์ด๊ธฐํ๋ ์ํ๋ก ์ถ๋ ฅ. ๋ ์ง์ ์ํ์ ๋ฐ๋ผ์ ๋ฒ๋ฆผ.
ex) ROUND(SYSDATE, 'yyyy') -> 20230101 00:00:00
ROUND(SYSDATE, 'mi') -> 20230413 16:00:00
- MONTHS_BETWEEN(๋ ์ง1, ๋ ์ง2) : ๋ ์ง1์์ ๋ ์ง2๋ฅผ ๋บ ๋งํผ์ ์ผ์๋ฅผ ๊ฐ์์๋ก ์นํํ์ฌ ๋ฐํ
- ADD_MONTHS(๋ ์ง, ์ซ์) : ๋ ์ง์ ์ซ์ ๊ฐ์๋งํผ ๋ํ ๋ ์ง๋ฅผ ๋ฐํ. ์ซ์ ๊ฐ์ ๋งํผ์ ํ์ ๋ ์ง
- NEXT_DAY(๋ ์ง, ์์ผ) : ๋ ์ง ์ดํ์ ์ง์ ๋ ์์ผ์ ํด๋นํ๋ ๋ ์ง๋ฅผ ๋ฐํ
- LAST_DAY(๋ ์ง) : ๋ ์ง๋ฅผ ํฌํจํ๊ณ ์๋ ๋ฌ์ ๋ง์ง๋ง ๋ ์ง ๋ฐํ
๋ณํ ํจ์
๋ณํ ํจ์๋ ๋ฌธ์๋ฅผ ์ซ์๋ ๋ ์ง๋ก, ์ซ์๋ ๋ ์ง ๋ฌธ์๋ก ๋ณํํด์ฃผ๋ ํจ์.
-TO_CHAR, TO_DATE, TO_NUMBER๊ฐ ์กด์ฌํ๋ค.
-TO_CHAR(์ซ์๋ ๋ ์ง, ์ถ๋ ฅํ์) : ์ซ์๋ ๋ ์ง๋ฅผ ์ง์ ํ ์ถ๋ ฅํ์์ ๋ฌธ์๋ก ๋ณํ.
-TO_CHAR์์ ์ซ์๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ ๋ ฅ๋์ ๋ ์ง์ ํ ์ ์๋ ํ์์ง์ ์
-9 : ์ซ์์ ์ถ๋ ฅ ํญ ์ง์
-0 : ์ ํ 0 ํ์
-$ : ํํ ํ์
-L : ์ง์ญ ํํ ํ์
-, : ์ผํ์ ์์น ์ง์
-. : ๋ง์นจํ์ ์์น ์ง์
-MI : ์์ํ์
-EEEE : ์ค์ํ์(e์ ์ง์ํ๊ธฐ๋ฒ)
-TO_CHAR์์ ๋ ์ง๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ ๋ ฅ๋์ ๋ ์ง์ ํ ์ ์๋ ํ์์ง์ ์
-YYYY : ๋ ๋๋ฅผ 4์๋ฆฌ๋ก ํ๊ธฐ
-YY : ๋ ๋๋ฅผ 2์๋ฆฌ๋ก ํ๊ธฐ, ๋ ๋์ ๋ท ๋์๋ฆฌ๊ฐ ์ถ๋ ฅ๋๊ณ ์ ๋์๋ฆฌ๋ ํ์ฌ ๋ ๋์ ์ ๋์๋ฆฌ์ ๋์ผํ๊ฒ ์ค์ ๋จ.
-RR : ๋ ๋๋ฅผ 2์๋ฆฌ๋ก ํ๊ธฐ, ์ ๋์๋ฆฌ๋ ๊ฐ๊น์ด ๋ ๋์ ์ ๋์๋ฆฌ๋ก ์ค์ ๋จ. 99 -> RR -> 1999
-MM : ์์ 2์๋ฆฌ๋ก ํ๊ธฐ
-MONTH : ์์ ํ๊ธ์ด๋ ์๋ฌธ์ผ๋ก ํ๊ธฐ(APRILE, 4์...)
-MON : ์์ ํ๊ธ์ด๋ ์๋ฌธ์ ์ฝ์ด๋ก ํ๊ธฐ(APR, 4์ ...)
-DD : ์ผ์ 2์๋ฆฌ๋ก ํ๊ธฐ
-DAY : ์์ผ์ ํ๊ธ์ด๋ ์๋ฌธ์ผ๋ก ํ๊ธฐ(SUNDAY, ์ผ์์ผ)
-DY : ์์ผ์ ํ๊ธ์ด๋ ์๋ฌธ์ ์ฝ์ด๋ก ํ๊ธฐ(SUN, ์ผ,....)
-HH24 : ์๊ฐ์ 1 ~ 24๊น์ง ํ๊ธฐ
-HH : ์๊ฐ์ 1 ~ 12๊น์ง ํ๊ธฐ, AM/PM ํจ๊ป ์ฌ์ฉํ์ฌ ์ ํํ ์๊ฐ์ ํ์ํ ์ ์๋๋ก ๊ถ์ฅ.
-MI : ๋ถ์ 2์๋ฆฌ๋ก ํ๊ธฐ
-SS : ์ด๋ฅผ 2์๋ฆฌ๋ก ํ๊ธฐ
-AM/PM : ์ค์ /์คํ ํ๊ธฐ
-TO_DATE(๋ฌธ์์ด, ์ถ๋ ฅํ์) : ๋งค๊ฐ๋ณ์๋ก ์ ๋ ฅ๋ ๋ฌธ์์ด์ ์ง์ ํ ์ถ๋ ฅํ์์ ๋ง๋ DATEํ์ ์ผ๋ก ๋ณํ, ์ถ๋ ฅํ์์ TO_CHAR์์ ์ฌ์ฉํ๋ ํ์๊ณผ ๋์ผ.
-TO_NUMBER(๋ฌธ์์ด, ์ถ๋ ฅํ์) : ๋งค๊ฐ๋ณ์๋ก ์ ๋ ฅ๋ ๋ฌธ์์ด์ ์ง์ ํ ์ถ๋ ฅํ์์ ๋ง๋ NUMBERํ์ ์ผ๋ก ๋ณํ, TO_CHAR์ ํ์์ง์ ๋ฐฉ์๊ณผ ๋์ผํ ํ์์ง์ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
NULL ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ NVL
ํน์ ํ ์ปฌ๋ผ์ ๋ฐ์ดํฐ๊ฐ NULL์ผ ๋ NULL ๋์ ์ ๋ค๋ฅธ ๊ฐ์ ์กฐํํ๊ณ ์ถ์ ๋ NVLํจ์๋ฅผ ์ฌ์ฉํด์ NULL์ฒ๋ฆฌ๋ฅผ ํด์ค๋ค.
- NVL(์ปฌ๋ผ๋ช , NULL๊ฐ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ค ๋ด์ฉ) : NULL๊ฐ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ค ๋ด์ฉ์ผ๋ก ๋ณ๊ฒฝํด์ ์กฐํ.
์กฐ๊ฑด์ ์ฒ๋ฆฌํด์ฃผ๋ DECODE, CASE ~ WHEN
DBMS์์๋ IF์กฐ๊ฑด์ ์ FUNCTION์ด๋ PROCEDURE๊ฐ์ PL/SQL์์๋ง ์ฌ์ฉํ ์ ์์ด์ ์ผ๋ฐ ์ฟผ๋ฆฌ๋ฌธ์์๋ DECODE, CASE~WHEN์ ์ฌ์ฉํด์ ์กฐ๊ฑด ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผํ๋ค.
-DECODE
-DECODE(์ปฌ๋ผ๋ช or ์กฐํ๋ฐ์ดํฐ, ์กฐ๊ฑด1, ์กฐ๊ฑด1์ด true์ผ ๋ ์คํ๋ ๋ด์ฉ, ์กฐ๊ฑด1์ด false ์ผ ๋ ์คํ๋ ๋ด์ฉ) : ์ปฌ๋ผ์ด๋ ์กฐํํด์จ ๋ฐ์ดํฐ์ ๋ด์ฉ์ด ์กฐ๊ฑด1๊ณผ ๋์ผํ ๊ฒฝ์ฐ true์ผ ๋ ์คํ๋ ๋ด์ฉ์ด ์คํ, ๋์ผํ์ง ์์ ๊ฒฝ์ฐ๋ false์ผ ๋ ์คํ๋ ๋ด์ฉ ์คํ.
DECODE(์ปฌ๋ผ๋ช
or ์กฐํ๋ฐ์ดํฐ,
์กฐ๊ฑด1,
์กฐ๊ฑด1์ด true์ผ ๋ ์คํ๋ ๋ด์ฉ,
์กฐ๊ฑด2,
์กฐ๊ฑด2์ด true์ผ ๋ ์คํ๋ ๋ด์ฉ,
์กฐ๊ฑด3,
์กฐ๊ฑด3์ด true์ผ ๋ ์คํ๋ ๋ด์ฉ,
.....
์กฐ๊ฑดn,
์กฐ๊ฑดn์ด true์ผ ๋ ์คํ๋ ๋ด์ฉ,
์กฐ๊ฑดn์ด false์ผ ๋ ์คํ๋ ๋ด์ฉ)
CASE ~ WHEN
CASE ์ปฌ๋ผ๋ช
or ์กฐํ๋ฐ์ดํฐ
WHEN ์กฐ๊ฑด1 THEN ์กฐ๊ฑด1์ด true์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ด์ฉ
WHEN ์กฐ๊ฑด2 THEN ์กฐ๊ฑด2๊ฐ true์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ด์ฉ
.....
WHEN ์กฐ๊ฑดn THEN ์กฐ๊ฑดn์ด true์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ด์ฉ
ELSE ์กฐ๊ฑด1~์กฐ๊ฑดn๊น์ง ๋ชจ๋ false์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ด์ฉ
END AS ๋ณ์นญ
DECODE์ CASE์ ์ ์ฐจ์ด์
DECODE๋ ์ปฌ๋ผ์ ๊ฐ์ผ๋ก ๋น๊ต๊ฐ ์งํ๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋น๊ตํด์ฃผ๋ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ ์ ์๋ ๋ฐ๋ฉด
CASE์ ์ WHEN์ ์ด true, false๋ฅผ ๋ฆฌํดํ๊ธฐ ๋๋ฌธ์ CASE ์์ ๋น์ด๋๊ณ WHEN์ ์ ์กฐ๊ฑด์์ ๋ฃ์ด๋ ์ฌ์ฉํ ์ ์๋ค.
WHEN์ ์์๋ IS NULL๋ก NULL ๊ฐ์ ๋น๊ตํด์ค์ผ๋๊ณ DECODE์์๋ NULL ๊ฐ ์์ฒด๋ก ๋น๊ต๊ฐ๋ฅํ๋ค.
5. ๋ค์คํ ํจ์(๊ทธ๋ฃน ํจ์)
๋จ์ผํ ํจ์๋ ์ ๋ ฅ๋๋ ํ ํ๋์ ๊ฒฐ๊ณผ๊ฐ ํ๋๊ฐ ๋์ค๋ ํจ์์๋๋ฐ ๋ค์คํ ํจ์๋ ์ฌ๋ฌ๊ฐ ํ์ ์ ๋ ฅ๋์ด ํ๋์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ํจ์.
๋ง์ฝ ํ๋ ๋ณ ํ์ ์ ํ๊ท ์ ๊ตฌํ๋ค๊ณ ์๊ฐํ๋ฉด ํ๋ ๋ณ๋ก ๊ทธ๋ฃน์ ๋ง๋ค์ด์ค์ผ ๋๊ณ ๊ทธ ๊ทธ๋ฃน๋ณ๋ก ์ฐ์ฐ์ด ์ผ์ด๋์ผ ๋๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฃนํจ์๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ทธ๋ฃนํจ์๋ ์ฌ๋ฌ ํ์ ๋ํ ํต๊ณ๋ฅผ ๊ณ์ฐํ๊ณ ์ถ์ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
์ ๋งํ ๊ทธ๋ฃนํจ์๋ค์ GROUP BY์ ํจ๊ป ์ฌ์ฉํ๋ค. GROUP BY์ ์ญํ ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด์ค ์ปฌ๋ผ์ ์ง์ ํ๋ ์ญํ ์ ํ๋ค.
GROUP BY ์ฌ์ฉํ ๋ ์ฃผ์์ ์ SELECT์ ์ ํฌํจ๋ ์ปฌ๋ผ(ํต๊ณํจ์ ์ ์ธ)๋ค์ ๋ชจ๋ GROUP BY์ ์ ๋ช ์๋์ด์ผ ํ๋ค.
๊ทธ๋ฃนํจ์์ ์ข ๋ฅ
- -MAX : ๊ฐ๋ค ์ค ์ต๋ ๊ฐ์ ๋ฐํ
- -MIN : ๊ฐ๋ค ์ค ์ต์ ๊ฐ์ ๋ฐํ
- -AVG : ์ง์ ๋ ๊ฐ๋ค์ ํ๊ท ๊ฐ์ ๋ฐํ
- -COUNT : ์ง์ ๋ ์ปฌ๋ผ์ ํ์ ๊ฐ์๋ฅผ ๋ฐํ
- -SUM : ์ง์ ๋ ๊ฐ๋ค์ ํฉ๊ณ๋ฅผ ๋ฐํ
GROUP BY ์กฐ๊ฑด์ ๋ง๋ค์ด ์ฃผ๋ HAVING
- GROUP BY๋ก ๋ช ์๋ ์ปฌ๋ผ์ ๋ํ ์กฐ๊ฑด์ HAVING์ผ๋ก๋ ๋ง๋ค ์ ์๋ค.
- ๊ตณ์ด HAVING์ ์ฌ์ฉํ์ง ์๊ณ WHERE์ ์ ์ฌ์ฉํด๋ ๋๋ค.
SELECT ๊ตฌ๋ฌธ์ ์์
-SELECT ์ปฌ๋ผ1
, ์ปฌ๋ผ2
, ์ปฌ๋ผ3
, ...
, ์ปฌ๋ผn
FROM ํ
์ด๋ธ๋ช
JOIN ํ
์ด๋ธ๋ช
ON ์กฐ์ธ์กฐ๊ฑด1
AND/OR ์กฐ์ธ์กฐ๊ฑด2
WHERE ์กฐํ์กฐ๊ฑด1
AND/OR ์กฐํ์กฐ๊ฑด2
GROUP BY ๊ทธ๋ฃนํ๋ ์ปฌ๋ผ1, ๊ทธ๋ฃนํ๋ ์ปฌ๋ผ2 ....
HAVING ๊ทธ๋ฃนํ๋ ์ปฌ๋ผ ์กฐ๊ฑด
ORDER BY ์์;
์ค๋์ ์ด๋ ๊ฒ ์ค๋ผํด์ ์๋ฃํ๊ณผ ํจ์ ์ ๋ํด ์์๋ณด์์ต๋๋ค!
๋ค์ Sql ๋ฌธ๋ฒ ๊ณต๋ถ๋ ์ด์ฌํ ํด๋ด์! ๐ง๐ง
'Oracle > sql' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๐ sql ๋ฌธ๋ฒ์ ๊ณต๋ถํ์ ๐] ์๋ธ์ฟผ๋ฆฌ๋? (0) | 2023.04.20 |
---|---|
[๐ sql ๋ฌธ๋ฒ์ ๊ณต๋ถํ์ ๐] JOIN(INNER ,LEFT, RIGHT, FULL, NATURAL... (0) | 2023.04.18 |
[๐ sql ๋ฌธ๋ฒ์ ๊ณต๋ถํ์ ๐] WHERE ์ด๋? (0) | 2023.04.18 |
[๐ sql ๋ฌธ๋ฒ์ ๊ณต๋ถํ์ ๐] ROUND, TRUNC, CEIL, FLOOR (0) | 2023.04.16 |
Dql์ ๋ํด ์์๋ณด์! (0) | 2023.04.11 |