๐ DML(Data Manipulation Language(๋ฐ์ดํฐ ์กฐ์์ด))
- SELECT : ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ช ๋ น๋ฌธ , ๋ค์ํ ์ํฉ์ด๋ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ๊ฐ์ ธ์ฌ ์ ์์
๐ ๋ ์งํจ์
- ์ค๋ผํด์ ๋ ์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ดํ ์ ์๋ ํจ์๋ฅผ ์ ๊ณตํ๋ค.
- SYSDATE : ํ์ฌ ๋ ์ง์ ์๊ฐ์ ๋ฐํํ๋ค.
- MONTHS_BETWEEN : ๋ ๋ ์ง๊ฐ์ ๊ฐ์ ์๋ฅผ ๊ตฌํ๋ค.
- ADD_MONTHS : ์ฃผ์ด์ง ๊ฐ์ ์ ๋งํผ ๋ํ๋ค.
--ํ์ฌ ๋ ์ง ๊ตฌํ๊ธฐ
SELECT SYSDATE FROM DUAL; --(21/05/08)
--๋ ์ง ๋ฐ์ดํฐ ์ฐ์ฐ (10000์ผ)
SELECT SYSDATE, SYSDATE-10000, SYSDATE+10000 FROM DUAL;
--๊ฐ ์ฌ์์ด ์ ์ฌํ ๋ ์ง๋ก๋ถํฐ 1000์ผ ํ๊ฐ ๋๋ ๋ ์ง๋ฅผ ๊ฐ์ ธ์จ๋ค.
SELECT HIREDATE, HIREDATE+1000 FROM EMP;
--์ง๋ฌด๊ฐ ์ฐ๊ทนํ์ธ ์ฌ์์ ์ ์ฌ์ผ 100์ผ์ ๋ ์ง๋ฅผ ๊ตฌํ๋ค.
SELECT JOB, HIREDATE, HIREDATE-100 FROM EMP WHERE JOB = '์ฐ๊ทนํ';
-- ์ ์ฌ์์ ๊ทผ๋ฌด์ผ์ ๊ฐ์ ธ์จ๋ค. (์์์ ์ ๋ฒ๋ฆฐ๋ค)
SELECT TRUNC(SYSDATE-HIREDATE) FROM EMP;
--๋ฐ์ฌ๋ฆผ SELECT SYSDATE, ROUND(SYSDATE,'CC') AS "๋ ๋๋์๋ฆฌ",
ROUND(SYSDATE,'YYYY') AS "์๊ธฐ์ค", --์์ ๊ธฐ์ค์ผ๋ก ๋ ๋๋ฅผ ์ฌ๋ฆผํ ๊ฒ์ด๋ ํ์ฌ 4์์ด๋ฉด ์ฌ๋ฆผ, 8์์ด๋ฉด ๋ด๋ฆผ ROUND(SYSDATE,'DDD') AS "์๊ธฐ์ค", -- ํ์ฌ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ ์ง๋ฅผ ์ฌ๋ฆผํ ๊ฒ์ด๋ ์คํ๋ฉด ์ฌ๋ฆผ ์ค์ ์ด๋ฉด ๋ด๋ฆผ ROUND(SYSDATE, 'HH') AS "๋ถ๊ธฐ์ค", --ํ์ฌ ๋ถ์ ๊ธฐ์ค์ผ๋ก ์๋ฅผ ์ฌ๋ฆผํ ๊ฒ์ด๋ 30๋ถ ์ดํ๋ฉด ์ฌ๋ฆผ, ์ด์ ์ด๋ฉด ๋ด๋ฆผ ROUND(SYSDATE,'MM') AS "์ผ๊ธฐ์ค", --ํ์ฌ ์ผ์ ๊ธฐ์ค์ผ๋ก ์์ ์ฌ๋ฆผํ ๊ฒ์ด๋ 15์ผ ์ดํ๋ฉด ์ฌ๋ฆผ, ์ด์ ์ด๋ฉด ๋ด๋ฆผ ROUND(SYSDATE, 'DAY') AS "์ฃผ๊ธฐ์ค", -- ํ์ฌ ์ฃผ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ผ์ ์ฌ๋ฆผํ ๊ฒ์ด๋ ์ผ์ฃผ์ผ์ ์ ๋ฐ ์ด์ ์ง๋๊ฐ๋ค๋ฉด(๋ชฉ๊ธ) ์ฌ๋ฆผ, ์ด์ ์ด๋ฉด ๋ด๋ฆผ
ROUND(SYSDATE,'MI') AS "์ด๊ธฐ์ค" --ํ์ฌ ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ์ ์ฌ๋ฆผํ ๊ฒ์ด๋
FROM DUAL;
--๋ฒ๋ฆผ SELECT SYSDATE, TRUNC(SYSDATE,'CC') AS "๋ ๋๋์๋ฆฌ" ,
TRUNC(SYSDATE,'YYYY') AS "์๊ธฐ์ค",
TRUNC(SYSDATE,'DDD') AS "์๊ธฐ์ค",
TRUNC(SYSDATE, 'HH') AS "๋ถ๊ธฐ์ค",
TRUNC(SYSDATE,'MM') AS "์ผ๊ธฐ์ค",
TRUNC(SYSDATE, 'DAY') AS "์ฃผ๊ธฐ์ค",
TRUNC(SYSDATE,'MI') AS "์ด๊ธฐ์ค"
FROM DUAL;
-- 2021๋ ์ ์ ์ฌํ ์ฌ์๋ค์ ์ฌ์์ด๋ฆ, ๊ธ์ฌ, ์ ์ฌ์ผ์ ๊ฐ์ ธ์จ๋ค.
SELECT EMPNO, ENAME, HIREDATE FROM EMP WHERE HIREDATE BETWEEN '21/01/01' AND '21/12/31';
SELECT ENAME, SAL, HIREDATE FROM EMP WHERE TRUNC(HIREDATE, 'YYYY') = '2021/01/01';
-- ๋ชจ๋ ์ฌ์์ด ๊ทผ๋ฌดํ ๊ฐ์ ์๋ฅผ ๊ตฌํ๋ค.
SELECT MONTHS_BETWEEN(SYSDATE, HIREDATE) FROM EMP; SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE)) FROM EMP; --์์์ ๋ฒ๋ฆฌ๊ธฐ
--๊ฐ์ ์๋ฅผ ๋ํ๋ค. (๋ํดํธ๋ '์ผ'๊ธฐ์ค )
SELECT SYSDATE+100, ADD_MONTHS(SYSDATE,100) FROM DUAL;
--๊ฐ ์ฌ์๋ค์ ์ ์ฌ์ผ ํ 100๊ฐ์ ๋๋ ๋ ์ง๋ฅผ ๊ตฌํ๋ค.
SELECT HIREDATE, ADD_MONTHS(HIREDATE,100) FROM EMP;
--์ง์ ๋ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ง์ ๋ ๋ค์ ์์ผ์ด ๋ช์ผ์ธ์ง ๊ตฌํ๋ค.
SELECT SYSDATE, NEXT_DAY(SYSDATE, '์์์ผ') FROM DUAL;
--์ง์ ๋ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ๋ง์ง๋ง ๋ ์ง๋ฅผ ๊ตฌํ๋ค.
SELECT SYSDATE, LAST_dAY(SYSDATE) FROM DUAL;
-- TO_CHAR : ์ค๋ผํด DB์ ๋ ์ง -> ํ๋ก๊ทธ๋จ ๋ ์ง ํ์์ผ๋ก ๋ฌธ์์ด๋ก ๋ณํ
SELECT SYSDATE, TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS AM') FROM DUAL;
--TO_DATE : ํ๋ก๊ทธ๋จ -> ์ค๋ผํด DB ๋ ์ง
SELECT TO_DATE('2018-04-30 03:39:20 ์คํ', 'YYYY-MM-DD HH:MI:SS AM') FROM DUAL;
๐ DECODE
- ๊ฐ์ ๋ฐ๋ผ ๋ฐํ๊ฐ์ด ๊ฒฐ์ ๋๋ ๊ตฌ๋ฌธ
- DECODE(์ปฌ๋ผ๋ช , ๊ฐ1, ๋ฐํ๊ฐ1, ๊ฐ2, ๋ฐํ๊ฐ2, ๊ฐ3, ๋ฐํ๊ฐ3)
--๊ฐ ์ฌ์์ ๋ถ์ ์ด๋ฆ์ ๊ฐ์ ธ์จ๋ค.
SELECT EMPNO, ENAME, DECODE(DEPTNO, 301,'์์ ํ', 302,'๊ณต์ฐํ', 303,'์ฐ๊ทนํ', 305,'๋ง์ผํ ํ', 309,'ํด์ธ๊ฐ๋ฐํ', 310,'ํ์คํฐ๋ฒํ')
FROM EMP;
--์ ๋ฌด์ ๋ฐ๋ผ ์ธ์๋ ๊ธ์ฌ์ก์ ๊ฐ์ ธ์จ๋ค.
--์์ ํ : 5%
--๊ณต์ฐํ : 10%
--์ฐ๊ทนํ : 15%
--๋ง์ผํ ํ : 5%
--ํด์ธ๊ฐ๋ฐํ : 5%
--ํ์คํฐ๋ฒํ : 8%
SELECT EMPNO, ENAME, JOB, DECODE(JOB,'์์ ํ', SAL * 1.05, '๊ณต์ฐํ', SAL * 1.1, '์ฐ๊ทนํ', SAL * 1.15, '๋ง์ผํ ํ', SAL * 1.05, 'ํด์ธ๊ฐ๋ฐํ', SAL * 1.05, 'ํ์คํฐ๋ฒํ', SAL * 1.08)
FROM EMP;
๐ CASE
- ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐํ๊ฐ์ด ๊ฒฐ์ ๋๋ ๊ตฌ๋ฌธ
- CASE WHEN ์กฐ๊ฑด์1 THEN ๋ฐํ๊ฐ1##### WHEN ์กฐ๊ฑด์2 THEN ๋ฐํ๊ฐ2 END
--๊ธ์ฌ์ก ๋ณ ๋ฑ๊ธ์ ๊ฐ์ ธ์จ๋ค.
-- 300 ๋ฏธ๋ง : C๋ฑ๊ธ
-- 300 ์ด์, 500๋ฏธ๋ง : B๋ฑ๊ธ
-- 500 ์ด์ : A๋ฑ๊ธ
SELECT EMPNO, ENAME, CASE WHEN SAL < 300 THEN 'C๋ฑ๊ธ' WHEN SAL >= 300 AND SAL < 500 THEN 'B๋ฑ๊ธ' WHEN SAL >= 500 THEN 'A๋ฑ๊ธ'
END
FROM EMP;
--์ง์๋ค์ ๊ธ์ฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ธ์ํ๋ค.
-- 300 ๋ฏธ๋ง : 100%
-- 300 ์ด์, 500๋ฏธ๋ง : 20%
-- 500 ์ด์ : 10%
SELECT EMPNO, ENAME, CASE WHEN SAL <= 300 THEN SAL * 2 WHEN SAL > 300 AND SAL <= 500 THEN SAL *1.02 WHEN SAL >= 500 THEN SAL * 1.01
END
FROM EMP;
'์ด๋ก > DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฌด์กฐ๊ฑด ๋ฐ๋ผํ๊ธฐ] INSERT, UPDATE, DELECT (0) | 2021.05.26 |
---|---|
[๋ฌด์กฐ๊ฑด ๋ฐ๋ผํด๋ณด๊ธฐ] DML ๊ทธ๋ฃนํจ์, HAVING, JOIN, SET, ์๋ธ์ฟผ๋ฆฌ (0) | 2021.05.25 |
[๋ฌด์กฐ๊ฑด ๋ฐ๋ผํด๋ณด๊ธฐ] DML ์ ๋ ฌ, ์ซ์ํจ์, ๋ฌธ์์ดํจ์ (0) | 2021.05.25 |
[๋ฌด์กฐ๊ฑด ๋ฐ๋ผํด๋ณด๊ธฐ]DML ๊ธฐ๋ณธ์ฟผ๋ฆฌ๋ฌธ, ์ฐ์ฐ์, ๋น๊ต ,NVL (0) | 2021.05.25 |
๋ฐ์ดํฐ ๋ฒ ์ด์ค DataBase ๊ฐ์ (0) | 2021.05.21 |