โถ DBMS (Database Management System) : ํ ์ดํฐ๊ด๋ฆฌ์ ๋ฌธํ๋ก๊ทธ๋จ
โถ SQL (Structured Query Language) : ๊ตฌ์กฐํ๋ ์ฟผ๋ฆฌ ์ธ์ด (๊ท์น์๋ ๋ง)
โถ ์คํ : CTRL + ENTER
โถ ๋ง์ง๋ง์ ์ธ๋ฏธ์ฝ๋ก (;)
โถ ํค์๋ = ๋๋ฌธ์ / ์ปฌ๋ผ, ์กฐ๊ฑด = ์๋ฌธ์ => ๋์๋ฌธ์ ๊ตฌ๋ถํ๊ธฐ
โถ ํ์ค์ฃผ์ = --
โถ ์ฌ๋ฌ์ค์ฃผ์ = /* */
โถ ์ ์ ๋ช .ํ ์ด๋ธ๋ช /๋ค๋ฅธ์ฌ์ฉ์ํ ์ด๋ธ์ ๊ทผ
โถSELECT = ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ช ๋ น์ด
โถSELECT * = ๋ชจ๋ ์ปฌ๋ผ ์กฐํ
โถSELECT * FROM ํ ์ด๋ธ๋ช = ํน์ ์ปฌ๋ผ ์กฐํ
โถSELECT ์ปฌ๋ผ๋ช , ์ปฌ๋ผ๋ช FROM ํ ์ด๋ธ๋ช = ์ํ๋ ์ปฌ๋ผ๋ง ์กฐํ
โถDESC ํ ์ด๋ธ๋ช = ํ ์ด๋ธ์ ์ด๋ค ์ปฌ๋ผ์ด ์๋์ง ์กฐํ
โถํํ์(๋ฆฌํฐ๋ด์์(๋ฌธ์), ๋ฆฌํฐ๋ด): ์ปฌ๋ผ ์ด๋ฆ ์ด์ธ์ ์ถ๋ ฅํ๊ธฐ ์ํ๋ ๋ด์ฉ
โถSELECT ์ปฌ๋ผ๋ช 'good' ~
โถ์ปฌ๋ผ ๋ณ์นญ ์ฌ์ฉํ๊ธฐ (๋ณ๋ช ์ " " ํ์)
1) ์ปฌ๋ผ์ด๋ฆ ๋ค์ ๊ณต๋ฐฑ ์ฃผ๊ณ ๋ณ๋ช
2) ์ปฌ๋ผ์ด๋ฆ ๋ค์ As ํค์๋ ์ฌ์ฉ
โถ์ฐ๊ฒฐ(ํฉ์ฑ)์ฐ์ฐ์ , || (๋ฐ๊ธฐํธ) : ์ฐ๊ฒฐํ๋ฉด ํ๋์ ์ปฌ๋ผ์ผ๋ก ์ธ์ํ๋ค
=๋ฌธ์๋ผ๋ฆฌ ๋ํ ๋ || ์ฌ์ฉํด์ผ๋จ
โถWITH
= ์ฝ๋ ์ฌ์ฌ์ฉ, ๊ฐ์ ์ผ ๋ฐ๋ณต
= ์ฟผ๋ฆฌ์ (์ฝ๋์)์ ์ค์ผ ์ ์๋ค.
WITH V_DATA AS (
SELECT NATION, VRANCH, NAME, TO_CHAR(REG_DATE, 'YYYY-MM-DD') REG_DATE
FROM ATE ~~~
)
WITH V_DATA AS {
SELECT 'SWCHOI' NM FROM DUAL
}
LPAD(NM,9,'0')
FROM V_DATA;
โถDISTINCT ์ปฌ๋ผ๋ช FROM ํ ์ด๋ธ๋ช ;
= ์ค๋ณต๊ฐ ์ ๊ฑฐ / 1๊ฐ์ ์ปฌ๋ผ์๋ง ์ ์ด๋ ๋ชจ๋ ์ปฌ๋ผ์ ์ ์ฉ๋๋ค.
SELECT DISTINCT BBS_NM
FROM FW_BBS;
โถNULL = ์ฌ์น์ฐ์ฐ ๋ค ์๋๋ค.
โถWHERE ์ = ์กฐ๊ฑด์ / ์ํ๋ ์กฐ๊ฑด๋ง ๊ณจ๋ผ๋ด๊ธฐ
= SELECT ์ปฌ๋ผ๋ช FROM ํ ์ด๋ธ๋ช WHERE ์ํ๋ ์กฐ๊ฑด;
= ์ซ์ ์ด์ธ์๋ ์์ ๋ฐ์ดํ ํ์ (๋ฌธ์,๋ ์ ์กฐํ๋ '' ๋ฐ์ดํ ์ฃผ์ํ๊ธฐ)
= ์กฐ๊ฑด ์ ๋ ฅ์ ๋ฌธ์๋ ๋์๋ฌธ์๊ตฌ๋ถ
= ๊ทธ๋ฃนํจ์๋ฅผ ๋น๊ต์กฐ๊ฑด์ผ๋ก ์ฌ์ฉ ๋ชปํจ
WHERE COLUMN_NAME = '์ ๋ชฉ'; //์กฐ๊ฑด์ ์ฃผ๋ฉด ์ ๋ชฉ์ธ ์์ด๋ค์ ์ถ๋ ฅ (์ ๋ชฉ ์ปฌ๋ผ์ ์ถ๋ ฅ์ํจ)
WHERE COLUMN_NAME != '์ ๋ชฉ'; // ๋ฐ๋
WHERE COLUMN_NAME <> '์ ๋ชฉ'; // ์กฐ๊ฑด์ ๋ฐ๋
โถWHERE ์ปฌ๋ผ๋ช IS NULL = ๋ ๊ฐ ์ฐพ๊ณ ์ถ์ ๋
โถWHERE ์ปฌ๋ผ๋ช IS NOT NULL = ๋ ๊ฐ ์๋ ๋ชจ๋ ๊ฐ ์ฐพ๊ณ ์ถ์ ๋
โถWHERE ์ปฌ๋ผ๋ช = &์ปฌ๋ผ๋ช ;
=์ฌ์ฉ์์๊ฒ ๊ฐ์ ์ ๋ ฅ๋ฐ๊ธฐ
โถ == : ๋ฌธ์ ํฌ๊ธฐ ๋น๊ต (์์คํค ๊ฐ ๋น๊ต)
โถBETWEEN = ํน์ ๊ตฌ๊ฐ ๋ชจ๋ ๊ฐ ์ถ๋ ฅ / ๊ตฌ๊ฐ ๋ฐ์ดํฐ ์กฐํํ๊ธฐ
= ์์ ๊ฐ์ ์, ํฐ ๊ฐ์ ๋ค (๋ ๊ฐ ํฌํจ ๊ฒฐ๊ณผ ์ถ๋ ฅํจ)
= (์๋ ๋๋ฆผ)
WHERE sal BETWEEN 200 AND 3000;
โถAND /์กฐ๊ฑด์ถ๊ฐ
- BETWEEN ๋ณด๋ค ์๋ ๋น ๋ฆ
= ์กฐ๊ฑด ๋ฐ๋๋ก ์์ฑํ๋ฉด ์คํ์ด ์๋๋ค
WHERE sal >= 2000 AND sal <= 3000;
โถOR = ๋ ์ค ํ๋์ ์กฐ๊ฑด๋ง ๋ง์กฑ
=AND๊ฐ ์ฐ์ ์์ ๋์, AND๋ ๊ดํธํด์ค์ผ๋จ
โถIN = ์ฌ๋ฌ์กฐ๊ฑด ๊ฐํธ๊ฒ์
= ์ซ์, ๊ธ์, ๋ ์ง ๊ฐ๋ฅ / ์๋ ๋น ๋ฆ
โถLIKE = ๋น์ทํ ๊ฒ๋ค ๋ชจ๋ ์ฐพ๊ธฐ
= ์ซ์, ๊ธ์, ๋ ์ง ๊ฐ๋ฅ / ๋ฐ์ดํ๋ก ๋ฌถ๊ธฐ
= '%' ์ ํ์์ด 0๊ฐ~ /' _' ํ๊ธ์~์ ํ์์ด
= ์ด๊ฑด ์กฐ๊ฑด์์ ๋จผ์ ์ฌ์ฉ๋๋ฉด ์ฑ๋ฅ์ด ์ต์
WHERE sal LIKE '1%';
โถ์ฐ์ ์ฐ์ฐ์ ์ฐ์ ์์
โถ๋ ์ง = ํด์๋ก ์ต์ ๋ ์ง
โถINSERT INTO ํ ์ด๋ธ๋ช (์ปฌ๋ผ๋ช 1, ์ปฌ๋ผ๋ช 2)
โถVALUES ('๊ฐ1','๊ฐ2');
โถORDER BY = ์ ๋ ฌ
= SQL ๊ฐ์ฅ ๋ง์ง๋ง์ ์ ๋๋ค !!
= ๊ธฐ๋ณธ๊ฐ์ ASC(์ค๋ฆ์ฐจ) , DESC(๋ด๋ฆผ์ฐจ)
= ์ํ์๋๊ฐ ๋๋ ค์ง๋ค, ์ต๋ํ ์ฌ์ฉํ์ง ๋ง๊ธฐ (์ธ๋ฑ์ค๋ก ๋์ฒด)
= WHERE ๋ก ์กฐ๊ฑด ์ ๋ฆฌํ๊ณ ์ ๋ ฌํ๋ ๊ฒ์ ๊ด์ฐฎ๋ค
= ๋ฌธ์๋ ํ๊ธ, ์๋ฌธ์, ๋๋ฌธ์ (์์คํค์ฝ๋ ๊ธฐ์ค) ๊ตฌ๋ถ๋๋ค.
ORDER BY ename;
ORDER BY 1,2;
--2๋ฅผ ์ ๋ ฌํ๊ณ ๋์ผํ 2๋ 1๋ก ์ฌ์ ๋ ฌ
ORDER BY deptno ASC, sal DESC
order by 1 ; 1๋ฒ๊บผ๋ก ์ ๋ ฌ
order by 1 desc ; ์ญ์์ผ๋ก ์ ๋ ฌ
โถDUAL
= ์์ฒด์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฐ์์ ํ ์ด๋ธ
select 'a' as aa; // ์๋ฌ๊ฐ ์๊น
์๋ก์ด ํ
์ด๋ธ์ ๋ง๋ค๊ณ ์ถ์๋ฐ...
select 'a' as aa
from dual;
โถ์งํฉ์ฐ์ฐ์ 4๊ฐ์ง
= ์ปฌ๋ผ ๊ฐ์๊ฐ ๋์ผํด์ผํ๋ค
= ๋ฐ์ดํฐํ์ด ๋์ผํด์ผํ๋ค
= ์ด๋ฆ์ ๋ฌ๋ผ๋ ๋๋ค
= ์ฐ๊ฒฐ์ด ๋ง์์ง์๋ก ์ฑ๋ฅ์ด ๋จ์ด์ง๋ค
โถUNION /๋ ์งํฉ์ ๋ํ๋ ์ฐ์ฐ
= ์ค๋ณต๊ฐ ์ ๊ฑฐ O , ์ ๋ ฌ O
= ๋จผ์ ๋ถ์ธ๊ฒ ํ์ดํ์ด ๋จ ( order by ๋ค์๋ถ์ธ๊ฑฐ ; ํ๋ฉด ์ค๋ฅ๊ฐ ๋จ๋๊ฑฐ์)
select 'a' from dual
union
select 'b' from dual;
โถUNION ALL /๋ ์งํฉ์ ๋ํ๋ ์ฐ์ฐ
= ์ค๋ณต๊ฐ ์ ๊ฑฐ X , ์ ๋ ฌ X
= ๋จผ์ ๋ถ์ธ๊ฒ ํ์ดํ์ด ๋จ ( order by ๋ค์๋ถ์ธ๊ฑฐ ; ํ๋ฉด ์ค๋ฅ๊ฐ ๋จ๋๊ฑฐ์)
โถINTERSECT / ๊ต์งํฉ
= ์ ๋ ฌ์ ๋๋ฐํด์ ์๋๊ฐ ๋๋ฆฌ๋ค
โถMINUS /์ฐจ์งํฉ
= ํฐ ์งํฉ์์ ์์ ์งํฉ์ ๋บ๋ค
= ์์์ ์ฃผ์ํด์ผํ๋ค. (SELECT(ํฐ๊ฐ) -> MINUS -> SELECT(์์๊ฐ))
= ์ ๋ ฌ์ ๋๋ฐํด์ ์๋๊ฐ ๋๋ฆฌ๋ค
โถํจ์
1) ๋จ์ผํํจ์ = ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์ฒ๋ฆฌํ๋ค
2) ๋ณต์ํํจ์(๊ทธ๋ฃนํจ์) = ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์ ๋ ฅ๋ฐ์ ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ ๋ค
โถ๋จ์ผํํจ์
1) ๋ฌธ์ํจ์
โถINITCAP() /๋๋ฌธ์๋ณํ
= ๋งจ์ฒ์ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ์ด๋ฉด ๊ณต๋ฐฑ์ ๊ฑด๋๋ฐ๊ณ ๋๋ฌธ์๋ก ๋ง๋ ๋ค.
SELECT INITCAP(' ' || GRORP_CD) AS GROUP_CD
โถLOWER /all ์๋ฌธ์
โถUPPER /all ๋๋ฌธ์
WHERE LOWER(GROUP_CD) = LOWER('SUPER');
--๋์๋ฌธ์ ๋ฌ๋ผ๋ ๊ฒ์๋๋๋ก
--๋ค์ด์ค๋๊ฐ ๋ฌด์กฐ๊ฑด ์๋ฌธ์OR ๋๋ฌธ์ DB์ ๋ค์ด๊ฐ๊ฒ๋ ๋ฌด์กฐ๊ฑด ์๋ฌธ์OR๋๋ฌธ์
โถLENGTH() /๋ฌธ์์ด๊ธธ์ด๊ฐ
โถLENGTHB() /๋ฌธ์์ด๋ฐ์ดํธ๊ฐ
= utf-8 ํ๊ธํ๊ธ์๋น 3๋ฐ์ดํธ
โถCONCAT()/ ๋ฌธ์์ด๊ฒฐํฉ
= || ์ฐ์ฐ์์ ๋์ผํจ
โ โถSUBSTR() /ํน์ ๋ฌธ์ ์ถ์ถ
=์ค->์ผ , (-) ์ผ->์ค ๊ฒ์ ํ ์ค->์ผ
= 0=1์ ์ธ๋ฑ์ค ์์์์น , 2~๋๊น์ง (์ด๋๋ฒ์?)
SUbstr ( '', -3); //์ ์
substr( , instr (,) ์์น ๋ฐํ)+1) //๋์
7→ / 8→
-- ํ์ฅ์๊ณจ๋ผ๋ด๊ธฐ
โถSUBSTRB() / ํน์ ๋ฐ์ดํธ๋งํผ ์ถ์ถ
โถINSTR() /ํน์ ๊ธ์ ์์น ์ถ์ถ
= ํน์ ๊ธ์๋ฅผ N1์์ ์์ํด์ N2๋ฒ์งธ์ธ์ง ์ฐพ๊ธฐ (๋๋ค ์๋ต๊ฐ๋ฅ, ์๋ 1)
=์์์์น๋ฅผ -๋ก ์ฃผ๋ฉด ์ค->์ผ ์ผ๋ก ๊ฒฐ๊ด๊ฐ ๊ฒ์ํจ
SELECT 'A-B-C-D', INSTR('A-B-C-D','-',N1,N2)
select 'a-b-c-d', instr('a-b-c-d','-',-3,1)
from dual; --4
select name, tel, substr(tel,0,instr(tel,')')-1) ์ง์ญ๋ฒํธ
from student
where deptno1 = 201;
โถLPAD() /์ผ์ชฝ์ ์ฑ์ด๋ค
= 10์๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ ๋น์๋ฆฌ๋ ๊ธฐํธ๋ก ์ฑ์ด๋ค.
SELECT name, id, LPAD(id,10,'*')
select LPAD(ename,9,12345)
from emp
where deptno = 10;
โถRPAD() /์ค๋ฅธ์ชฝ์ ์ฑ์ด๋ค
select RPAD(ename,9,substrb('123456789',lengthb(ename)+1))
from emp
where deptno = 10;
โถTRIM() / ์ผ์ค ๋๋ค ์ ๊ฑฐํ๊ธฐ
โถLTRIM() /์์๊ธ์ ์ ๊ฑฐํ๊ธฐ
SELECT ename, RTRIM(ename,'R') "RTRIM"
โถRTRIM() /๋ง์ง๋ง๊ธ์ ์ ๊ฑฐํ๊ธฐ
โ โถREPLACE() /๋ฌธ์1์ ๋ฌธ์2๋ก ๋ฐ๊พธ์ด์ ์ถ๋ ฅ
REPLACE(ename, SUBSTR(ename, 1, 2), '*')
-- PLACE (์ปฌ๋ผ,์ฐพ์,๋ฐ๊ฟ)
-- ์ 3๋ถํฐ ๋ค๋ก ๋ง์คํน
select ename , replace(ename, substr(ename,2,1),'--')
from emp
where deptno = 20;
select jumin ,replace(jumin, substr(jumin,7),'*******')
from student
where deptno1 = 101;
2) ์ซ์ํจ์
โถROUND() /๋ฐ์ฌ๋ฆผ
=์ถ๋ ฅ ์๋ฆฟ์์ ๋ฐ๋ผ ๊ฐ์ด ๋ฌ๋ผ์ง (์ฃผ์!!)
โถTRUNC() /๋ฒ๋ฆผ
โถMOD() /๋๋จธ์ง
โถCEIL() /๊ทผ์ ํฐ ์ ์
โถFLOOR() /๊ทผ์ ์์ ์ ์
โถPOWER() /์น์
3) ๋ ์ง๊ด๋ จํจ์
โถSYSDATE /ํ์ฌ ์์คํ ์๊ฐ ์ถ๋ ฅ
โถMONTHS_BETWEEN / ๋๋ ์ง ๊ฐ์ ์ ์ถ๋ ฅ
= ํฐ ๋ ์ง๋ฅผ ์จ์ผ ์์๊ฐ ๋์ด
โถADD_MONTHS() /์ซ์๋งํผ ๋ฌ ์ถ๊ฐ
โถNEXT_DAY() / ๋์์ค๋ ์ต๊ทผ ์์ผ๋ ์ง ๋ฐํ
โถLAST_DAY() / ๋ ์ง๊ฐ ์ํ ๋ง์ง๋ง๋ ์ถ๋ ฅ
โถROUND() / ์ ์ค๋ฅผ ๋์ด์๋ฉด ๋ค์๋ ์ง, ์๋๋ฉด ๋น์ผ์ถ๋ ฅ
โถTRUNC() /์ ์ค๋ฅผ ๋์ด์๋ฉด ๋ฌด์กฐ๊ฑด ๋น์ผ์ถ๋ ฅ
4) ํ๋ณํํจ์
= ๋ฌต์์ : ์ซ์์ฒ๋ผ ์๊ธด ๋ฌธ์ (์ซ์ํํ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผํ๋ค) ex) 'A' ์๋จ
= ๋ช ์์ :
SELECT 2+ TO_NUMBER('2') FROM dual
โถTO_CHAR
= ์๋ฆฟ์๋ฅผ ์์์ผํจ ?
= '' ์์๋ฐ์ดํ๋ก ๋ฌถ๊ธฐ
= ๋ ์ง-> ๋ฌธ์
YYYY RRRR
YY RR YEAR
MM MON MOTH
DD DAY DOTH
HH24 HH MI SS
= ์ซ์ -> ๋ฌธ์
9 0 $ . ,
โถTO_NUMBER()
= ์ซ์์ฒ๋ผ ์๊ธด ๋ฌธ์ -> ์ซ์
โถASCII()
= ์์คํค์ฝ๋๋ก ๋ณํ
โถTO_DATE
= ๋ ์ง์ฒ๋ผ ์๊ธด ๋ฌธ์ -> ๋ ์ง
5) ์ผ๋ฐํจ์
โถNVL() /NULL๋ง๋๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ์นํ
SELECT NVL COLUMN_LENGTH
SELECT NVL(COLUMN_LENGTH, 0) //NULL ๊ฐ์ด๋ฉด 0์ผ๋ก ๋์ฒดํ๋ค.
โถNVL2(COL1,COL2,COL3) /NULL์๋๋ฉด CO2, ๋ง์ผ๋ฉด COL3 ์นํ
=๋ง์ด ์ฌ์ฉํ์ง์์
=ํ๋์ ์ปฌ๋ผ์ด๋๋๋ฐ ๋ฐ์ดํฐํ์ด ๊ฐ์์ผ๋๋ค !
=์ผํญ์ฐ์ฐ
โ โถDECODE() /IF๋ฌธ ์ฌ์ฉํด์ผํ๋ ์กฐ๊ฑด๋ฌธ ์ฒ๋ฆฌ (6๊ฐ์ง) /๋น๊ต์กฐ๊ฑด =(๊ฐ๋ค) ์ฒ๋ฆฌ
DECODE(A,B,'1',null)
DECODE(A,B,'1','2')
DECODE(A,B,'1',C,'2','3')
DECODE(A,B,DECODE(C,D,',null))
DECODE(A,B,DECODE(C,D,'1','2'))
DECODE(A,B,DECODE(C,D,'1','2')'3')
SELECT deptno, name,DECODE(deptno, 101, 'computer~~')
from professor;
A๊ฐ B๋ฉด 1
A๊ฐ B๋ฉด 1, ์๋๋ฉด 2
A๊ฐ B๋ฉด 1, A๊ฐ C๋ฉด 2, ๋๋ค ์๋๋ฉด 2
A๊ฐ B์ด๊ณ , C๊ฐ D์ด๋ฉด 1, ์๋๋ฉด NULL
A๊ฐ B์ด๊ณ , C๊ฐ D์ด๋ฉด 1, ์๋๋ฉด 2
A๊ฐ B์ด๊ณ , (C๊ฐ D์ด๋ฉด 1, ์๋๋ฉด2) A๊ฐ B๊ฐ ์๋๋ฉด 3
โถCASE / ๋น๊ต์กฐ๊ฑด ๋ค์ํ๊ฒ ์ฒ๋ฆฌํ ๋
= ๊ฐ ์ฒ๋ฆฌ
= ๋ด๋ถ์ ์ฝค๋ง ์ฌ์ฉ ์ํจ XX (!!!)
CASE SUBSTR(TEL,1,INSTR(TEL,')')-1)
WHEN '02' THEN '์์ธ' --CASE ๊ฐ WHEN ์ด๋ฉด ์์ธ๋ก ์ถ๋ ฅํ๋ค
WHEN '031' THEN
ELSE '๊ธฐํ' END
-- CASE์ ๊ฑธ๋ฆฌ์ง ์๋ ์ ๋ค์ด๋ฉด ELSE
3 AND 3 TEHN '1/4' --≤3 THEN '1/4' ๋ก ๋ฐ๊ฟ ์ ์๋ค.
4 AND 6 TEHN '2/4'
7 AND 9 TEHN '3/4'
10 AND 12 TEHN '4/4' --ELSE '4/4' ๋ก ๋ฐ๊ฟ ์ ์๋ค.
END QUA
6) ์ ๊ท์
=๋ค์ํ ์กฐ๊ฑด ์กฐํํ๊ธฐ
^ $ . * [] [^]
โถREGEXP_LIKE /ํน์ ํจํด ๋งค์นญ๊ฒฐ๊ณผ
โถREGEXP_REPLACE /ํน์ ํจํด ์นํ
โถREGEXP_COUNT /๋ฌธ์๊ฐ์ ์ฐพ๊ธฐ
โถREGEXP_SUBSTR /ํน์ ๋ฌธ์ ์ถ์ถ
โถ๊ทธ๋ฃนํํจ์
1) GROUP ํจ์ ์ข ๋ฅ
SELECT LOG_CODE ~~~~
FROM
WHERE LOG_CODE = 'BAV';
/*๊ทธ๋ฃนํจ์์ฌ์ฉํ ๋ ๋ค๋ฅธ ์
๋ ํธ๋ ํํ( ๋ฃ์๋ ค๋ฉด (์ง๊ณํด์ ๋ฃ๊ธฐ์ํด์)
GROUP BY LOG_CODE; ๋ผ๊ณ ์ ์ด์ค์ผ๋จ
๊ทธ๋ฃน ๋ฐ์ด๋ ์ฌ๋ฌ๊ฐ ๋ฃ์ด์ค ์ ์์*/
์ฑ๋ณ๋ก ์นด์ดํธํ๊ธฐ ์ํด? ์ ๋ ๊ทธ๋ฃนํ
์ฐ๋ น๋ ์ถ๊ฐํ๋ ค๋ฉด ? ์ ๋ , ๋์ด ๊ทธ๋ฃนํ
SELECT LOG_CODE, COUNT(LOG_DAY) , SUM(LOG_DAY)
FROM ATBMS2017.AUDIT_ADMIN
WHERE LOG_CODE = 'BAL'
GROUP BY LOG_CODE, LOGMONTH;
WITH V_DATA AS (
SELECT NULL NM, 100 A FROM DUAL UNION ALL
SELECT 'A' NM, NULL A FROM DUAL UNION ALL
SELECT 'A' NM, 100 A FROM DUAL UNION ALL
SELECT 'A' NM, 100 A FROM DUAL)
SELECT NVL(NM, 'B') NAME, COUNT(A), SUM(A), AVG(A), AVG(NVL(A, 0))
FROM V_DATAGROUP
BY NVL(NM, 'B')
/* NVL(NM,'B') NAME
GROUP BY NAME
๊ทธ๋ฃน๋ฐ์ด์ ๋ฃ์ผ๋ฉด ์๋จ ( ์ค์ ์ปฌ๋ผ๋ช
๋ง ๋ฃ์ด์ฃผ์ธ์)*/
โถCOUNT(*) /๋ฐ์ดํฐ ์ด ๊ฑด์ NULL O
โถCOUNT(COMM) / ๋ฐ์ดํฐ ์ด ๊ฑด์ NULL X
โถSUM() / ๋ฐ์ดํฐ ํฉ๊ณ
โถAVG() / ๋ฐ์ดํฐ ํ๊ท ๊ฐ
= ์ฐ์ฐ ๋์ค null ๊ฐ์ด ๋์ค๋ฉด ์ ์ธ์ํจ๋ค.
AVG(NVL(A,0))
โถMAX() /๋ฐ์ดํฐ ๊ฐ์ฅ ํฐ ๊ฐ
โถMIN() /๋ฐ์ดํฐ ๊ฐ์ฅ ์์ ๊ฐ
โถSTDDEV() /ํ์คํธ์ฐจ
โถVARIANCE() /๋ถ์ฐ
โถGROUP BY / ํน์ ์กฐ๊ฑด์ผ๋ก ์ธ๋ถ์ ์ธ ๊ทธ๋ฃนํ
= GROUP BY ์ ์ค๋ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก SELECT ๋ฅผ ์คํํ๋ค.
= ๋ฐ๋์ SELECT ์ ์ ์ปฌ๋ผ, ํํ์์ GROUP BY ์ ์ ์ฌ์ฉ๋์ด์ผํ๋ค. (์ค๋ฅ)
= GROUP BY ์ ์ ์ฌ์ฉ๋ ์ปฌ๋ผ์ SELECT ์ ์ฌ์ฉ๋์ง ์์๋ ๋๋ค.
= GROUP BY ์ ์๋ ๋ฐ๋์ ์ปฌ๋ผ๋ช ๋ง ์ฌ์ฉ, Alias ๋ ์ฌ์ฉ ๊ธ์ง
โถHAVING / ๊ทธ๋ฃนํํ ์กฐ๊ฑด ๊ฒ์ํ๊ธฐ
= ๊ทธ๋ฃนํจ์๋ WHERE ์ ๋ก ๋น๊ต ์กฐ๊ฑด ์ธ ์๊ฐ ์์
= ์์น๋ GROUP BY ์ ์๋ ์๊ด์์
โถ๋ค์ํ ๋ถ์ ํจ์๋ค
โถROLLUP() /์๊ณ๊ฐ ์๋ ๊ณ์ฐ
= GROUP BY ํ์ฅํํ
= ์๊ณ์ ๊ธฐ์ค์ด ๋๋ ์ปฌ๋ผ๋ค ์๊ฐ N = N+1Level ์๊ณ๊ฐ ์์ฑ
= ์ง์ ๋ ์ปฌ๋ผ ์์๊ฐ ๋ฐ๋๋ฉด ๊ฒฐ๊ณผ๋ ๋ฐ๋๋ฏ๋ก ์ฃผ์
ROLLUP ๊ทธ๋ฃน (DEPTNO, JOB)
๊ธฐ๋ณธ์ DEPNO ๋ค์์๋ถํฐ ์ก์๋ํ ์๋ธํ ํ์ ๋ง๋ค์ด์ค๋ค
โถCUBE() /์๊ณ, ์ ์ฒด์ด๊ณ ์๋ ๊ณ์ฐ
= ์ง์ ๋ ์ปฌ๋ผ์๊ฐ N , 2*N์น ์๊ณ๊ฐ ์์ฑ๋จ
โถGROUPING SETS() / ๊ทธ๋ฃนํ ์กฐ๊ฑด์ด ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ
= ํ๋์ ํ ์ด๋ธ์ ์ฌ๋ฌ๊ฐ์ง ๊ทธ๋ฃนํจ์๊ฐ ์ฌ์ฉ๋ ๋
โถLISTAGG() / ๊ทธ๋ฃนํ ํจ์
= ????
โถPIVOT() / ๋จ์ ๋ณ๊ฒฝ
= row ๋จ์๋ฅผ column ๋จ์๋ก
โถUNPIVOT() / ๋จ์ ์ญ๋ณ๊ฒฝ
= column ๋จ์๋ฅผ row ๋จ์๋ก
โถLAG() /์ด์ ํ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
โถLEAD() / ์ดํ์ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
โถRANK() / ์์ ์ถ๋ ฅ
โถDENSE_RANK /์์ํจ์
= ๋์ผํ ์์๋ฅผ ํ๋์ ๊ฑด์๋ก ์ทจ๊ธํจ
= ์ฐ์๋ ์์๋ฅผ ๋ณด์ฌ์ค
โถROW_NUMBER() /์์ํจ์
= ๋์ผํ ๊ฐ์ด๋ผ๋ ๊ณ ์ ์ ์์๋ฅผ ๋ถ์ฌํจ
โถSUM() OVER / ๋๊ณ ๊ตฌํ๊ธฐ
โถRATIO_TO_REPORT() / ํ๋งค ๋น์จ ๊ตฌํ๊ธฐ
โถLAG() / ํ์ฉํ์ฌ ์ฐจ์ด ๊ตฌํ๊ธฐ