DML ์ด์ด์
12) NULL ๊ฐ ์กฐํ
- NULL์ ํน์ง
NULL์ ๋ชจ๋ฅด๋ ๊ฐ์ ์๋ฏธํ๋ค
NULL์ ๊ฐ์ ๋ถ์ฌ๋ฅผ ์๋ฏธํ๋ค
NULL์ ์ซ์ ํน์ ๋ ์ง๋ฅผ ๋ํ๋ฉด NULL์ด ๋๋ค
NULL์ ์ด๋ค ๊ฐ์ ๋น๊ตํ ๋ '์ ์ ์์'์ด ๋ฐํ๋๋ค
- NULL ๊ฐ ์กฐํ
NULL์ ์กฐํํ ๊ฒฝ์ฐ IS NULL๋ฅผ ์ฌ์ฉํ๊ณ NULL๊ฐ์ด ์๋ ๊ฒ์ ์กฐํํ ๊ฒฝ์ฐ IS NOT NULL์ ์ฌ์ฉ
NULL ๊ด๋ จ ํจ์
(1) NVL : NULL์ด๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐ๊พธ๋ ํจ์ ex) NVL(mgr, 0)์ด๋ฉด mgr ์นผ๋ผ์ด NULL์ด๋ฉด 0์ผ๋ก ๋ฐ๊พผ๋ค
(2) NVL2 : NVL ํจ์์ DECODE ํจ์๋ฅผ ํ๋๋ก ๋ง๋ ๊ฒ ex) NVL2(mgr, 1, 0) ~ mgr์ด NULL์ด ์๋๋ฉด 1, NULL์ด๋ฉด 0์ ๋ฐํ
(3) NULLIF : ๋ ๊ฐ์ ๊ฐ์ด ๊ฐ์ผ๋ฉด NULL์, ๊ฐ์ง ์์ผ๋ฉด ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค ex) NULLIF(exp1, exp2)
(4) COALESCE : NULL์ด ์๋ ์ต์ด์ ์ธ์๊ฐ ๋ฐํ ex) COALECSE(exp1, exp2 ..)
GROUP ์ฐ์ฐ
1) GROUP BY๋ฌธ
- GROUP BY๋ ํ ์ด๋ธ์์ ์๊ท๋ชจ ํ์ ๊ทธ๋ฃนํํด ํฉ๊ณ, ํ๊ท , ์ต๋๊ฐ, ์ต์๊ฐ ๋ฑ์ ๊ณ์ฐํ ์ ์๋ค
- HAVING ๊ตฌ๋ฌธ์ ํ์ฉํ ์กฐ๊ฑด๋ฌธ
- ORDER BY๋ฅผ ์ฌ์ฉํด ์ ๋ ฌํ ์ ์๋ค
2) HAVING๋ฌธ
GROUP BY์ ์กฐ๊ฑด์ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ํ๊ณ WHERE์ ์๋ ์ง๊ณ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง HAVING์ ๊ฐ๋ฅํ๋ค
3) COUNT ํจ์
COUNT ํจ์๋ ํ ์๋ฅผ ๊ณ์ฐํ๋ ํจ์, COUNT(*)๋ NULL์ ํฌํจํ ๋ชจ๋ ํ ์๋ฅผ ๊ณ์ฐํ๋ค. COUNT(์นผ๋ผ๋ช )์ NULL ๊ฐ์ ์ ์ธํ ํ ์๋ฅผ ๊ณ์ฐํ๋ค
SELECT๋ฌธ ์คํ ์์
- SELECT๋ฌธ์ ์คํ ์์๋ FROM WHERE, GROUP BY, HAVING, SELECT, ORDER BY์์ผ๋ก ์งํ๋๋ค
๋ช ์์ ํ๋ณํ๊ณผ ๋ฌต์์ ํ๋ณํ
ํ๋ณํ์ด๋ผ๋ ๊ฒ์ ๋ ๊ฐ์ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ ํ์ ์ด ์ผ์นํ๋๋ก ๋ณํํ๋ ๊ฒ, ๋ช ์์ , ๋ฌต์์ ํ๋ณํ์ผ๋ก ๋๋๋ค
๋ด์ฅํ ํจ์ : SQL ๋ด์ฅํ ํจ์
(1) ๋ด์ฅํ ํจ์
- ๋ด์ฅํ ํจ์๋ก๋ ํ๋ณํ ํจ์, ๋ฌธ์์ด ๋ฐ ์ซ์ํ ํจ์, ๋ ์งํ ํจ์๊ฐ ์๋ค
(2) DUAL ํ ์ด๋ธ
DUAL ํ ์ด๋ธ์ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํด ์๋ ์์ฑ๋๋ ํ ์ด๋ธ์ด๋ค
Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์์๋ก ์ฌ์ฉํ ์ ์๋ ํ ์ด๋ธ๋ก ๋ด์ฅํ ํจ์๋ฅผ ์คํํ ๋๋ ์ฌ์ฉํ ์ ์๋ค
(3) ๋ด์ฅํ ํจ์์ ์ข ๋ฅ
1) ASCII(๋ฌธ์) : ASCII ์ฝ๋๋ก ๋ณํ
2) CHAR(์์คํค์ฝ๋) : ๋ฌธ์๋ก ๋ณํ
3) SUBSTR(๋ฌธ์์ด m, n) : substring
4) CONCAT(๋ฌธ์์ด 1, ๋ฌธ์์ด 2) : 1๊ณผ 2๋ฅผ ๊ฒฐํฉํ๋ค
5) LOWER(๋ฌธ์์ด) : ์๋ฌธ์ ๋ณํ
6) UPPER(๋ฌธ์์ด) : ๋๋ฌธ์ ๋ณํ
7) LENGTH(๋ฌธ์์ด) or LEN(๋ฌธ์์ด) : ๊ณต๋ฐฑ ํฌํจ ๋ฌธ์์ด ๊ธธ์ด
8) LTRIM(๋ฌธ์์ด, ์ง์ ๋ฌธ์) : ์ผ์ชฝ์์ ์ง์ ๋ฌธ์๋ฅผ ์ญ์ , ์ง์ ๋ฌธ์๊ฐ ์๋ค๋ฉด ๊ณต๋ฐฑ ์ญ์
9) RTRIM(๋ฌธ์์ด, ์ง์ ๋ฌธ์) : ์ค๋ฅธ์ชฝ
10) TRIM(๋ฌธ์์ด, ์ง์ ๋ฌธ์) : ์์ชฝ
11) SYSDATE : ์ค๋ ๋ ์ง
12) EXTRACT : ์ฐ๋๋ง
13) TOCHAR : ์ซ์๋ ๋ ์ง๋ฅผ ๋ฌธ์์ด๋ก ๋ณํ
๋ด์ฅํ ํจ์ : ์ซ์ํ
ABS - ์ ๋๊ฐ
SIGN - ์์, ์์, 0์ ๊ตฌ๋ถ
MOD - ๋๋จธ์ง ๊ณ์ฐ
CEIL or CEILING - ์ต์ ์ ์
FLOOR - ์ต๋ ์ ์
ROUND(์ซ์, m) - ์์์ m ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ
TRUNC(์ซ์, m) - ์์์ m ์๋ฆฌ์ดํ ์ซ์ ๋ฒ๋ฆผ (m ๊ธฐ๋ณธ๊ฐ 0)
DECODE์ CASE๋ฌธ
1) DECODE
DECODE๋ฌธ์ผ๋ก IF๋ฌธ์ ๊ตฌํํ ์ ์๋ค. ex) DECODE(์กฐ๊ฑด์, ์ฐธ์ผ ๊ฒฝ์ฐ ๋ฐํ๊ฐ, ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ ๋ฐํ๊ฐ)
2) CASE
CASE๋ฌธ์ IF ~ THEN, ~ELSE-END์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
CASE[์กฐ๊ฑด๋ฌธ] WHEN ์กฐ๊ฑด 1 THEN ๊ฒฐ๊ณผ 1 .... ELSE ๊ฒฐ๊ณผ END
ROWNUM๊ณผ ROWID
1) ROWNUM
- ROWNUM์ ์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ select๋ฌธ ๊ฒฐ๊ณผ์ ๋ํด ๋ ผ๋ฆฌ์ ์ธ ์ผ๋ จ๋ฒํธ๋ฅผ ๋ถ์ฌ
- ROWNUM์ ์กฐํ๋๋ ํ ์๋ฅผ ์ ํํ ๋ ๋ง์ด ์ฌ์ฉ
- ROWNUM์ ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ ๋ ๋ถ์ฌ๋๋ ๋ ผ๋ฆฌ์ ์๋ฒ์ด๋ค. ๋ง์ฝ ROWNUM์ ์ฌ์ฉํด ํ์ด์ง ๋จ์ ์ถ๋ ฅ์ ํ๊ธฐ ์ํด์๋ ์ธ๋ผ์ธ ๋ทฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ์ธ๋ผ์ธ ๋ทฐ๋ select๋ฌธ์์ from์ ์ด ์ฌ์ฉ๋๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์๋ฏธ
- ROWNUM์ ๊ฐ์ด ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐํ๋ ROWNUM ๋ฐ์ดํฐ๋ฅผ ์ป๊ณ ์ถ์ ๋ ์ธ๋ผ์ธ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ค
* TOP(SQL Server), LIMIT(MYSQL), ROWNUM(Oracle)์ ๊ฐ์ ์๋ฏธ! ~ ๊ฐ๊ด์ ์ถ์ ๊ฐ๋ฅ
2) ROWID
- ROWID๋ ์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ ์ ์๋ ์ ์ผํ ๊ฐ
- ROWID๋ "SELECT ROWID, EMPNO FROM EMP์ ๊ฐ์ SELECT๋ฌธ์ผ๋ก ํ์ธํ ์ ์๋ค
- ROWID๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ์ด๋ค ๋ฐ์ดํฐ ํ์ผ, ์ด๋ ๋ธ๋ก์ ์ ์ฅ๋์ด ์๋์ง ์ ์ ์๋ค
WITH
- WITH ๊ตฌ๋ฌธ์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด ์์ ํ ์ด๋ธ์ด๋ ๋ทฐ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ ๊ตฌ๋ฌธ
- ์๋ธ์ฟผ๋ฆฌ ๋ธ๋ก์ ๋ณ์นญ ์ง์ ๊ฐ๋ฅ
- ์ตํฐ๋ง์ด์ ๋ SQL์ ์ธ๋ผ์ธ ๋ทฐ๋ ์์ ํ ์ด๋ธ๋ก ํ๋จ
UNION : 2๊ฐ์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํฉํด์ ์ถ๋ ฅํ๋๋ฐ ์ค๋ณต๊ฐ ์ ์ธ
UNION ALL : ์ค๋ณต๊ฐ๋ ๋ชจ๋ ์ถ๋ ฅ
DCL
1) Grant
Grant๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ถ์ฌ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ํด ๊ถํ์ด ํ์ํ๋ฉฐ ์ฐ๊ฒฐ, ์ ๋ ฅ, ์์ , ์ญ์ , ์กฐํ๋ฅผ ํ ์ ์๋ค
WITH GRANT OPTION : ํน์ ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ถ์ฌํ ์ ์๋ ๊ถํ์ ๋ถ์ฌ
(์ค ๊ด๋ฆฌ์ ๋ถ์ฌ, A -> B -> C ์ดํ B๋ฅผ ์ทจ์ํ๋ฉด B์ C์ ๊ถํ์ด ๋ชจ๋ ํ์)
WITH ADMIN OPTION : ํ ์ด๋ธ์ ๊ดํ ๋ชจ๋ ๊ถํ ๋ถ์ฌ(A -> B -> C ์ดํ B๋ฅผ ์ทจ์ํ๋ฉด B์ ๊ถํ๋ง ํ์)
2) REVOKE
REVOKE๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์์๊ฒ ๋ถ์ฌ๋ ๊ถํ์ ํ์
REVOKE privileges ON object FROM user;
TCL
1) COMMIT
COMMIT์ DML๋ก ๋ณ๊ฒฝํ ๋ฐ์ดํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํ๋ค
- ๋ณ๊ฒฝ ์ด์ ๋ฐ์ดํฐ๋ ์ญ์ ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์๋ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋ค
- COMMIT์ด ์๋ฃ๋๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณ๊ฒฝ์ผ๋ก ์ธํ LOCK์ด ํด์ ๋๋ค
- COMMIT์ด ์๋ฃ๋๋ฉด ๋ค๋ฅธ ๋ชจ๋ DB ์ฌ์ฉ์๋ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ์ ์กฐ์ํ ์ ์๋ค. COMMIT์ด ์๋ฃ๋๋ฉด ํ๋์ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋๋ค
2) ROLLBACK
ROLLBACK๋ฅผ ์คํํ๋ฉด ๋ฐ์ดํฐ์ ๋ํ ๋ณ๊ฒฝ ์ฌ์ฉ์ ๋ชจ๋ ์ทจ์ํ๊ณ ํธ๋์ญ์ ์ ์ข ๋ฃํ๋ค
- ์ด์ COMMIT ์ง์ ๊น์ง ๋ณต๊ตฌํ๋ค
ROLLBACK์ ์คํํ๋ฉด LOCK์ด ํด์ ๋๊ณ ๋ค๋ฅธ ์ฌ์ฉ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ ์ ์๋ค
3) SAVEPOINT : ๊ฒ์์์ ์ค๊ฐ ์ ์ฅ์ ๊ฐ๋
- SAVEPOINT๋ ํธ๋์ญ์ ์ ์๊ฒ ๋ถํ ํด ๊ด๋ฆฌํ๋ ๊ฒ์ผ๋ก SAVEPOINT๋ฅผ ์ฌ์ฉํ๋ฉด ์ง์ ๋ ์์น ์ดํ ํธ๋์ญ์ ๋ง ROLLBACKํ ์ ์๋ค
- ์ง์ ์ SAVEPOINT (์ธ์ด๋ธํฌ์ธํธ ์ด๋ฆ)
- ์ง์ ๋ SAVEPOINT๊น์ง๋ง ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์ทจ์ํ๊ณ ์ถ์ ๊ฒฝ์ฐ "ROLLBACK TO (์ธ์ด๋ธํฌ์ธํธ ์ด๋ฆ)"์ ์คํ
- ROLLBACK์ ์คํํ ๊ฒฝ์ฐ SAVEPOINT์ ๊ด๊ณ์์ด ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅํ์ง ์๋๋ค
'RDB๐๏ธ > ์ธํ๋ฐ : SQLD ์๊ฒฉ์ฆ ๋ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL ๊ฐ๋ฐ์ (SQLD) ์๊ฒฉ์ฆ ๋ฐ๊ธฐ Part.3 ์น์ 0. (0) | 2023.08.20 |
---|---|
SQL ๊ฐ๋ฐ์ (SQLD) ์๊ฒฉ์ฆ ๋ฐ๊ธฐ Part.2 ์น์ 2. (0) | 2023.08.03 |
SQL ๊ฐ๋ฐ์ (SQLD) ์๊ฒฉ์ฆ ๋ฐ๊ธฐ Part.2 ์น์ 0. (0) | 2023.07.12 |
SQL ๊ฐ๋ฐ์ (SQLD) ์๊ฒฉ์ฆ ๋ฐ๊ธฐ Part 1 ์น์ 2. (0) | 2023.06.29 |
SQL ๊ฐ๋ฐ์ (SQLD) ์๊ฒฉ์ฆ ๋ฐ๊ธฐ Part 1 ์น์ 1. (0) | 2023.06.19 |