์ด์
์ด ๊ธฐ์ฌ์์๋ ์ด ๊ฐ๋
์ ํตํด ์ด์ ๋
ผ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ธฐ์ ์ฝ๊ธฐ์ ๊ท ํ์ ๋น ๋ฅด๊ณ ํธ๋ฆฌํ๊ฒ ์ ์งํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ต์ ์์ฉ DBMS(ํนํ Oracle ๋ฐ Microsoft SQL Server)์์๋ ์ ์ฌํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๋ ์๋๊ฐ ์์์ต๋๋ค. ๊ธฐ์ฌ ๋์์ ๋๋ ๊ทธ๋ค์ด ํ ์ผ์ ๊ฐ๋ณ๊ฒ ๋งํ๋ฉด ๊ทธ๋ค์ง ์ ํ๋ฆฌ์ง ์์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค ๊ฒ์
๋๋ค.
๊ธฐ์
์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ดํด๋ฅผ ๋๊ธฐ ์ํด ์๋ฅผ ๋ค์ด ์ค๋ช ์ ์์ํ๊ฒ ์ต๋๋ค. ์ง์ ์์ ์ด ๊ธ์ฌ๊ฐ ํฌํจ๋ ๋ถ์ ๋ชฉ๋ก์ ๋ฐํํ๋ ๋ ผ๋ฆฌ๋ฅผ ๊ตฌํํด์ผ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
CLASS Department โะัะดะตะปโ;
name โะะฐะธะผะตะฝะพะฒะฐะฝะธะตโ = DATA STRING[100] (Department);
CLASS Employee โะกะพัััะดะฝะธะบโ;
department โะัะดะตะปโ = DATA Department (Employee);
salary โะะฐัะฟะปะฐัะฐโ = DATA NUMERIC[10,2] (Employee);
countEmployees โะะพะป-ะฒะพ ัะพัััะดะฝะธะบะพะฒโ (Department d) =
GROUP SUM 1 IF department(Employee e) = d;
salarySum โะกัะผะผะฐัะฝะฐั ะทะฐัะฟะปะฐัะฐโ (Department d) =
GROUP SUM salary(Employee e) IF department(e) = d;
SELECT name(Department d), countEmployees(d), salarySum(d);
๋ชจ๋ DBMS์์ ์ด ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๋ณต์ก์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. O(์ง์์)์ด ๊ณ์ฐ์ ์ํด์๋ ์ ์ฒด ์ง์ ํ ์ด๋ธ์ ์ค์บํ ๋ค์ ๋ถ์๋ณ๋ก ๊ทธ๋ฃนํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ํ ์ ํํ ๊ณํ์ ๋ฐ๋ผ ์ฝ๊ฐ์ (๋ถ์๋ณด๋ค ์ง์ ์๊ฐ ๋ ๋ง์ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค) ๋ณด์ถฉ์ด ์์ ๊ฒ์ ๋๋ค. O(๋ก๊ทธ ์ง์ ์) ๋๋ O(ํ๊ณผ์) ๊ทธ๋ฃนํ ๋ฑ์ ์ํด.
์คํ ์ค๋ฒํค๋๋ DBMS๋ง๋ค ๋ค๋ฅผ ์ ์์ง๋ง ๋ณต์ก์ฑ์ ์ด๋ค ์์ผ๋ก๋ ๋ณํ์ง ์์ต๋๋ค.
์ ์๋ ๊ตฌํ์์ ๊ธฐ๋ฅ์ DBMS๋ ๋ถ์์ ํ์ํ ๊ฐ์ ๊ณ์ฐํ๋ ํ๋์ ํ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋ค์ ๋ถ์ ํ ์ด๋ธ๊ณผ JOIN์ ๋ง๋ค์ด ์ด๋ฆ์ ์ป์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ ํจ์์ ๋ํด ์ ์ธํ ๋ ํน๋ณํ MATERIALIZED ๋ง์ปค๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์์คํ ์ ๊ฐ ๊ธฐ๋ฅ์ ๋ํด ํด๋น ํ๋๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค. ํจ์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ๋์ผํ ํธ๋์ญ์ ์์ ํ๋ ๊ฐ๋ ๋ณ๊ฒฝ๋ฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ก์ธ์คํ๋ฉด ์ฌ์ ๊ณ์ฐ๋ ํ๋์ ์ก์ธ์ค๋ฉ๋๋ค.
ํนํ, ํจ์์ MATERIALIZED๋ฅผ ์ค์ ํ ๊ฒฝ์ฐ ์ง์ ์ ะธ ๊ธ์ฌ ํฉ๊ณ, ๊ทธ๋ฌ๋ฉด ๋ถ์ ๋ชฉ๋ก์ด ํฌํจ๋ ํ ์ด๋ธ์ ๋ ๊ฐ์ ํ๋๊ฐ ์ถ๊ฐ๋์ด ์ง์ ์์ ์ด ๊ธ์ฌ๊ฐ ์ ์ฅ๋ฉ๋๋ค. ์ง์, ๊ธ์ฌ ๋๋ ๋ถ์ ์์์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์์คํ ์ ์ด๋ฌํ ํ๋์ ๊ฐ์ ์๋์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ์ ์ฟผ๋ฆฌ๋ ์ด๋ฌํ ํ๋์ ์ง์ ์ก์ธ์คํ๊ณ ๋ค์์์ ์คํ๋ฉ๋๋ค. O(ํ๊ณผ์).
์ ํ ์ฌํญ์ ๋ฌด์์ ๋๊น? ๋จ ํ ๊ฐ์ง: ์ด๋ฌํ ํจ์์๋ ํด๋น ๊ฐ์ด ์ ์๋๋ ์ ํํ ์์ ์ ๋ ฅ ๊ฐ์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌดํํ ์์ ํ์ ๊ฐ์ง ํ ์ด๋ธ์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฐ์ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋ง๋๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ :
employeesCount โะะพะปะธัะตััะฒะพ ัะพัััะดะฝะธะบะพะฒ ั ะทะฐัะฟะปะฐัะพะน > Nโ (Department d, NUMERIC[10,2] N) =
GROUP SUM salary(Employee e) IF department(e) = d AND salary(e) > N;
์ด ํจ์๋ ์ซ์ N์ ๋ฌดํํ ์์ ๊ฐ์ ๋ํด ์ ์๋ฉ๋๋ค(์: ์์ ๊ฐ์ด ์ ํฉํจ). ๋ฐ๋ผ์ MATERIALIZED๋ฅผ ๋ฃ์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ ๊ธฐ์ ์ ์ ํ์ด ์๋๋ผ ๋ ผ๋ฆฌ์ ์ ํ์ ๋๋ค(์ฆ, ๊ตฌํํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ด ์๋๋๋ค). ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ํ์ด ์์ต๋๋ค. ๊ทธ๋ฃนํ, ์ ๋ ฌ, AND ๋ฐ OR, PARTITION, ์ฌ๊ท ๋ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ด์ ๊ธฐ์ฌ์ ๋ฌธ์ 2.2์์๋ ๋ ํจ์ ๋ชจ๋์ MATERIALIZED๋ฅผ ๋ฃ์ ์ ์์ต๋๋ค.
bought 'ะัะฟะธะป' (Customer c, Product p, INTEGER y) =
GROUP SUM sum(Detail d) IF
customer(order(d)) = c AND
product(d) = p AND
extractYear(date(order(d))) = y MATERIALIZED;
rating 'ะ ะตะนัะธะฝะณ' (Customer c, Product p, INTEGER y) =
PARTITION SUM 1 ORDER DESC bought(c, p, y), p BY c, y MATERIALIZED;
SELECT contactName(Customer c), name(Product p) WHERE rating(c, p, 1997) < 3;
์์คํ ์์ฒด๋ ์ ํ ํค๊ฐ ์๋ ํ๋์ ํ ์ด๋ธ์ ์์ฑํฉ๋๋ค. ๋น ๋ฅธ , ํ๋ก๋ํธ ะธ ์ ์, ์ฌ๊ธฐ์ ๋ ๊ฐ์ ํ๋๋ฅผ ์ถ๊ฐํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ผ๋ฉด ํด๋น ํ๋ ๊ฐ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด๋ฌํ ํจ์๋ฅผ ์ถ๊ฐ๋ก ํธ์ถํ๋ฉด ๊ณ์ฐ๋์ง ์๊ณ ํด๋น ํ๋์์ ๊ฐ์ ์ฝ์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ด ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ฉด ์ฟผ๋ฆฌ์์ ์ฌ๊ท(CTE)๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ํนํ ํ์/์์ ๊ด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋ฆฌ๋ฅผ ํ์ฑํ๋ ๊ทธ๋ฃน์ ๊ณ ๋ คํ์ญ์์ค(๊ฐ ๊ทธ๋ฃน์๋ ์์์ ๋ํ ๋งํฌ๊ฐ ์์).
parent = DATA Group (Group);
๊ธฐ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ฌ๊ท ๋ ผ๋ฆฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ ์ ์์ต๋๋ค.
level (Group child, Group parent) = RECURSION 1l IF child IS Group AND parent == child
STEP 2l IF parent == parent($parent);
isParent (Group child, Group parent) = TRUE IF level(child, parent) MATERIALIZED;
๊ธฐ๋ฅ ๋๋ฌธ์ isParent MATERIALIZED๋ก ํ์๋๋ฉด ๋ ๊ฐ์ ํค(๊ทธ๋ฃน)๊ฐ ์๋ ํ ์ด๋ธ์ด ์์ฑ๋ฉ๋๋ค. isParent ์ฒซ ๋ฒ์งธ ํค๊ฐ ๋ ๋ฒ์งธ ํค์ ํ์์ธ ๊ฒฝ์ฐ์๋ง true์ ๋๋ค. ์ด ํ ์ด๋ธ์ ํญ๋ชฉ ์๋ ๊ทธ๋ฃน ์์ ํธ๋ฆฌ์ ํ๊ท ๊น์ด๋ฅผ ๊ณฑํ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด ํน์ ๊ทธ๋ฃน์ ์์ ์๋ฅผ ๊ณ์ฐํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ค์ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
childrenCount (Group g) = GROUP SUM 1 IF isParent(Group child, g);
SQL ์ฟผ๋ฆฌ์๋ CTE๊ฐ ์์ต๋๋ค. ๋์ ๊ฐ๋จํ GROUP BY๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ด ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ฉด ํ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฝ๊ฒ ๋น์ ๊ทํํ ์๋ ์์ต๋๋ค.
CLASS Order 'ะะฐะบะฐะท';
date 'ะะฐัะฐ' = DATA DATE (Order);
CLASS OrderDetail 'ะกััะพะบะฐ ะทะฐะบะฐะทะฐ';
order 'ะะฐะบะฐะท' = DATA Order (OrderDetail);
date 'ะะฐัะฐ' (OrderDetail d) = date(order(d)) MATERIALIZED INDEXED;
ํจ์๋ฅผ ํธ์ถํ ๋ ๋ฐ์ดํฐ ์ฃผ๋ฌธ ๋ผ์ธ์ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๊ฐ ์๋ ํ๋๋ ์ฃผ๋ฌธ ๋ผ์ธ์ด ์๋ ํ ์ด๋ธ์์ ์ฝํ์ง๋๋ค. ์ฃผ๋ฌธ ๋ ์ง๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์์คํ ์์ฒด์์ ๋ผ์ธ์ ๋น์ ๊ทํ๋ ๋ ์ง๋ฅผ ์๋์ผ๋ก ๋ค์ ๊ณ์ฐํฉ๋๋ค.
์ฅ์
์ด ์ ์ฒด ๋ฉ์ปค๋์ฆ์ ๋ฌด์์ ์ํ ๊ฒ์ ๋๊น? ๊ธฐ์กด DBMS์์๋ ์ฟผ๋ฆฌ๋ฅผ ๋ค์ ์์ฑํ์ง ์๊ณ ๋ ๊ฐ๋ฐ์๋ DBA๋ ์ธ๋ฑ์ค๋ฅผ ๋ณ๊ฒฝํ๊ณ , ํต๊ณ๋ฅผ ํ์ธํ๊ณ , ์ฟผ๋ฆฌ ํ๋๋์๊ฒ ์คํ ๋ฐฉ๋ฒ์ ์๋ ค์ค ์๋ง ์์ต๋๋ค(ํํธ๋ ์์ฉ DBMS์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค). ์๋ฌด๋ฆฌ ๋ ธ๋ ฅํด๋ ๊ธฐ์ฌ์ ์ฒซ ๋ฒ์งธ ์ฟผ๋ฆฌ๋ฅผ ์๋ฃํ ์ ์์ต๋๋ค. O(ํ๊ณผ์) ์ฟผ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ถ๊ฐํ์ง ์๊ณ . ์ ์๋ ๋ฐฉ์์์๋ ๊ฐ๋ฐ ๋จ๊ณ์์ ๋ฐ์ดํฐ ์ ์ฅ ๊ตฌ์กฐ์ ์ฌ์ฉํ ์ง๊ณ์ ๋ํด ์๊ฐํ ํ์๊ฐ ์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ์๋ ์ค์ ์ฆ์์์ ์ง์ ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ค์ ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด๋ค ์ฌ๋๋ค์ ๋น๋ฉดํ ์์ ์ ๊ธฐ๋ฐ์ผ๋ก ์ง์ ๋ ผ๋ฆฌ๋ฅผ ๊ฐ๋ฐํฉ๋๋ค. ๊ทธ๋ค์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ทธ ๋ณต์ก์ฑ, ์คํ ๊ณํ, ์กฐ์ธ ์ ํ, ๊ธฐํ ๊ธฐ์ ๊ตฌ์ฑ ์์๋ฅผ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ด ์ฌ๋๋ค์ ๊ฐ๋ฐ์๋ผ๊ธฐ๋ณด๋ค๋ ๋น์ฆ๋์ค ๋ถ์๊ฐ์ ๊ฐ๊น์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด ๋ชจ๋ ๊ฒ์ด ํ ์คํธ ๋๋ ์๋์ ๋ค์ด๊ฐ๋๋ค. ์ฅ๊ธฐ ์คํ ์ฟผ๋ฆฌ์ ๋ก๊น ์ ํ์ฑํํฉ๋๋ค. ๊ธด ์ฟผ๋ฆฌ๊ฐ ๊ฐ์ง๋๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค(๋ณด๋ค ๊ธฐ์ ์ ์ธ - ๊ธฐ๋ณธ์ ์ผ๋ก DBA)์ด ์ผ๋ถ ์ค๊ฐ ๊ธฐ๋ฅ์์ MATERIALIZED๋ฅผ ํ์ฑํํ๊ธฐ๋ก ๊ฒฐ์ ํฉ๋๋ค. ์ด๋ก ์ธํด ๊ธฐ๋ก ์๋๊ฐ ์ฝ๊ฐ ๋๋ ค์ง๋๋ค(ํธ๋์ญ์ ์์ ์ถ๊ฐ ํ๋๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๊ธฐ ๋๋ฌธ). ๊ทธ๋ฌ๋ ์ด ์ฟผ๋ฆฌ๋ฟ๋ง ์๋๋ผ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ๋ชจ๋ ์ฟผ๋ฆฌ์ ์๋๋ ํฌ๊ฒ ํฅ์๋ฉ๋๋ค. ๋์์ ์ด๋ค ๊ธฐ๋ฅ์ ๊ตฌํํ ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ ์๋์ ์ผ๋ก ์ฝ์ต๋๋ค. ๋ ๊ฐ์ง ์ฃผ์ ๋งค๊ฐ๋ณ์: ๊ฐ๋ฅํ ์ ๋ ฅ ๊ฐ์ ์(ํด๋น ํ ์ด๋ธ์ ํฌํจ๋ ๋ ์ฝ๋ ์)์ ๋ค๋ฅธ ๊ธฐ๋ฅ์์ ์ฌ์ฉ๋๋ ๋น๋์ ๋๋ค.
์๋ ๋ก๊ทธ
์ต์ ์์ฉ DBMS์๋ FAST REFRESH๋ฅผ ์ฌ์ฉํ MATERIALIZED VIEW(Oracle) ๋ฐ INDEXED VIEW(Microsoft SQL Server)์ ๊ฐ์ ์ ์ฌํ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. PostgreSQL์์๋ MATERIALIZED VIEW๋ฅผ ํธ๋์ญ์ ์์ ์ ๋ฐ์ดํธํ ์ ์๊ณ ์์ฒญ ์์๋ง(์ฌ์ง์ด ๋งค์ฐ ์๊ฒฉํ ์ ํ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ์๋) ์ ๋ฐ์ดํธํ ์ ์์ผ๋ฏ๋ก ๊ณ ๋ คํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์ ํฌ๊ฒ ์ ํํ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ฒซ์งธ, ์ด๋ฏธ ์ผ๋ฐ VIEW๋ฅผ ์์ฑํ ๊ฒฝ์ฐ์๋ง ๊ตฌ์ฒดํ๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด ๊ตฌ์ฒดํ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์๋ก ์์ฑ๋ ๋ทฐ์ ์ก์ธ์คํ๊ธฐ ์ํ ๋๋จธ์ง ์์ฒญ์ ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค. ๋๋ ๋ชจ๋ ๊ฒ์ ๊ทธ๋๋ก ๋์ญ์์ค. ๊ทธ๋ฌ๋ ์ด๋ฏธ ๋ฏธ๋ฆฌ ๊ณ์ฐ๋ ํน์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์ ์ด๋ ๋นํจ์จ์ ์ด์ง๋ง ๋ง์ ์ฟผ๋ฆฌ๊ฐ ํญ์ ์ด๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ค์ ๊ณ์ฐํฉ๋๋ค.
๋์งธ, ์์ฒญ๋ ์์ ์ ํ ์ฌํญ์ด ์์ต๋๋ค.
์ ํ
5.3.8.4 ๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ๋ํ ์ผ๋ฐ ์ ํ ์ฌํญ
๊ตฌ์ฒดํ๋ ๋ทฐ์ ์ ์ ์ฟผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ์ ํ๋ฉ๋๋ค.
- ๊ตฌ์ฒดํ๋ ๋ทฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๋ณต๋์ง ์๋ ํํ์์ ๋ํ ์ฐธ์กฐ๊ฐ ํฌํจ๋์ด์๋ ์ ๋ฉ๋๋ค.
SYSDATE
๊ณผROWNUM
.- ๊ตฌ์ฒดํ๋ ๋ทฐ์๋ ๋ค์์ ๋ํ ์ฐธ์กฐ๊ฐ ํฌํจ๋์ด์๋ ์ ๋ฉ๋๋ค.
RAW
orLONG
RAW
๋ฐ์ดํฐ ์ ํ.- ๋ค์์ ํฌํจํ ์ ์์ต๋๋ค.
SELECT
๋ชฉ๋ก ํ์ ์ฟผ๋ฆฌ.- ๋ถ์ ํจ์(์:
RANK
)์์SELECT
์ .- ๋ค์์ด ์๋ ํ ์ด๋ธ์ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
XMLIndex
์ธ๋ฑ์ค๊ฐ ์ ์๋์ด ์์ต๋๋ค.- ๋ค์์ ํฌํจํ ์ ์์ต๋๋ค.
MODEL
์ .- ๋ค์์ ํฌํจํ ์ ์์ต๋๋ค.
HAVING
ํ์ ์ฟผ๋ฆฌ๊ฐ ์๋ ์ .- ๋ค์์ด ํฌํจ๋ ์ค์ฒฉ ์ฟผ๋ฆฌ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค.
ANY
,ALL
๋ฐNOT
EXISTS
.- ๋ค์์ ํฌํจํ ์ ์์ต๋๋ค.
[START WITH โฆ] CONNECT BY
์ .- ์๋ก ๋ค๋ฅธ ์ฌ์ดํธ์ ์ฌ๋ฌ ์ธ๋ถ ํ ์ด๋ธ์ ํฌํจํ ์ ์์ต๋๋ค.
ON
COMMIT
๊ตฌ์ฒดํ๋ ๋ทฐ๋ ์๊ฒฉ ์ธ๋ถ ์ ๋ณด ํ ์ด๋ธ์ ๊ฐ์ง ์ ์์ต๋๋ค.- ์ค์ฒฉ๋ ๊ตฌ์ฒดํ๋ ๋ทฐ์๋ ์กฐ์ธ ๋๋ ์ง๊ณ๊ฐ ์์ด์ผ ํฉ๋๋ค.
- ๊ตฌ์ฒดํ๋ ์กฐ์ธ ๋ทฐ ๋ฐ ๊ตฌ์ฒดํ๋ ์ง๊ณ ๋ทฐ
GROUP
BY
์ ์ ์ธ๋ฑ์ค ๊ตฌ์ฑ ํ ์ด๋ธ์์ ์ ํํ ์ ์์ต๋๋ค.5.3.8.5 ์กฐ์ธ๋ง ํฌํจ๋ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ๋ํ ์ ํ ์ฌํญ
์กฐ์ธ๋ง ์๊ณ ์ง๊ณ๋ ์๋ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๋ํ ์ฟผ๋ฆฌ๋ฅผ ์ ์ํ๋ฉด ๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ์ ํ ์ฌํญ์ด ์์ต๋๋ค.
- ยซ์ ๋ชจ๋ ์ ํ ์ฌํญ
๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ๋ํ ์ผ๋ฐ ์ ํ ์ฌํญ ".- ๊ทธ๋ค์ ๊ฐ์ง ์ ์์ต๋๋ค
GROUP
BY
์กฐํญ ๋๋ ์ง๊ณ.- ๋ชจ๋ ํ ์ด๋ธ์ Rowid
FROM
๋ชฉ๋ก์ดSELECT
์ฟผ๋ฆฌ ๋ชฉ๋ก์ ๋๋ค.- ๊ตฌ์ฒดํ๋ ๋ทฐ ๋ก๊ทธ๋ ๋ชจ๋ ๊ธฐ๋ณธ ํ ์ด๋ธ์ ๋ํ rowid์ ํจ๊ป ์กด์ฌํด์ผ ํฉ๋๋ค.
FROM
์ฟผ๋ฆฌ ๋ชฉ๋ก์ ๋๋ค.- ๊ฐ์ฒด ์ ํ ์ด์ ํฌํจํ๋ ๋จ์ ์กฐ์ธ์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ํ ์ด๋ธ์์ ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์น ์ ์๋ ๊ตฌ์ฒดํ๋ ๋ทฐ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
SELECT
์ฑ๋ช ์.๋ํ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ ํํ ์๋ก ๊ณ ์นจ ๋ฐฉ๋ฒ์ด ์ต์ ์ผ๋ก ํจ์จ์ ์ด์ง ์์ต๋๋ค.
- ์ ์ ์ฟผ๋ฆฌ๋ ๋ด๋ถ ์กฐ์ธ์ฒ๋ผ ๋์ํ๋ ์ธ๋ถ ์กฐ์ธ์ ์ฌ์ฉํฉ๋๋ค. ์ ์ ์ฟผ๋ฆฌ์ ์ด๋ฌํ ์กฐ์ธ์ด ํฌํจ๋ ๊ฒฝ์ฐ ๋ด๋ถ ์กฐ์ธ์ ํฌํจํ๋๋ก ์ ์ ์ฟผ๋ฆฌ๋ฅผ ๋ค์ ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- XNUMXD๋ดํ์
SELECT
๊ตฌ์ฒดํ๋ ๋ทฐ ๋ชฉ๋ก์๋ ์ฌ๋ฌ ํ ์ด๋ธ์ ์ด์ ๋ํ ํํ์์ด ํฌํจ๋์ด ์์ต๋๋ค.5.3.8.6 ์ง๊ณ๊ฐ ํฌํจ๋ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ๋ํ ์ ํ ์ฌํญ
์ง๊ณ ๋๋ ์กฐ์ธ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๋ํ ์ฟผ๋ฆฌ๋ฅผ ์ ์ํ๋ฉด ๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ์ ํ ์ฌํญ์ด ์์ต๋๋ค.
- ยซ์ ๋ชจ๋ ์ ํ ์ฌํญ
๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ๋ํ ์ผ๋ฐ ์ ํ ์ฌํญ ".๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ๋ ๊ฐ์ง ๋ชจ๋ ์ง์๋ฉ๋๋ค.
ON
COMMIT
๊ณผON
DEMAND
๊ตฌ์ฒดํ๋ ๋ทฐ. ๊ทธ๋ฌ๋ ๋ค์ ์ ํ ์ฌํญ์ด ์ ์ฉ๋ฉ๋๋ค.
- ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๋ชจ๋ ํ ์ด๋ธ์๋ ๊ตฌ์ฒดํ๋ ๋ทฐ ๋ก๊ทธ๊ฐ ์์ด์ผ ํ๋ฉฐ ๊ตฌ์ฒดํ๋ ๋ทฐ ๋ก๊ทธ๋ ๋ค์์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.
- ๊ตฌ์ฒดํ๋ ๋ทฐ์์ ์ฐธ์กฐ๋๋ ํ ์ด๋ธ์ ๋ชจ๋ ์ด์ ํฌํจํฉ๋๋ค.
- ๋ค์์ผ๋ก ์ง์
ROWID
๊ณผINCLUDING
NEW
VALUES
.- ์ง์
SEQUENCE
ํ ์ด๋ธ์ ์ฝ์ /์ง์ ๋ก๋, ์ญ์ ๋ฐ ์ ๋ฐ์ดํธ๊ฐ ํผํฉ๋์ด ์์ ๊ฒ์ผ๋ก ์์๋๋ ๊ฒฝ์ฐ ์ ์ ๋๋ค.
- ๋ง
SUM
,COUNT
,AVG
,STDDEV
,VARIANCE
,MIN
๊ณผMAX
๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ด ์ง์๋ฉ๋๋ค.COUNT(*)
์ง์ ํด์ผ ํฉ๋๋ค.- ์ง๊ณ ํจ์๋ ํํ์์ ๊ฐ์ฅ ๋ฐ๊นฅ์ชฝ ๋ถ๋ถ์ผ๋ก๋ง ๋ฐ์ํด์ผ ํฉ๋๋ค. ์ฆ, ๋ค์๊ณผ ๊ฐ์ ์ง๊ณ์ ๋๋ค.
AVG(AVG(x))
orAVG(x)
+AVG(x)
ํ๋ฝ๋์ง ์๋๋ค.- ๋ค์๊ณผ ๊ฐ์ ๊ฐ ์ง๊ณ์ ๋ํด
AVG(expr)
, ํด๋นCOUNT(expr)
์กด์ฌํด์ผ ํฉ๋๋ค. ์ค๋ผํด์ ๋ค์์ ๊ถ์ฅํฉ๋๋ค.SUM(expr)
์ง์ ๋ฉ๋๋ค.- If
VARIANCE(expr)
orSTDDEV(expr
)๊ฐ ์ง์ ๋์์ต๋๋ค.COUNT(expr)
๊ณผSUM(expr)
์ง์ ํด์ผ ํฉ๋๋ค. ์ค๋ผํด์ ๋ค์์ ๊ถ์ฅํฉ๋๋ค.SUM(expr *expr)
์ง์ ๋ฉ๋๋ค.- XNUMXD๋ดํ์
SELECT
์ ์ ์ฟผ๋ฆฌ์ ์ด์ ์ฌ๋ฌ ๊ธฐ๋ณธ ํ ์ด๋ธ์ ์ด์ด ํฌํจ๋ ๋ณต์กํ ํํ์์ผ ์ ์์ต๋๋ค. ์ด์ ๋ํ ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค์ฒฉ๋ ๊ตฌ์ฒดํ๋ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.- XNUMXD๋ดํ์
SELECT
๋ชฉ๋ก์๋ ๋ชจ๋ ํฌํจ๋์ด์ผ ํฉ๋๋ค.GROUP
BY
์ด.- ๊ตฌ์ฒดํ๋ ๋ทฐ๋ ํ๋ ์ด์์ ์๊ฒฉ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ง ์์ต๋๋ค.
- ๋น์ ์ด
CHAR
๊ตฌ์ฒดํ๋ ๋ทฐ ๋ก๊ทธ์ ํํฐ ์ด์ ์๋ ๋ฐ์ดํฐ ์ ํ, ๋ง์คํฐ ์ฌ์ดํธ์ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๋ฌธ์ ์งํฉ์ด ๋์ผํด์ผ ํฉ๋๋ค.- ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๋ค์ ์ค ํ๋๊ฐ ์์ผ๋ฉด ๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ๊ธฐ์กด DML ์ฝ์ ๋ฐ ์ง์ ๋ก๋์์๋ง ์ง์๋ฉ๋๋ค.
- ๊ตฌ์ฒดํ๋ ๋ทฐ
MIN
orMAX
์ง๊ณ- ๊ตฌ์ฒดํ๋ ๋ทฐ
SUM(expr)
ํ์ง๋งCOUNT(expr)
- ๋ค์ ์์ด ๊ตฌ์ฒดํ๋ ๋ทฐ
COUNT(*)
์ด๋ฌํ ๊ตฌ์ฒดํ๋ ๋ทฐ๋ฅผ ์ฝ์ ์ ์ฉ ๊ตฌ์ฒดํ๋ ๋ทฐ๋ผ๊ณ ํฉ๋๋ค.
- ๊ตฌ์ฒดํ๋ ๋ทฐ
MAX
orMIN
์ญ์ ๋๋ ํผํฉ DML ๋ฌธ์ด ์๋ ๊ฒฝ์ฐ ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์น ์ ์์ต๋๋ค.WHERE
์ .
์ญ์ ๋๋ ํผํฉ DML ํ ์ต๋/์ต์ ๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ์ฝ์ ์ ์ฉ ๊ฒฝ์ฐ์ ๋์ผํ ๋์์ ๊ฐ์ง ์์ต๋๋ค. ์ํฅ์ ๋ฐ์ ๊ทธ๋ฃน์ ์ต๋/์ต์ ๊ฐ์ ์ญ์ ํ๊ณ ๋ค์ ๊ณ์ฐํฉ๋๋ค. ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ธ์ํด์ผ ํฉ๋๋ค.- ๋ช ๋ช ๋ ๋ทฐ ๋๋ ํ์ ์ฟผ๋ฆฌ๊ฐ ์๋ ๊ตฌ์ฒดํ๋ ๋ทฐ
FROM
๋ทฐ๋ฅผ ์์ ํ ๋ณํฉํ ์ ์์ผ๋ฉด ์ ์ ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์น ์ ์์ต๋๋ค. ๋ณํฉํ ๋ทฐ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ธ์.Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค SQL ์ธ์ด ์ฐธ์กฐ .- ์ธ๋ถ ์กฐ์ธ์ด ์์ผ๋ฉด ๋ค์์์ ์์ ์ ํ ๋ฐ ์กฐ์ธ์ด ์์ ์ ์์ต๋๋ค.
WHERE
์ .- ์ธ๋ถ ์กฐ์ธ์ด ์๋ ๊ตฌ์ฒดํ๋ ์ง๊ณ ๋ทฐ๋ ์ธ๋ถ ํ ์ด๋ธ๋ง ์์ ๋ ๊ฒฝ์ฐ ๊ธฐ์กด DML ๋ฐ ์ง์ ๋ก๋ ํ์ ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์น ์ ์์ต๋๋ค. ๋ํ ๋ด๋ถ ์กฐ์ธ ํ ์ด๋ธ์ ์กฐ์ธ ์ด์๋ ๊ณ ์ ์ ์ฝ ์กฐ๊ฑด์ด ์กด์ฌํด์ผ ํฉ๋๋ค. ์ธ๋ถ ์กฐ์ธ์ด ์๋ ๊ฒฝ์ฐ ๋ชจ๋ ์กฐ์ธ์ ๋ค์์ผ๋ก ์ฐ๊ฒฐ๋์ด์ผ ํฉ๋๋ค.
AND
s์ด๋ฉฐ ๋ฑ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค(=
) ์ด์์.- ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๊ฒฝ์ฐ
CUBE
,ROLLUP
, ๊ทธ๋ฃนํ ์งํฉ ๋๋ ์ด๋ค์ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ ๋ค์ ์ ํ ์ฌํญ์ด ์ ์ฉ๋ฉ๋๋ค.
- XNUMXD๋ดํ์
SELECT
๋ชฉ๋ก์๋ ๋ค์ ์ค ํ๋์ผ ์ ์๋ ๊ทธ๋ฃนํ ๊ตฌ๋ถ์๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค.GROUPING_ID
๋ชจ๋์ ๋ํ ๊ธฐ๋ฅGROUP
BY
ํํ์ด๋GROUPING
๊ธฐ๋ฅ์ ๊ฐ๊ฐ ํ๋์ฉGROUP
BY
ํํ. ์๋ฅผ ๋ค์ด,GROUP
BY
๊ตฌ์ฒดํ๋ ๋ทฐ์ ์ ์ "GROUP
BY
CUBE(a, b)
" ๊ทธ๋ฌ๋ฉดSELECT
๋ชฉ๋ก์๋ "GROUPING_ID(a, b)
" ๋๋ "GROUPING(a)
AND
GROUPING(b)
ยป ๊ตฌ์ฒดํ๋ ๋ทฐ๋ฅผ ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์น ์ ์์ต๋๋ค.GROUP
BY
์ค๋ณต๋ ๊ทธ๋ฃนํ๊ฐ ๋ฐ์ํด์๋ ์ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, "GROUP BY a, ROLLUP(a, b)
" ์ค๋ณต๋ ๊ทธ๋ฃนํ๊ฐ ๋ฐ์ํ๋ฏ๋ก ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์น ์ ์์ต๋๋ค. "(a), (a, b), AND (a)
".5.3.8.7 UNION ALL์ ์ฌ์ฉํ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ ๋ํ ์ ํ ์ฌํญ
๊ตฌ์ฒดํ๋ ๋ทฐ
UNION
ALL
์งํฉ ์ฐ์ฐ์ ์ง์REFRESH
FAST
๋ค์ ์กฐ๊ฑด์ด ๋ง์กฑ๋๋ ๊ฒฝ์ฐ ์ต์ :
- ์ ์ ์ฟผ๋ฆฌ์๋ ๋ค์์ด ์์ด์ผ ํฉ๋๋ค.
UNION
ALL
์ต์์ ์์ค์ ์ฐ์ฐ์.XNUMXD๋ดํ์
UNION
ALL
์ฐ์ฐ์๋ ํ ๊ฐ์ง ์์ธ๋ฅผ ์ ์ธํ๊ณ ํ์ ์ฟผ๋ฆฌ ์์ ํฌํจ๋ ์ ์์ต๋๋ค.UNION
ALL
ํ์ ์ฟผ๋ฆฌ์ ์์ ์ ์์ต๋๋ค.FROM
์ ์ ์ ์ฟผ๋ฆฌ๊ฐ ๋ค์ ํ์์ธ ๊ฒฝ์ฐSELECT * FROM
(๋ณด๊ธฐ ๋๋ ํ์ ์ฟผ๋ฆฌUNION
ALL
) ๋ค์ ์์ ๊ฐ์ต๋๋ค.CREATE VIEW view_with_unionall AS (SELECT c.rowid crid, c.cust_id, 2 umarker FROM ๊ณ ๊ฐ c WHERE c.cust_last_name = 'Smith' UNION ALL SELECT c.rowid crid, c.cust_id, 3 umarker FROM ๊ณ ๊ฐ c WHERE c.cust_last_name = '์กด์ค'); ๊ตฌ์ฒดํ๋ ๋ทฐ ์์ฑ Unionall_inside_view_mv ์์ฒญ ์ ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์นจ * SELECT * FROM view_with_unionall;๋ทฐ๋ ์ฐธ๊ณ ํ์ธ์
view_with_unionall
๋น ๋ฅธ ์๋ก ๊ณ ์นจ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํฉ๋๋ค.- ๊ฐ ์ฟผ๋ฆฌ ๋ธ๋ก์
UNION
ALL
์ฟผ๋ฆฌ๋ ์ง๊ณ๊ฐ ์๋ ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์น ์ ์๋ ๊ตฌ์ฒดํ๋ ๋ทฐ ๋๋ ์กฐ์ธ์ด ์๋ ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์น ์ ์๋ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.ํด๋น ์ ํ์ ๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ด ๊ฐ๋ฅํ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ํ์ํ ์ ์ ํ ๊ตฌ์ฒดํ๋ ๋ทฐ ๋ก๊ทธ๊ฐ ํ ์ด๋ธ์ ์์ฑ๋์ด์ผ ํฉ๋๋ค.
Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์กฐ์ธ์ ์ฌ์ฉํ์ฌ ๋จ์ผ ํ ์ด๋ธ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ํน๋ณํ ๊ฒฝ์ฐ๋ฅผ ํ์ฉํฉ๋๋ค.ROWID
์ด์ดSELECT
๋ชฉ๋ก ๋ฐ ๊ตฌ์ฒดํ๋ ๋ทฐ ๋ก๊ทธ์ ์์ต๋๋ค. ์ด๋ ๋ทฐ์ ์ ์ ์ฟผ๋ฆฌ์ ํ์๋ฉ๋๋ค.view_with_unionall
.- XNUMXD๋ดํ์
SELECT
๊ฐ ์ฟผ๋ฆฌ ๋ชฉ๋ก์๋UNION
ALL
๋ง์ปค, ๊ทธ๋ฆฌ๊ณUNION
ALL
์ด์๋ ๊ฐ ์ด์ ๊ณ ์ ํ ์์ ์ซ์ ๋๋ ๋ฌธ์์ด ๊ฐ์ด ์์ด์ผ ํฉ๋๋ค.UNION
ALL
๋๋ญ๊ฐ์ง. ๋ํ ํ์ ์ด์ ๋์ผํ ์์ ์์น์ ๋ํ๋์ผ ํฉ๋๋ค.SELECT
๊ฐ ์ฟผ๋ฆฌ ๋ธ๋ก์ ๋ชฉ๋ก์ ๋๋ค. ๋ณด๋ค "UNION ALL ๋ง์ปค ๋ฐ ์ฟผ๋ฆฌ ์ฌ์์ฑ ยป์ ๊ดํ ์์ธํ ๋ด์ฉ์UNION
ALL
๋ง์ปค.- ์ธ๋ถ ์กฐ์ธ, ์ฝ์ ์ ์ฉ ์ง๊ณ ๊ตฌ์ฒดํ๋ ๋ทฐ ์ฟผ๋ฆฌ, ์๊ฒฉ ํ ์ด๋ธ๊ณผ ๊ฐ์ ์ผ๋ถ ๊ธฐ๋ฅ์ ๋ค์์ด ํฌํจ๋ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๋ํด ์ง์๋์ง ์์ต๋๋ค.
UNION
ALL
. ๊ทธ๋ฌ๋ ์กฐ์ธ์ด๋ ์ง๊ณ๋ฅผ ํฌํจํ์ง ์๋ ๋ณต์ ์ ์ฌ์ฉ๋๋ ๊ตฌ์ฒดํ๋ ๋ทฐ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์ณ์ง ์ ์์ต๋๋ค.UNION
ALL
๋๋ ์๊ฒฉ ํ ์ด๋ธ์ด ์ฌ์ฉ๋ฉ๋๋ค.- ๋น ๋ฅธ ์๋ก ๊ณ ์นจ์ด ๊ฐ๋ฅํ ๊ตฌ์ฒดํ๋ ๋ทฐ๋ฅผ ์์ฑํ๋ ค๋ฉด ํธํ์ฑ ์ด๊ธฐํ ๋งค๊ฐ๋ณ์๋ฅผ 9.2.0 ์ด์์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
UNION
ALL
.
๋๋ Oracle ํฌ์ ํ๋๊ฒ ํ๊ณ ์ถ์ง ์์ง๋ง ์ ํ ์ฌํญ ๋ชฉ๋ก์ผ๋ก ํ๋จํ๋ฉด ์ด ๋ฉ์ปค๋์ฆ์ ์ผ์ข ์ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ ๋ชจ๋ ์ฌ๋์๊ฒ ๋ค์๊ณผ ๊ฐ์ ๊ธฐํ๊ฐ ์ฃผ์ด์ง ์์ฒ ๋ช ์ ์ธ๋์ธ์ ์ํด ์์ฑ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ค ์์ ์ ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ , ๊ทธ๋ค ๊ฐ์๋ ๊ทธ๊ฐ ํ ์ ์๋ ์ผ์ ํ์ต๋๋ค. ์ค์ ๋ ผ๋ฆฌ์ ์ด ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ง๋ขฐ๋ฐญ์ ๊ฑท๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๋ช ํํ์ง ์์ ์ ํ ์ฌํญ ์ค ํ๋๋ฅผ ์ถฉ์กฑํ๋ฉด ์ธ์ ๋ ์ง ์ง๋ขฐ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์๋ ๋ฐฉ์ ์ญ์ ๋ณ๋์ ์ง๋ฌธ์ด์ง๋ง ์ด ๊ธฐ์ฌ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.
๋ง์ดํฌ๋ก ์ํํธ SQL ์๋ฒ
์ถ๊ฐ ์๊ตฌ ์ฌํญ
SET ์ต์ ๋ฐ ๊ฒฐ์ ์ ๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ ์ธ์๋ ๋ค์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.
- ์คํํ๋ ์ฌ์ฉ์
CREATE INDEX
๋ทฐ์ ์์ ์์ฌ์ผ ํฉ๋๋ค.- ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋,
IGNORE_DUP_KEY
์ต์ ์ OFF(๊ธฐ๋ณธ ์ค์ )๋ก ์ค์ ๋์ด์ผ ํฉ๋๋ค.- ํ ์ด๋ธ์ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ ์ด๋ฆ์ผ๋ก ์ฐธ์กฐ๋์ด์ผ ํฉ๋๋ค. ๊ฐ์.ํ ์ด๋ธ ์ด๋ฆ ๋ทฐ ์ ์์์.
- ๋ทฐ์์ ์ฐธ์กฐ๋๋ ์ฌ์ฉ์ ์ ์ ํจ์๋ ๋ค์์ ์ฌ์ฉํ์ฌ ์์ฑ๋์ด์ผ ํฉ๋๋ค.
WITH SCHEMABINDING
์ต์ ์ ์ ํํฉ๋๋ค.- ๋ทฐ์์ ์ฐธ์กฐ๋๋ ๋ชจ๋ ์ฌ์ฉ์ ์ ์ ํจ์๋ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ ์ด๋ฆ์ผ๋ก ์ฐธ์กฐ๋์ด์ผ ํฉ๋๋ค. ..
- ์ฌ์ฉ์ ์ ์ ํจ์์ ๋ฐ์ดํฐ ์ก์ธ์ค ์์ฑ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
NO SQL
, ์ธ๋ถ ์ก์ธ์ค ์์ฑ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.NO
.- CLR(๊ณต์ฉ ์ธ์ด ๋ฐํ์) ํจ์๋ ๋ทฐ์ ์ ํ ๋ชฉ๋ก์ ๋ํ๋ ์ ์์ง๋ง ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค ํค ์ ์์ ์ผ๋ถ๊ฐ ๋ ์๋ ์์ต๋๋ค. CLR ํจ์๋ ๋ทฐ์ WHERE ์ ์ด๋ ๋ทฐ์ ์๋ JOIN ์์ ์ ON ์ ์ ๋ํ๋ ์ ์์ต๋๋ค.
- ๋ทฐ ์ ์์ ์ฌ์ฉ๋๋ CLR ์ฌ์ฉ์ ์ ์ ์ ํ์ CLR ํจ์ ๋ฐ ๋ฉ์๋์๋ ๋ค์ ํ์ ๊ฐ์ด ์์ฑ์ด ์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค.
๋น์ฆ๋์ค ์ฌ์ฐ
์ฃผ์ ์ฌํญ๊ฒฐ์ ์ = ์ฐธ
Microsoft .NET Framework ๋ฉ์๋์ ํน์ฑ์ผ๋ก ๋ช ์์ ์ผ๋ก ์ ์ธ๋์ด์ผ ํฉ๋๋ค.์ ํํจ = ์ฌ์ค
.NET Framework ๋ฉ์๋์ ํน์ฑ์ผ๋ก ๋ช ์์ ์ผ๋ก ์ ์ธ๋์ด์ผ ํฉ๋๋ค.๋ฐ์ดํฐ ์ก์ธ์ค = SQL ์์
DataAccess ์์ฑ์ DataAccessKind.None์ผ๋ก ์ค์ ํ๊ณ SystemDataAccess ์์ฑ์ SystemDataAccessKind.None์ผ๋ก ์ค์ ํ์ฌ ๊ฒฐ์ ๋ฉ๋๋ค.์ธ๋ถ ์ก์ธ์ค = ์๋์
CLR ๋ฃจํด์ ๊ฒฝ์ฐ ์ด ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ NO์ ๋๋ค.- ๋ทฐ๋ ๋ค์์ ์ฌ์ฉํ์ฌ ์์ฑ๋์ด์ผ ํฉ๋๋ค.
WITH SCHEMABINDING
์ต์ ์ ์ ํํฉ๋๋ค.- ๋ทฐ๋ ๋ทฐ์ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๊ธฐ๋ณธ ํ ์ด๋ธ๋ง ์ฐธ์กฐํด์ผ ํฉ๋๋ค. ๋ทฐ๋ ๋ค๋ฅธ ๋ทฐ๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
- ๋ทฐ ์ ์์ SELECT ๋ฌธ์๋ ๋ค์ Transact-SQL ์์๊ฐ ํฌํจ๋์ด์๋ ์ ๋ฉ๋๋ค.
COUNT
ROWSET ํจ์(OPENDATASOURCE
,OPENQUERY
,OPENROWSET
, ๊ทธ๋ฆฌ๊ณOPENXML
)
OUTER
์กฐ์ธ(LEFT
,RIGHT
๋ฐFULL
)ํ์ ํ ์ด๋ธ(๋ค์์ ์ง์ ํ์ฌ ์ ์๋จ)
SELECT
์ฑ๋ช ์FROM
์ )
์์ฒด ์กฐ์ธ
๋ค์์ ์ฌ์ฉํ์ฌ ์ด ์ง์ SELECT *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
๋ฐAVG
๊ณตํต ํ ์ด๋ธ ํํ์(CTE)๋จ๋ค1, ๋ณธ๋ฌธ, ํ ์คํธ, ์์, XML๋ฐ ํ์ผ ์คํธ๋ฆผ ์ด
ํ์ ์ฟผ๋ฆฌ
OVER
์์ ๋๋ ์ง๊ณ ์ฐฝ ํจ์๋ฅผ ํฌํจํ๋ ์ ์ ์ฒด ํ ์คํธ ์กฐ๊ฑด์(
CONTAINS
,FREETEXT
)
SUM
Null ํ์ฉ ํํ์์ ์ฐธ์กฐํ๋ ํจ์
ORDER BY
CLR ์ฌ์ฉ์ ์ ์ ์ง๊ณ ํจ์
TOP
CUBE
,ROLLUP
๋ฐGROUPING SETS
์ด์์
MIN
,MAX
UNION
,EXCEPT
๋ฐINTERSECT
์ด์์
TABLESAMPLE
ํ ์ด๋ธ ๋ณ์
OUTER APPLY
orCROSS APPLY
PIVOT
,UNPIVOT
์คํ์ค ์ด ์ธํธ
์ธ๋ผ์ธ(TVF) ๋๋ ๋ค์ค ๋ฌธ ํ ์ด๋ธ ๋ฐํ ํจ์(MSTVF)
OFFSET
CHECKSUM_AGG
1 ์ธ๋ฑ์ฑ๋ ๋ทฐ์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค. ๋จ๋ค ๊ธฐ๋ฅ; ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ด์ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค ํค์ ํฌํจ๋ ์ ์์ต๋๋ค.
- If
GROUP BY
์กด์ฌํ๋ ๊ฒฝ์ฐ VIEW ์ ์์๋ ๋ค์์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.COUNT_BIG(*)
๋ค์์ ํฌํจํด์๋ ์ ๋ฉ๋๋ค.HAVING
. ์ด๋คGROUP BY
์ ํ ์ฌํญ์ ์ธ๋ฑ์ฑ๋ ๋ทฐ ์ ์์๋ง ์ ์ฉ๋ฉ๋๋ค. ์ฟผ๋ฆฌ๋ ์ด๋ฌํ ์กฐ๊ฑด์ ์ถฉ์กฑํ์ง ์๋๋ผ๋ ์คํ ๊ณํ์์ ์ธ๋ฑ์ฑ๋ ๋ทฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.GROUP BY
์ ํ.- ๋ทฐ ์ ์์
GROUP BY
์ ์ ์๋ ๊ณ ์ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค์ ํค๋ ํด๋น ์ ์ ์ง์ ๋ ์ด๋ง ์ฐธ์กฐํ ์ ์์ต๋๋ค.GROUP BY
์ .
์ฌ๊ธฐ์ ์ธ๋์ธ๋ค์ "์ฐ๋ฆฌ๋ ๊ฑฐ์ ํ์ง ์์ง๋ง ์ ํ ๊ฒ"์ด๋ผ๋ ๊ณํ์ ๋ฐ๋ผ ๊ทธ๊ฒ์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ๊ด์ฌํ์ง ์์๋ค๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค. ์ฆ, ํ์ฅ์ ๋ ๋ง์ ์ง๋ขฐ๊ฐ ์์ง๋ง ์์น๊ฐ ๋ ํฌ๋ช ํฉ๋๋ค. ๊ฐ์ฅ ์ค๋ง์ค๋ฌ์ด ์ ์ ๋ค์๊ณผ ๊ฐ์ ์ ํ ์ฌํญ์ ๋๋ค.
๋ทฐ๋ ๋ทฐ์ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๊ธฐ๋ณธ ํ ์ด๋ธ๋ง ์ฐธ์กฐํด์ผ ํฉ๋๋ค. ๋ทฐ๋ ๋ค๋ฅธ ๋ทฐ๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ์ ์ฉ์ด๋ก ์ด๋ ํจ์๊ฐ ๋ค๋ฅธ ๊ตฌ์ฒดํ๋ ํจ์์ ์ก์ธ์คํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๊ฒ์ ์น์ ๋ชจ๋ ์ด๋ฐ์ฌ๋ก๊ธฐ๋ฅผ ์๋ผ๋
๋๋ค.
๋ํ ์ด ์ ํ ์ฌํญ(๋ฐ ๋ณธ๋ฌธ์์ ์ถ๊ฐ ์ค๋ช
)์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํฌ๊ฒ ์ค์
๋๋ค.
๋ทฐ ์ ์์ SELECT ๋ฌธ์๋ ๋ค์ Transact-SQL ์์๊ฐ ํฌํจ๋์ด์๋ ์ ๋ฉ๋๋ค.
COUNT
ROWSET ํจ์(OPENDATASOURCE
,OPENQUERY
,OPENROWSET
, ๊ทธ๋ฆฌ๊ณOPENXML
)
OUTER
์กฐ์ธ(LEFT
,RIGHT
๋ฐFULL
)ํ์ ํ ์ด๋ธ(๋ค์์ ์ง์ ํ์ฌ ์ ์๋จ)
SELECT
์ฑ๋ช ์FROM
์ )
์์ฒด ์กฐ์ธ
๋ค์์ ์ฌ์ฉํ์ฌ ์ด ์ง์ SELECT *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
๋ฐAVG
๊ณตํต ํ ์ด๋ธ ํํ์(CTE)๋จ๋ค1, ๋ณธ๋ฌธ, ํ ์คํธ, ์์, XML๋ฐ ํ์ผ ์คํธ๋ฆผ ์ด
ํ์ ์ฟผ๋ฆฌ
OVER
์์ ๋๋ ์ง๊ณ ์ฐฝ ํจ์๋ฅผ ํฌํจํ๋ ์ ์ ์ฒด ํ ์คํธ ์กฐ๊ฑด์(
CONTAINS
,FREETEXT
)
SUM
Null ํ์ฉ ํํ์์ ์ฐธ์กฐํ๋ ํจ์
ORDER BY
CLR ์ฌ์ฉ์ ์ ์ ์ง๊ณ ํจ์
TOP
CUBE
,ROLLUP
๋ฐGROUPING SETS
์ด์์
MIN
,MAX
UNION
,EXCEPT
๋ฐINTERSECT
์ด์์
TABLESAMPLE
ํ ์ด๋ธ ๋ณ์
OUTER APPLY
orCROSS APPLY
PIVOT
,UNPIVOT
์คํ์ค ์ด ์ธํธ
์ธ๋ผ์ธ(TVF) ๋๋ ๋ค์ค ๋ฌธ ํ ์ด๋ธ ๋ฐํ ํจ์(MSTVF)
OFFSET
CHECKSUM_AGG
OUTER JOINS, UNION, ORDER BY ๋ฑ์ ๊ธ์ง๋ฉ๋๋ค. ์ฌ์ฉํ ์ ์๋ ๊ฒ๋ณด๋ค ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์ง์ ํ๋ ๊ฒ์ด ๋ ์ฌ์ ์ ์๋ ์์ต๋๋ค. ๋ชฉ๋ก์ ์๋ง๋ ํจ์ฌ ์์ ๊ฒ์ ๋๋ค.
์์ฝํ์๋ฉด, LGPL ๊ธฐ์ ์์๋ ๋ชจ๋ (์์ ์ฉ) DBMS์ ์์(๊ธฐ์ ์ ์ด ์๋ ๋ ผ๋ฆฌ์ ์ธ ํ๋์ ์์ธ ์ ์ธ)์ ๋ํ ์์ฒญ๋ ์ ํ ์ฌํญ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ด๊ณํ ๋ ผ๋ฆฌ์์ ์ด ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ๋ ๊ฒ์ ์ค๋ช ๋ ๊ธฐ๋ฅ ๋ ผ๋ฆฌ์์๋ณด๋ค ๋ค์ ์ด๋ ต๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค.
ะ ะตะฐะปะธะทะฐัะธั
์ด๋ป๊ฒ ์๋ํ๋์? PostgreSQL์ "๊ฐ์ ๋จธ์ "์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ด๋ถ์๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ด ์์ต๋๋ค. ์ฌ๊ธฐ
ํจ๊ณผ์ ์ผ๋ก ์๋ํฉ๋๊น? ๋งค์ฐ ํจ๊ณผ์ ์
๋๋ค. ๋ถํํ๊ฒ๋ ์ด๋ฅผ ์ฆ๋ช
ํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์
์ ์กด์ฌํ๋ ์์ฒ ๊ฐ์ ์์ฒญ์ ๊ณ ๋ คํ๋ฉด ํ๊ท ์ ์ผ๋ก ์ข์ ๊ฐ๋ฐ์์ ์์ฒญ๋ณด๋ค ๋ ํจ๊ณผ์ ์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ๋ฐ์ด๋ SQL ํ๋ก๊ทธ๋๋จธ๋ ์ด๋ค ์ฟผ๋ฆฌ๋ ๋ ํจ์จ์ ์ผ๋ก ์์ฑํ ์ ์์ง๋ง ์์ฒ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฅผ ์ํํ ๋๊ธฐ๋ ์๊ฐ์ด ์์ต๋๋ค. ์ด์ ํจ์จ์ฑ์ ์ฆ๊ฑฐ๋ก ์ธ๊ธํ ์ ์๋ ์ ์ผํ ๊ฒ์ ์ด DBMS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ํ๋ซํผ์์ ์ฌ๋ฌ ํ๋ก์ ํธ๊ฐ ์งํ๋๊ณ ์๋ค๋ ๊ฒ์
๋๋ค.
๋ค์ ๊ธฐ์ฌ์์๋ ๊ธฐ๋ฅ ์ ํ ์ค์ , ๋ณ๊ฒฝ ์ธ์
์์
๋ฐฉ๋ฒ ๋ฑ์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
์ถ์ฒ : habr.com