๋ชฉ์ฐจ
1. 23.10.20(๊ธ)
1. 20231020_01_scott.sql
SELECT USER
FROM DUAL;
--==>> SCOTT
--โ ๋ฐ์ดํฐ ์์ ์
SELECT *
FROM TBL_DEPT;
/*
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 ๊ฐ๋ฐ๋ถ ์์ธ
*/
--โ ๋ฐ์ดํฐ ์์ (UPDATE -> TBL_DEPT)
UPDATE TBL_DEPT
SET DNAME = '์ฐ๊ตฌ๋ถ', LOC = 'RUDRL'
WHERE DEPTNO = 50;
--==>>1 ํ ์ด(๊ฐ) ์
๋ฐ์ดํธ๋์์ต๋๋ค.
--โ ๋ฐ์ดํฐ ์์ ํ
SELECT *
FROM TBL_DEPT;
/*
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 ์ฐ๊ตฌ๋ถ RUDRL
*/
--โ ๋กค๋ฐฑ
ROLLBACK;
--โ ์ปค๋ฐ์ ์ํด์ ์์ ์ ์ผ๋ก ๋์๊ฐ
SELECT *
FROM TBL_DEPT;
/*
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 ๊ฐ๋ฐ๋ถ ์์ธ
*/
--โ ๋ฐ์ดํฐ ์์
UPDATE TBL_DEPT
SET DNAME = '์ฐ๊ตฌ๋ถ', LOC = '์ธ์ฒ'
WHERE DEPTNO = 50;
--==>> 1 ํ ์ด(๊ฐ) ์
๋ฐ์ดํธ๋์์ต๋๋ค.
--โ ๋ฐ์ดํฐ ์์ ํ์ธ
SELECT *
FROM TBL_DEPT;
/*
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 ์ฐ๊ตฌ๋ถ ์ธ์ฒ
*/
--โ ์ปค๋ฐ
COMMIT;
--==>> ์ปค๋ฐ ์๋ฃ.
--โ ๋กค๋ฐฑ
ROLLBACK;
--==>> ๋กค๋ฐฑ ์๋ฃ.
--โ ์ปค๋ฐํด์ ๋กค๋ฐฑํด๋ ์ด์ ๋ฐ์ดํฐ๋ก ๋์๊ฐ์ง ์์
SELECT *
FROM TBL_DEPT;
/*
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 ์ฐ๊ตฌ๋ถ ์ธ์ฒ
*/
--โ ๋ฐ์ดํฐ ์ญ์ (DELETE -> TBL_DEPT)
DELETE TBL_DEPT
WHERE DEPTNO = 50;
--** ๋ฐ๋ก ์ญ์ ํ์ง ์๋๋ค!
--โ ์ญ์ ํ ๋ด์ฉ ์กฐํ
SELECT *
FROM TBL_DEPT
WHERE DEPTNO = 50;
--==>> 50 ์ฐ๊ตฌ๋ถ ์ธ์ฒ
--โ ์กฐํ ํ ์ญ์
DELETE TBL_DEPT
WHERE DEPTNO = 50;
--==>> 1 ํ ์ด(๊ฐ) ์ญ์ ๋์์ต๋๋ค.
--โ ์ญ์ ํ ์กฐํ
SELECT *
FROM TBL_DEPT;
/*
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
*/
--โ ์ปค๋ฐ
COMMIT;
--==>> ์ปค๋ฐ ์๋ฃ.
--------------------------------------------------------------------------------
--โ โ โ ORDER BY ์ โ โ โ --
--** ์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๊ณ ๋์ค์ ๋์ค๊ณ ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ํฌ๊ฒ ์ฐ๊ด์ด ์์
--** ๋ณด๊ธฐ ์ข์ผ๋ ค๊ณ ์ ๋ ฌํ๋ฉด ์๋๋ค -> ๋ถํ๊ฐ ๋ง์ด ๊ฑธ๋ฆผ
-- FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", JOB "์ง์ข
", SAL "๊ธ์ฌ"
, SAL * 12 + NVL(COMM, 0) "์ฐ๋ด"
FROM EMP;
--==>>
/*
SMITH 20 CLERK 800 9600
ALLEN 30 SALESMAN 1600 19500
WARD 30 SALESMAN 1250 15500
JONES 20 MANAGER 2975 35700
MARTIN 30 SALESMAN 1250 16400
BLAKE 30 MANAGER 2850 34200
CLARK 10 MANAGER 2450 29400
SCOTT 20 ANALYST 3000 36000
KING 10 PRESIDENT 5000 60000
TURNER 30 SALESMAN 1500 18000
ADAMS 20 CLERK 1100 13200
JAMES 30 CLERK 950 11400
FORD 20 ANALYST 3000 36000
MILLER 10 CLERK 1300 15600
*/
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", JOB "์ง์ข
", SAL "๊ธ์ฌ"
, SAL * 12 + NVL(COMM, 0) "์ฐ๋ด"
FROM EMP
ORDER BY DEPTNO ASC; -- DEPTNO -> ์ ๋ ฌ ๊ธฐ์ค : ๋ถ์๋ฒํธ
-- ASC -> ์ ๋ ฌ ์ ํ : ์ค๋ฆ์ฐจ์(์๋ต๊ฐ๋ฅ)
-- DESC -> ์ ๋ ฌ ์ ํ : ๋ด๋ฆผ์ฐจ์
/*
CLARK 10 MANAGER 2450 29400
KING 10 PRESIDENT 5000 60000
MILLER 10 CLERK 1300 15600
JONES 20 MANAGER 2975 35700
FORD 20 ANALYST 3000 36000
ADAMS 20 CLERK 1100 13200
SMITH 20 CLERK 800 9600
SCOTT 20 ANALYST 3000 36000
WARD 30 SALESMAN 1250 15500
TURNER 30 SALESMAN 1500 18000
ALLEN 30 SALESMAN 1600 19500
JAMES 30 CLERK 950 11400
BLAKE 30 MANAGER 2850 34200
MARTIN 30 SALESMAN 1250 16400
*/
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", JOB "์ง์ข
", SAL "๊ธ์ฌ"
, SAL * 12 + NVL(COMM, 0) "์ฐ๋ด"
FROM EMP
ORDER BY DEPTNO; -- DEPTNO -> ์ ๋ ฌ ๊ธฐ์ค : ๋ถ์๋ฒํธ
-- ASC -> ์ ๋ ฌ ์ ํ : ์ค๋ฆ์ฐจ์ -> ์๋ต๊ฐ๋ฅ ~!!!
/*
CLARK 10 MANAGER 2450 29400
KING 10 PRESIDENT 5000 60000
MILLER 10 CLERK 1300 15600
JONES 20 MANAGER 2975 35700
FORD 20 ANALYST 3000 36000
ADAMS 20 CLERK 1100 13200
SMITH 20 CLERK 800 9600
SCOTT 20 ANALYST 3000 36000
WARD 30 SALESMAN 1250 15500
TURNER 30 SALESMAN 1500 18000
ALLEN 30 SALESMAN 1600 19500
JAMES 30 CLERK 950 11400
BLAKE 30 MANAGER 2850 34200
MARTIN 30 SALESMAN 1250 16400
*/
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", JOB "์ง์ข
", SAL "๊ธ์ฌ"
, SAL * 12 + NVL(COMM, 0) "์ฐ๋ด"
FROM EMP
ORDER BY DEPTNO DESC; -- DEPTNO -> ์ ๋ ฌ ๊ธฐ์ค : ๋ถ์๋ฒํธ
-- DESC -> ์ ๋ ฌ ์ ํ : ๋ด๋ฆผ์ฐจ์
/*
BLAKE 30 MANAGER 2850 34200
TURNER 30 SALESMAN 1500 18000
ALLEN 30 SALESMAN 1600 19500
MARTIN 30 SALESMAN 1250 16400
WARD 30 SALESMAN 1250 15500
JAMES 30 CLERK 950 11400
SCOTT 20 ANALYST 3000 36000
JONES 20 MANAGER 2975 35700
SMITH 20 CLERK 800 9600
ADAMS 20 CLERK 1100 13200
FORD 20 ANALYST 3000 36000
KING 10 PRESIDENT 5000 60000
MILLER 10 CLERK 1300 15600
CLARK 10 MANAGER 2450 29400
*/
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", JOB "์ง์ข
", SAL "๊ธ์ฌ"
, SAL * 12 + NVL(COMM, 0) "์ฐ๋ด"
FROM EMP
ORDER BY ์ฐ๋ด DESC;
--** FROM - WHERE - GRUOP BY - HAVING - SELECT - ORDER BY
--** '์ฐ๋ด'์ด๋ผ๋ ๋ณ์นญ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๊ฐ๋ฅ -> SELECT ๊ฐ ORDER BY๋ณด๋ค ์์ ์์ด์
/*
KING 10 PRESIDENT 5000 60000
FORD 20 ANALYST 3000 36000
SCOTT 20 ANALYST 3000 36000
JONES 20 MANAGER 2975 35700
BLAKE 30 MANAGER 2850 34200
CLARK 10 MANAGER 2450 29400
ALLEN 30 SALESMAN 1600 19500
TURNER 30 SALESMAN 1500 18000
MARTIN 30 SALESMAN 1250 16400
MILLER 10 CLERK 1300 15600
WARD 30 SALESMAN 1250 15500
ADAMS 20 CLERK 1100 13200
JAMES 30 CLERK 950 11400
SMITH 20 CLERK 800 9600
*/
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", JOB "์ง์ข
", SAL "๊ธ์ฌ"
, SAL * 12 + NVL(COMM, 0) "์ฐ๋ด"
FROM EMP
ORDER BY 2; -- ๋ถ์๋ฒํธ ์ค๋ฆ์ฐจ์
--> EMP ํ
์ด๋ธ์ด ๊ฐ๊ณ ์๋ ๊ณ ์ ํ ์ปฌ๋ผ ์์(2->ENAME)๊ฐ ์๋๋ผ
-- SELECT ์ฒ๋ฆฌ ๋๋ ๋ ๋ฒ์งธ ์ปฌ๋ผ(2->DEPTNO, ๋ถ์๋ฒํธ)์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
-- ASC๋ ์๋ต๋ ์ํ -> ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
-- ์ค๋ผํด์์ ๊ธฐ๋ณธ ์ธ๋ฑ์ค๋ ์๋ฐ์ ๋ฌ๋ฆฌ 1๋ถํฐ ์์
-- ์ต์ข
์ ์ผ๋ก... ํ์ฌ <ORDER BY 2>๊ตฌ๋ฌธ์ -> <ORDER BY DEPTNO ASC>์ด๋ค.
--** 2 -> EMP ์ ๋๋ฒ์งธ๊ฐ ์๋๋ผ, SELECT์ ๋๋ฒ์งธ์ ํด๋น
--** 2 -> JAVA๋ 0๋ฒ๋ถํฐ ๋ถ์ฌํ์ง๋ง, ORACLE์ 1๋ฒ๋ถํฐ ๋ถ์ฌ๋จ
/*
CLARK 10 MANAGER 2450 29400
KING 10 PRESIDENT 5000 60000
MILLER 10 CLERK 1300 15600
JONES 20 MANAGER 2975 35700
FORD 20 ANALYST 3000 36000
ADAMS 20 CLERK 1100 13200
SMITH 20 CLERK 800 9600
SCOTT 20 ANALYST 3000 36000
WARD 30 SALESMAN 1250 15500
TURNER 30 SALESMAN 1500 18000
ALLEN 30 SALESMAN 1600 19500
JAMES 30 CLERK 950 11400
BLAKE 30 MANAGER 2850 34200
MARTIN 30 SALESMAN 1250 16400
*/
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", JOB "์ง์ข
", SAL "๊ธ์ฌ"
, SAL * 12 + NVL(COMM, 0) "์ฐ๋ด"
FROM EMP
ORDER BY 2, 4;
-- ๋ถ์๋ฒํธ, ๊ธ์ฌ ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
-- (1์ฐจ) (2์ฐจ)
--==>>
/*
MILLER 10 CLERK 1300 15600
CLARK 10 MANAGER 2450 29400
KING 10 PRESIDENT 5000 60000
SMITH 20 CLERK 800 9600
ADAMS 20 CLERK 1100 13200
JONES 20 MANAGER 2975 35700
SCOTT 20 ANALYST 3000 36000
FORD 20 ANALYST 3000 36000
JAMES 30 CLERK 950 11400
MARTIN 30 SALESMAN 1250 16400
WARD 30 SALESMAN 1250 15500
TURNER 30 SALESMAN 1500 18000
ALLEN 30 SALESMAN 1600 19500
BLAKE 30 MANAGER 2850 34200
*/
SELECT ENAME, DEPTNO, JOB, SAL
FROM EMP
ORDER BY 2, 3, 4 DESC;
--** ----- --
--** ์ค๋ฆ์ฐจ์ ๋ด๋ฆผ์ฐจ์
--โ 2 -> DEPTNO(๋ถ์๋ฒํธ) ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
--โก 3 -> JOB(์ง์ข
) ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
--โข 4 DESC -> SAL(๊ธ์ฌ) ๊ธฐ์ค ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
--------------------------------------------------------------------------------
--โ CONCAT() : ๋ฌธ์์ด ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ๊ฒฐํฉ์ ์ํํ๋ ํจ์
-- ์ค๋ก์ง 2๊ฐ์ ๋ฌธ์์ด๋ง ๊ฒฐํฉ์ํฌ ์ ์๋ค.
SELECT ENAME || JOB "COL1"
,CONCAT(ENAME, JOB) "COL2"
FROM EMP;
/*
SMITHCLERK SMITHCLERK
ALLENSALESMAN ALLENSALESMAN
WARDSALESMAN WARDSALESMAN
JONESMANAGER JONESMANAGER
MARTINSALESMAN MARTINSALESMAN
BLAKEMANAGER BLAKEMANAGER
CLARKMANAGER CLARKMANAGER
SCOTTANALYST SCOTTANALYST
KINGPRESIDENT KINGPRESIDENT
TURNERSALESMAN TURNERSALESMAN
ADAMSCLERK ADAMSCLERK
JAMESCLERK JAMESCLERK
FORDANALYST FORDANALYST
MILLERCLERK MILLERCLERK
*/
SELECT '์๋ก' || '๋ฐฐ๋ คํ๋ฉฐ' || '์ง๋ด์' "COL1"
, CONCAT('์๋ก','๋ฐฐ๋ คํ๋ฉฐ','์ง๋ด์') "COL2"
FROM DUAL;
--==>> ์๋ฌ๋ฐ์ (ORA-00909: invalid number of arguments)
/* 1-๋ฌธ์ & ํจ๊ปํผ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-- ์ฌ์๋ช
, ์ง์ข
๋ช
, ๋ถ์๋ฒํธ
DESC EMP;
SELECT ENAME || JOB || EMPNO
,CONCAT(ENAME,CONCAT(JOB, EMPNO))
FROM EMP;
--==>>
/*
SMITHCLERK7369 SMITHCLERK7369
ALLENSALESMAN7499 ALLENSALESMAN7499
WARDSALESMAN7521 WARDSALESMAN7521
JONESMANAGER7566 JONESMANAGER7566
MARTINSALESMAN7654 MARTINSALESMAN7654
BLAKEMANAGER7698 BLAKEMANAGER7698
CLARKMANAGER7782 CLARKMANAGER7782
SCOTTANALYST7788 SCOTTANALYST7788
KINGPRESIDENT7839 KINGPRESIDENT7839
TURNERSALESMAN7844 TURNERSALESMAN7844
ADAMSCLERK7876 ADAMSCLERK7876
JAMESCLERK7900 JAMESCLERK7900
FORDANALYST7902 FORDANALYST7902
MILLERCLERK7934 MILLERCLERK7934
*/
--> ๋ด๋ถ์ ์ผ๋ก ํ ๋ณํ์ด ์ผ์ด๋๋ฉฐ ๊ฒฐํฉ์ ์ํํ๊ฒ ๋๋ค.
-- CONCAT() ์ ๋ฌธ์์ด๊ณผ ๋ฌธ์์ด์ ๊ฒฐํฉ์์ผ์ฃผ๋ ํจ์์ด์ง๋ง
-- ๋ด๋ถ์ ์ผ๋ก ์ซ์๋ ๋ ์ง๋ฅผ ๋ฌธ์๋ก ๋ณํํด์ฃผ๋ ๊ณผ์ ์ด ํฌํจ๋์ด ์๋ค.
--โ SUBSTR()
/*
obj.substring()
----
๋ฌธ์์ด -> ๋ฌธ์์ด.substring(n, m)
------
๋ฌธ์์ด์ n ๋ถํฐ n-1 ๊น์ง... (์ธ๋ฑ์ค๋ 0 ๋ถํฐ)
*/
--โ SUBSTR() ๊ฐฏ์ ๊ธฐ๋ฐ / SUBSTRB() ๋ฐ์ดํธ ๊ธฐ๋ฐ
--** ๋ฐ์ดํธ ๊ธฐ๋ฐ์ธ ๊ฒฝ์ฐ ์กฐ์ฌํด์ ์ฌ์ฉํด์ผํจ -> UTF-8 ์์ ๋ฌธ์๊ฐ ๋๊ฒจ ์๋ ค์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์
SELECT ENAME "COL1"
,SUBSTR(ENAME, 1, 2) "COL2"
FROM EMP;
--> ๋ฌธ์์ด์ ์ถ์ถํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ํจ์
-- ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋์ ๋ฌธ์์ด(์ถ์ถ์ ๋์, TARGET)
-- ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ถ์ถ์ ์์ํ๋ ์์น(์ธ๋ฑ์ค, START) -> ์ธ๋ฑ์ค๋ 1๋ถํฐ ์์...
-- ์ธ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ถ์ถํ ๋ฌธ์์ด์ ๊ฐฏ์(๊ฐฏ์, COUNT) -> ์๋ต์.. ๋ฌธ์์ด ๊ธธ์ด ๋๊น์ง...
--==>>
/*
SMITH SM
ALLEN AL
WARD WA
JONES JO
MARTIN MA
BLAKE BL
CLARK CL
SCOTT SC
KING KI
TURNER TU
ADAMS AD
JAMES JA
FORD FO
MILLER MI
*/
SELECT ENAME "COL1"
, SUBSTR(ENAME, 3, 2) "COL2"
, SUBSTR(ENAME, 3, 5) "COL3"
, SUBSTR(ENAME, 3) "COL4"
, SUBSTR(ENAME, 6, 1) "COL5"
FROM EMP;
--==>>
/*
SMITH IT ITH ITH
ALLEN LE LEN LEN
WARD RD RD RD
JONES NE NES NES
MARTIN RT RTIN RTIN N
BLAKE AK AKE AKE
CLARK AR ARK ARK
SCOTT OT OTT OTT
KING NG NG NG
TURNER RN RNER RNER R
ADAMS AM AMS AMS
JAMES ME MES MES
FORD RD RD RD
MILLER LL LLER LLER R
*/
/* 2-๋ฌธ์ & ํจ๊ปํผ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ TBL_SQWON ํ
์ด๋ธ์์ ์ฑ๋ณ์ด ๋จ์ฑ์ธ ์ฌ์๋ง
-- ์ฌ์๋ฒํธ, ์ฌ์๋ช
, ์ฃผ๋ฏผ๋ฒํธ, ๊ธ์ฌ ํญ๋ชฉ์ ์กฐํํ๋ค.
-- ๋จ, SUBSTR() ํจ์๋ฅผ ํ์ฉํ์ฌ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ค.
SELECT *
FROM TBL_SAWON;
SELECT *
FROM TBL_SAWON
WHERE SUBSTR(JUBUN,7,1) = 1 OR SUBSTR(JUBUN,7,1) = 3; --** SUBSTR๋ ๋ฌธ์ํ์
์ผ๋ก ๋์ด ์๋ํ๋ณํ๊ท์น์ ์์งํ ๊ฒ(๊ถ์ฅx)
SELECT *
FROM TBL_SAWON
WHERE SUBSTR(JUBUN,7,1) = '1' OR SUBSTR(JUBUN,7,1) = '3';
SELECT *
FROM TBL_SAWON
WHERE SUBSTR(JUBUN,7,1) IN (1,3); --** SUBSTR๋ ๋ฌธ์ํ์
์ผ๋ก ๋์ด ์๋ํ๋ณํ๊ท์น์ ์์งํ ๊ฒ(๊ถ์ฅx)
SELECT *
FROM TBL_SAWON
WHERE SUBSTR(JUBUN,7,1) IN ('1','3');
/*
1001 ๊ฐํ์ฑ 9710171234567 2005-01-03 3000
1008 ์ ๋์ด 6909101234567 1998-01-10 2000
1009 ์ด์ด๊ฒฝ 0505053234567 2011-05-06 1500
1011 ์ด์ค์ 9501061234567 2009-09-19 4000
1013 ๋จ์ง 6511111234567 1999-11-11 2000
1014 ์ด์ฃผํ 9904171234567 2009-11-11 2000
1015 ๋จ๊ถ๋ฏผ 0202023234567 2010-10-10 2300
*/
โ LENGTH() ๊ธ์ ์ / LENGTHB() ๋ฐ์ดํธ ์
SELECT ENAME "COL1"
, LENGTH(ENAME) "COL2"
, LENGTHB(ENAME) "COL3"
FROM EMP;
/*
SMITH 5 5
ALLEN 5 5
WARD 4 4
JONES 5 5
MARTIN 6 6
BLAKE 5 5
CLARK 5 5
SCOTT 5 5
KING 4 4
TURNER 6 6
ADAMS 5 5
JAMES 5 5
FORD 4 4
MILLER 6 6
*/
--โ INSTR()
SELECT 'ORACLE ORAHOME BIORA' "COL1"
, INSTR('ORACLE ORAHOME BIORA', 'ORA', 1, 1) "COL2" -- 1
, INSTR('ORACLE ORAHOME BIORA', 'ORA', 1, 2) "COL3" -- 8
, INSTR('ORACLE ORAHOME BIORA', 'ORA', 2, 1) "COL4" -- 8
, INSTR('ORACLE ORAHOME BIORA', 'ORA', 2) "COL5" -- 8
, INSTR('ORACLE ORAHOME BIORA', 'ORA', 2, 3) "COL6" -- 0
FROM DUAL;
--==>> ORACLE ORAHOME BIORA 1 8 8 8 0
--> ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ํด๋นํ๋ ๋ฌธ์์ด์์... (๋์ ๋ฌธ์์ด, TARGET)
-- ๋ ๋ฒ์งธ ํ๋ฆฌ๋ฏธํฐ ๊ฐ์ ํตํด ๋๊ฒจ์ค ๋ฌธ์์ด์ด ๋ฑ์ฅํ๋ ์์น๋ฅผ ์ฐพ์๋ผ~!!!
-- ์ธ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ฐพ๊ธฐ ์์ํ๋ (์ค์บ์ ์์ํ๋) ์์น
-- ๋ค ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ช ๋ฒ์งธ ๋ฑ์ฅํ๋ ๊ฐ์ ์ฐพ์ ๊ฒ์ธ์ง์ ๋ํ ์ค์ -> (1์ผ ๊ฒฝ์ฐ ์๋ต ๊ฐ๋ฅ)
SELECT '๋์์ค๋ผํด ์ง์ผ๋ก์ค๋ผ ํฉ๋๋ค.' "COL1"
, INSTR('๋์์ค๋ผํด ์ง์ผ๋ก์ค๋ผ ํฉ๋๋ค.', '์ค๋ผ', 1) "COL2" -- 3
, INSTR('๋์์ค๋ผํด ์ง์ผ๋ก์ค๋ผ ํฉ๋๋ค.', '์ค๋ผ', 2) "COL3" -- 3
, INSTR('๋์์ค๋ผํด ์ง์ผ๋ก์ค๋ผ ํฉ๋๋ค.', '์ค๋ผ',10) "COL4" -- 10
, INSTR('๋์์ค๋ผํด ์ง์ผ๋ก์ค๋ผ ํฉ๋๋ค.', '์ค๋ผ',11) "COL5" -- 0
FROM DUAL;
--==>> ๋์์ค๋ผํด ์ง์ผ๋ก์ค๋ผ ํฉ๋๋ค. 3 3 10 0
--> ๋ง์ง๋ง ํ๋ผ๋ฏธํฐ ๊ฐ์ผ ์๋ตํ ํํ๋ก ์ฌ์ฉ -> ๋ง์ง๋ง ํ๋ผ๋ฏธํฐ -> 1
--โ REVERSE()
SELECT 'ORACLE' "COL1"
, REVERSE('ORACLE') "COL2"
, REVERSE('์ค๋ผํด') "COL3"
FROM DUAL;
--==>> ORACLE ELCARO ???
-- ๋์ ๋ฌธ์์ด์ ๊ฑฐ๊พธ๋ก ๋ฐํํ๋ค. (๋จ, ํ๊ธ์ ์ ์ธ - ์ฌ์ฉ ๋ถ๊ฐ)
--โ ์ค์ต ํ
์ด๋ธ ์์ฑ(TBL_FILES)
CREATE TABLE TBL_FILES
( FILENO NUMBER(3)
, FILENAME VARCHAR2(100)
);
--==>> Table TBL_FILES์ด(๊ฐ) ์์ฑ๋์์ต๋๋ค.
--โ ๋ฐ์ดํฐ ์
๋ ฅ(TBL_FILES)
INSERT INTO TBL_FILES VALUES(1, 'C:\AAA\BBB\CCC\SALES.DOC');
INSERT INTO TBL_FILES VALUES(2, 'C:\AAA\PANMAE.XXLS');
INSERT INTO TBL_FILES VALUES(3, 'D:\RESEARCH.PPT');
INSERT INTO TBL_FILES VALUES(4, 'C:\DOCUMENTS\STUDY.HWP');
INSERT INTO TBL_FILES VALUES(5, 'C:\DOCUMENTS\TEMP\HOMEWORK\SQL.TXT');
INSERT INTO TBL_FILES VALUES(6, 'C:\SHARE\F\TEST\FLOWER.PNG');
INSERT INTO TBL_FILES VALUES(7, 'E:\STUDY\ORACLE\20231020_01_SCOTT.SQL');
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
SELECT *
FROM TBL_FILES;
/*
1 C:\AAA\BBB\CCC\SALES.DOC
2 C:\AAA\PANMAE.XXLS
3 D:\RESEARCH.PPT
4 C:\DOCUMENTS\STUDY.HWP
5 C:\DOCUMENTS\TEMP\HOMEWORK\SQL.TXT
6 C:\SHARE\F\TEST\FLOWER.PNG
7 E:\STUDY\ORACLE\20231020_01_SCOTT.SQL
*/
--โ ์ปค๋ฐ
COMMIT;
--==>> ์ปค๋ฐ ์๋ฃ.
SELECT FILENO "ํ์ผ๋ฒํธ"
, FILENAME "ํ์ผ๋ช
"
FROM TBL_FILES;
/*
ํ์ผ๋ฒํธ ํ์ผ๋ช
1 C:\AAA\BBB\CCC\SALES.DOC
2 C:\AAA\PANMAE.XXLS
3 D:\RESEARCH.PPT
4 C:\DOCUMENTS\STUDY.HWP
5 C:\DOCUMENTS\TEMP\HOMEWORK\SQL.TXT
6 C:\SHARE\F\TEST\FLOWER.PNG
7 E:\STUDY\ORACLE\20231020_01_SCOTT.SQL
*/
/* 3-๋ฌธ์ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ TBL_TILES ํ
์ด๋ธ์ ์กฐํํ์ฌ
-- ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ค.
---> ํ์ผ๋ช
.ํ์ฅ์
/* 3-๋ด๊ฐ ํผ ๋ด์ฉ1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
SELECT FILENO "ํ์ผ๋ฒํธ"
, SUBSTR(FILENAME
, LENGTH(FILENAME) - INSTR(REVERSE(FILENAME), '\',1,1) + 2)
"๋ค์ ์ฌ๋์ฌ~๋ง์ง๋ง"
FROM TBL_FILES;
/* 3-๋ค๋ฅธ์ฌ๋์ด ํผ ๋ด์ฉ1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
SELECT FILENO "ํ์ผ๋ฒํธ"
, REVERSE(SUBSTR(REVERSE(FILENAME),1, INSTR(REVERSE(FILENAME), '\',1,1)-1))
"๋ค์ง๊ธฐ 3๋ฒ"
FROM TBL_FILES;
/* 3-๋ค๋ฅธ์ฌ๋์ด ํผ ๋ด์ฉ2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
SELECT FILENO "ํ์ผ๋ฒํธ"
,SUBSTR(FILENAME,INSTR(FILENAME, '\',-1,1)+1)
"-1 ๋ค์์๋ถํฐ ์ฐพ๊ธฐ"
FROM TBL_FILES;
/* 3-ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
SELECT FILENO "ํ์ผ๋ฒํธ"
, REVERSE(FILENAME)
, SUBSTR(REVERSE(FILENAME),1, INSTR(REVERSE(FILENAME), '\',1)-1)
FROM TBL_FILES;
/*
1 COD.SELAS \CCC\BBB\AAA\:C ->์ต์ด ใ\ใ ๋ฑ์ฅ์์น : 10 -> 1~9 ์ถ์ถ
2 SLXX.EAMNAP \AAA\:C ->์ต์ด ใ\ใ ๋ฑ์ฅ์์น : 12 -> 1~11 ์ถ์ถ
3 TPP.HCRAESER \:D ->์ต์ด ใ\ใ ๋ฑ์ฅ์์น : 13 -> 1~13 ์ถ์ถ
4 PWH.YDUTS \STNEMUCOD\:C ->์ต์ด ใ\ใ ๋ฑ์ฅ์์น : 10 -> 1~10 ์ถ์ถ
5 TXT.LQS \KROWEMOH\PMET\STNEMUCOD\:C ->์ต์ด ใ\ใ ๋ฑ์ฅ์์น : 8 -> 1~8 ์ถ์ถ
6 GNP.REWOLF \TSET\F\ERAHS\:C ->์ต์ด ใ\ใ ๋ฑ์ฅ์์น : 10 -> 1~10 ์ถ์ถ
7 LQS.TTOCS_10_02013202 \ELCARO\YDUTS\:E ->์ต์ด ใ\ใ ๋ฑ์ฅ์์น : 22 -> 1~22 ์ถ์ถ
*/
SELECT FILENO "ํ์ผ๋ฒํธ"
, FILENAME "๊ฒฝ๋กํฌํจํ์ผ๋ช
"
, REVERSE(FILENAME) "๊ฑฐ๊พธ๋ก๋๊ฒฝ๋ก๋ฐํ์ผ๋ช
"
, SUBSTR(๋์๋ฌธ์์ด, 1, ์ต์ด ใ\ใ ๋ฑ์ฅ์์น -1) "๊ฑฐ๊พธ๋ก๋ํ์ผ๋ช
"
FROM TBL_FILES;
SELECT FILENO "ํ์ผ๋ฒํธ"
, FILENAME "๊ฒฝ๋กํฌํจํ์ผ๋ช
"
, REVERSE(FILENAME) "๊ฑฐ๊พธ๋ก๋๊ฒฝ๋ก๋ฐํ์ผ๋ช
"
, SUBSTR(REVERSE(FILENAME), 1, INSTR(REVERSE(FILENAME), '\',1)-1) "๊ฑฐ๊พธ๋ก๋ํ์ผ๋ช
"
FROM TBL_FILES;
/*
1 C:\AAA\BBB\CCC\SALES.DOC COD.SELAS\CCC\BBB\AAA\:C COD.SELAS
2 C:\AAA\PANMAE.XXLS SLXX.EAMNAP\AAA\:C SLXX.EAMNAP
3 D:\RESEARCH.PPT TPP.HCRAESER\:D TPP.HCRAESER
4 C:\DOCUMENTS\STUDY.HWP PWH.YDUTS\STNEMUCOD\:C PWH.YDUTS
5 C:\DOCUMENTS\TEMP\HOMEWORK\SQL.TXT TXT.LQS\KROWEMOH\PMET\STNEMUCOD\:C TXT.LQS
6 C:\SHARE\F\TEST\FLOWER.PNG GNP.REWOLF\TSET\F\ERAHS\:C GNP.REWOLF
7 E:\STUDY\ORACLE\20231020_01_SCOTT.SQL LQS.TTOCS_10_02013202\ELCARO\YDUTS\:E LQS.TTOCS_10_02013202
*/
SELECT FILENO "ํ์ผ๋ฒํธ"
, FILENAME "๊ฒฝ๋กํฌํจํ์ผ๋ช
"
, REVERSE(FILENAME) "๊ฑฐ๊พธ๋ก๋๊ฒฝ๋ก๋ฐํ์ผ๋ช
"
, SUBSTR(REVERSE(FILENAME), 1, INSTR(REVERSE(FILENAME), '\',1)-1) "๊ฑฐ๊พธ๋ก๋ํ์ผ๋ช
"
, REVERSE(SUBSTR(REVERSE(FILENAME), 1, INSTR(REVERSE(FILENAME), '\',1)-1)) "ํ์ผ๋ช
"
FROM TBL_FILES;
/*
1 C:\AAA\BBB\CCC\SALES.DOC COD.SELAS\CCC\BBB\AAA\:C COD.SELAS SALES.DOC
2 C:\AAA\PANMAE.XXLS SLXX.EAMNAP\AAA\:C SLXX.EAMNAP PANMAE.XXLS
3 D:\RESEARCH.PPT TPP.HCRAESER\:D TPP.HCRAESER RESEARCH.PPT
4 C:\DOCUMENTS\STUDY.HWP PWH.YDUTS\STNEMUCOD\:C PWH.YDUTS STUDY.HWP
5 C:\DOCUMENTS\TEMP\HOMEWORK\SQL.TXT TXT.LQS\KROWEMOH\PMET\STNEMUCOD\:C TXT.LQS SQL.TXT
6 C:\SHARE\F\TEST\FLOWER.PNG GNP.REWOLF\TSET\F\ERAHS\:C GNP.REWOLF FLOWER.PNG
7 E:\STUDY\ORACLE\20231020_01_SCOTT.SQL LQS.TTOCS_10_02013202\ELCARO\YDUTS\:E LQS.TTOCS_10_02013202 20231020_01_SCOTT.SQL
*/
SELECT FILENO "ํ์ผ๋ฒํธ"
, REVERSE(SUBSTR(REVERSE(FILENAME), 1, INSTR(REVERSE(FILENAME), '\',1)-1)) "ํ์ผ๋ช
"
FROM TBL_FILES;
/*
1 SALES.DOC
2 PANMAE.XXLS
3 RESEARCH.PPT
4 STUDY.HWP
5 SQL.TXT
6 FLOWER.PNG
7 20231020_01_SCOTT.SQL
*/
--โ LPAD()
--> Byte ๋ฅผ ํ๋ณดํ์ฌ ์ผ์ชฝ๋ถํฐ ๋ฌธ์์ด๋ก ์ฑ์ฐ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ํจ์
SELECT 'ORACLE' "COL1"
, LPAD('ORACLE',10,'*') "COL2"
FROM DUAL;
--> โ 10Bype ๊ณต๊ฐ์ ํ๋ณด ํ๋ค. -> ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ํด
-- โก ํ๋ณดํ ๊ณต๊ฐ์ 'OREACLE' ๋ฌธ์์ด์ ๋ด๋๋ค -> ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ํด
-- โข ๋จ์์๋ Byte ๊ณต๊ฐ์ ์ผ์ชฝ๋ถํฐ ์ธ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ผ๋ก ์ฑ์ด๋ค.
-- โฃ ์ด๋ ๊ฒ ๊ตฌ์ฑ๋ ์ต์ข
๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ค.
--==>> ORACLE ****ORACLE
--โ RPAD()
--> Byte ๋ฅผ ํ๋ณดํ์ฌ ์ค๋ฅธ์ชฝ๋ถํฐ ๋ฌธ์์ด๋ก ์ฑ์ฐ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ํจ์
SELECT 'ORACLE' "COL1"
, RPAD('ORACLE',10,'*') "COL2"
FROM DUAL;
--==>>ORACLE ORACLE****
--โ LTRIN()
SELECT 'ORAORAORAORACLEORACLE' "COL1" -- ์ค๋ผ ์ค๋ผ ์ค๋ผ ์ค๋ผํด ์ค๋ผํด
, LTRIM('ORAORAORAORACLEORACLE', 'ORA') "COL2"
, LTRIM('AAAAAAAAAORACLEORACLE', 'ORA') "COL3"
, LTRIM('ORAORAORAoRACLEORACLE', 'ORA') "COL4"
, LTRIM('ORAORA ORAORACLEORACLE', 'ORA')"COL5" -- ์ผ์ชฝ ๊ณต๋ฐฑ ์ ๊ฑฐ
, LTRIM(' ORACLE', ' ') "COL6" -- ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ์๋ต
, LTRIM(' ORACLE') "COL7"
FROM DUAL;
--==>>
/*
ORAORAORAORACLEORACLE
CLEORACLE
CLEORACLE
oRACLEORACLE
ORAORACLEORACLE
ORACLE
ORACLE
*/
--**O ํ์ธ 'ORA'์ ๋ฌธ์์กด์ฌ O -> ์ญ์
--**R ํ์ธ 'ORA'์ ๋ฌธ์์กด์ฌ O -> ์ญ์
--**A ํ์ธ 'ORA'์ ๋ฌธ์์กด์ฌ O -> ์ญ์
--** :
--**C ํ์ธ 'ORA'์ ๋ฌธ์์กด์ฌ X -> ๋ฏธ์ญ์ , ๋
SELECT LTRIM('๊น์ด์ ์ด๊น๊น์ด์ด์ ๊น๊น๊น์ด๊น์ด๊น๋ฐ์ด๊น์ ', '๊น์ ์ด') "COL1"
FROM DUAL;
--==>> ๋ฐ์ด๊น์
--โ TRTIM()
--> ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ํด๋นํ๋ ๋ฌธ์์ด์ ๋์์ผ๋ก
-- ์ผ์ชฝ๋ถํฐ **์ฐ์์ ์ผ๋ก ๋ฑ์ฅ**ํ๋ ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์์ ์ง์ ํ ๊ธ์์
-- ๊ฐ์ ๊ธ์๊ฐ ๋ฑ์ฅํ ๊ฒฝ์ฐ ์ด๋ฅผ ์ ๊ฑฐํ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ค. **์ ๊ฑฐ ํ ๋จ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ**
-- ๋จ, ์์ฑํ์ผ๋ก ์ฒ๋ฆฌ๋์ง ์๋๋ค. **ํ๋์ฉ ํ๋์ฉ ์ฒ๋ฆฌํจ**
--โ TRANSLATE()
--> 1 : 1๋ก ๋ฐ๊ฟ์ค๋ค,
SELECT TRANSLATE('MY ORACLE SERVER'
,'ABCDEFGHIJKLMNOPQRSTUVWZYZ'
,'abcdefghijklmnopqrstuvwzyz') "COL1"
FROM DUAL;
--==>> my oracle server
--** ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ M
-- -> ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ์์ M ์ฐพ๊ธฐ
-- -> ์ธ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์์ ๊ฐ์ ์์น์ ํด๋นํ๋ m์ผ๋ก ๋ณํ
SELECT TRANSLATE('010-9322-9643'
, '0123456789'
, '๊ณต์ผ์ด์ผ์ฌ์ค์ก์น ํ๊ตฌ') "COL1"
FROM DUAL;
--==>> ๊ณต์ผ๊ณต-๊ตฌ์ผ์ด์ด-๊ตฌ์ก์ฌ์ผ
--โ REPLACE()
SELECT REPLACE('MY ORACLE SERVER ORAHOME', 'ORA', '์ค๋ผ') "COL1"
FROM DUAL;
--==>> MY ์ค๋ผCLE SERVER ์ค๋ผHOME
--โ ROUND() ๋ฐ์ฌ๋ฆผ์ ์ฒ๋ฆฌํด ์ฃผ๋ ํจ์
SELECT 48.678 "COL1" -- 48.678
, ROUND(48.678, 2) "COL2" -- 48.68 -- ์์์ ์ดํ ๋์งธ์๋ฆฌ๊น์ง ํํ -> ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ
--** ์์์ ์ดํ ๋์งธ์๋ฆฌ๊น์ง ๋ํ๋ด๋ผX
--** ์์์ ์ดํ ๋์งธ์๋ฆฌ๊น์ง ํํํด๋ผO
, ROUND(48.674,2) "COL3" -- 48.67
, ROUND(48.674,1) "COL4" -- 48.7
, ROUND(48.684,0) "COL5" -- 49
, ROUND(48.684) "COL6" -- 49 -- ์ ์๊น์ง๋ง ๋ณด์ฌ๋ฌ๋ผ๋ 0 ์๋ต๊ฐ๋ฅ
, ROUND(48.684,-1)"COL7" -- 50
, ROUND(48.684,-2)"COL8" -- 0
, ROUND(48.684,-3)"COL9" -- 0
FROM DUAL;
--==>> 48.678 48.68 48.67 48.7 49
--โ TRUNC() ์ ์ญ์ ์ฒ๋ฆฌํด ์ฃผ๋ ํจ์
SELECT 48.678 "COL1" -- 48.678
, TRUNC(48.678, 2) "COL2" -- 48.67 -- ์์์ ์ดํ ๋์งธ์๋ฆฌ๊น์ง ํํ -> ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ
, TRUNC(48.674,2) "COL3" -- 48.67
, TRUNC(48.674,1) "COL4" -- 48.6
, TRUNC(48.684,0) "COL5" -- 48
, TRUNC(48.684) "COL6" -- 48 -- ์ ์๊น์ง๋ง ๋ณด์ฌ๋ฌ๋ผ๋ 0 ์๋ต๊ฐ๋ฅ
, TRUNC(48.684,-1)"COL7" -- 40
, TRUNC(48.684,-2)"COL8" -- 0
, TRUNC(48.684,-3)"COL9" -- 0
FROM DUAL;
--==>> 48.678 48.67 48.67 48.6 48 48 40 0 0
--โ MOB() ๋๋จธ์ง๋ฅผ ๋ฐํํ๋ ํจ์ -> %
SELECT MOD(5,2) "COL1"
FROM DUAL;
--==>> 1
--โ POWER() ์ ๊ณฑ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ํจ์
SELECT POWER(5,3) "COL1"
FROM DUAL;
--==>> 125
--> 5์ 3์น ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ฐํ
--โ SQRT() ๋ฃจํธ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ ํจ์
SELECT SQRT(2) "COL1"
FROM DUAL;
--==>> 1.41421356237309504880168872420969807857
--โ LOG() ๋ก๊ทธ ํจ์
SELECT LOG(10, 100) "COL1"
, LOG(10, 20)
FROM DUAL;
--==>> 2 1.30102999566398119521373889472449302677
--โป ์ ์
-- LN() ์์ฐ ๋ก๊ทธ ์กด์ฌํจ~!!!
SELECT LN(95) "COL1"
FROM DUAL;
--==>> 4.55387689160054083460978676511404117675
--โ ์ผ๊ฐํจ์
SELECT SIN(1), COS(1), TAN(1)
FROM DUAL;
----==>> 0.8414709848078965066525023216302989996233
-- 0.5403023058681397174009366074429766037354
-- 1.55740772465490223050697480745836017308
-->> ๊ฐ๊ฐ ์ธ์ธ, ์ฝ์ธ์ธ, ํ์ ํธ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ค.
--โ ์ผ๊ฐํจ์์ ์ญํจ์(๋ฒ์: -1 ~ 1)
SELECT SIN(0.5), COS(0.5), TAN(0.5)
FROM DUAL;
----==>>
/*
0.4794255386042030002732879352155713880819
0.8775825618903727161162815826038296520119
0.5463024898437905132551794657802853832851
*/
--โ SIGN() ์๋ช
, ๋ถํธ, ํน์ง
--> ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ์ด ์์์ด๋ฉด 1, 0์ด๋ฉด 0, ์์์ด๋ฉด -1์ ๋ฐํํ๋ค.
SELECT SIGN(5-2) "COL1"
, SIGN(5-5) "COL2"
, SIGN(5-6) "COL3"
FROM DUAL;
--==>> 1 0 -1
--> ๋งค์ถ์ด๋ ์์ง์ ๊ด๋ จํ์ฌ ์ ์ ๋ฐ ํ์์ ๊ฐ๋
์ ๊ฐ์ง ๋ ์ข
์ข
์ฌ์ฉ๋๋ค.
--โ ASCII(), CHR() -> ์๋ก ๋์(์์)ํ๋ ํจ์
SELECT ASCII('A') "COL1"
, CHR(65) "COL2"
FROM DUAL;
--==>> 65 A
-- <ASCIII()> : ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ๋ฐ์ ๋ฌธ์์ ์์คํค์ฝ๋ ๊ฐ์ ๋ฐํํ๋ค.
-- <CHR()> : ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ๋ฐ์ ์์คํค์ฝ๋ ๊ฐ์ผ๋ก ํด๋น ๋ฌธ์๋ฅผ ๋ฐํํ๋ค.
--โป ๋ ์ง ๊ด๋ จ ์ธ์
์ค์ ๋ณ๊ฒฝ
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
--==>> Session์ด(๊ฐ) ๋ณ๊ฒฝ๋์์ต๋๋ค.
--โป ๋ ์ง ์ฐ์ฐ์ ๊ธฐ๋ณธ ๋จ์๋ ์ผ์(DAY)์ด๋ค~!!! CHECK~!!!
SELECT SYSDATE "COL1" -- 2023-10-20 15:40:02
, SYSDATE + 1 "COL2" -- 2023-10-21 15:40:02
, SYSDATE - 2 "COL3" -- 2023-10-18 15:40:02
, SYSDATE + 30 "COL4" -- 2023-11-19 15:40:02
FROM DUAL;
--โ ์๊ฐ ๋จ์ ์ฐ์ฐ
SELECT SYSDATE "COL1" -- 2023-10-20 15:45:15
, SYSDATE + 1/24 "COL2" -- 2023-10-20 16:45:15
, SYSDATE - 1/24 "COL3" -- 2023-10-20 14:45:15
FROM DUAL;
--** 1/24 -> 1์๊ฐ
/* 4-๋ฌธ์ & ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ ํ์ฌ์๊ฐ๊ณผ... ํ์ฌ ์๊ฐ ๊ธฐ์ค 1์ผ 2์๊ฐ 3๋ถ 4์ด ํ๋ฅผ ์กฐํํ๋ค.
/*
------------------- -------------------
ํ์ฌ ์๊ฐ ์ฐ์ฐ ํ ์๊ฐ
------------------- -------------------
2023-10-20 15:43:27 2023-10-21 17:46:31
*/
SELECT SYSDATE "ํ์ฌ์๊ฐ"
, SYSDATE + 1 + 2/24 + 1/24/60*3 + 1/24/60/60*4 "์ฐ์ฐ ํ ์๊ฐ"
, SYSDATE + 1 + 3/(24*60) + 4/(24*60*60) "์ฐ์ฐ ํ ์๊ฐ"
FROM DUAL;
--==>> 2023-10-20 15:47:34 2023-10-21 17:50:38
-- ๋ฐฉ๋ฒ 1.
SELECT SYSDATE "ํ์ฌ ์๊ฐ"
, SYSDATE + 1 + (2/24) + (3/(24*60)) + (4/(24*60*60)) "์ฐ์ฐ ํ ์๊ฐ"
FROM DUAL;
--==>> 2023-10-20 16:08:11 2023-10-21 18:11:15
-- ๋ฐฉ๋ฒ 2.
SELECT SYSDATE "ํ์ฌ ์๊ฐ"
, SYSDATE + ((1*24*60*60) + (2*60*60) + (3*60) + 4)/ (24*60*60) "์ฐ์ฐ ํ ์๊ฐ"
FROM DUAL;
--==>> 2023-10-20 16:07:57 2023-10-21 18:11:01
--โ ๋ ์ง - ๋ ์ง -> ์ผ์
SELECT TO_DATE('2024-03-19','YYYY-MM-DD') - TO_DATE('2023-08-22', 'YYYY-MM-DD') "COL1"
FROM DUAL;
--==>> 210
--โ ๋ฐ์ดํฐ ํ์
์ ๋ณํ
SELECT TO_DATE('2023-10-20', 'YYYY-MM-DD') "COL1"
FROM DUAL;
--==>> 2023-10-20 00:00:00
SELECT TO_DATE('2023-10-32', 'YYYY-MM-DD') "COL1"
FROM DUAL;
--==>> ์๋ฌ๋ฐ์
-- (ORA-01847: day of month must be between 1 and last day of month)
SELECT TO_DATE('2023-02-29', 'YYYY-MM-DD') "COL1"
FROM DUAL;
--==>> ์๋ฌ ๋ฐ์(ORA-01839: date not valid for month specified)
SELECT TO_DATE('2023-13-20', 'YYYY-MM-DD') "COL1"
FROM DUAL;
--==>> ์๋ฌ ๋ฐ์()
--โป TO_DATE() ํจ์๋ฅผ ํตํด ๋ฌธ์ ํ์
์ ๋ ์ง ํ์
์ผ๋ก ๋ณํ์ ์ํํ๋ ๊ณผ์ ์์
-- ๋ด๋ถ์ ์ผ๋ก ํด๋น ๋ ์ง์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์ด๋ฃจ์ด์ง๋ค.
--โ ADD_MONTHS() ๊ฐ์ ์๋ฅผ ๋ํ๊ฑฐ๋ ๋นผ์ฃผ๋ ํจ์
SELECT SYSDATE "COL1"
, ADD_MONTHS(SYSDATE, 2) "COL2"
, ADD_MONTHS(SYSDATE, 3) "COL3"
, ADD_MONTHS(SYSDATE, -2) "COL4"
, ADD_MONTHS(SYSDATE, -3) "COL5"
FROM DUAL;
--==>>
/*
2023-10-20 16:19:46 -> ํ์ฌ
2023-12-20 16:19:46 -> 2๊ฐ์ ํ
2024-01-20 16:19:46 -> 3๊ฐ์ ํ
2023-08-20 16:19:46 -> 2๊ฐ์ ์
2023-07-20 16:19:46 -> 3๊ฐ์ ์
*/
--โ MONTHS_BETWEEN()
--> ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ์์ ๋ ๋ฒ์งธ ์ธ์๊ฐ์ ๋บ ๊ฐ์์๋ฅผ ๋ฐํํ๋ค.
SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2002-05-31','YYYY-MM-DD')) "COL1"
FROM DUAL;
--==> 256.667209901433691756272401433691756272
--> ๊ฐ์ ์์ ์ฐจ์ด๋ฅผ ๋ฐํํ๋ ํจ์
-- ๊ฒฐ๊ณผ๊ฐ์ ๋ถํธ๊ฐ <->(์์)๋ก ๋ฐํ๋์์ ๊ฒฝ์ฐ์๋
-- ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ์ ํด๋นํ๋ ๋ ์ง๋ณด๋ค
-- ๋ ๋ฒ์งธ ์ธ์๊ฐ์ ํด๋นํ๋ ๋ ์ง๊ฐ <๋ฏธ๋>๋ผ๋ ์๋ฏธ๋ก ํ์ธํ ์ ์ด์ฟ.
--โ NEXT_DAY()
SELECT NEXT_DAY(SYSDATE, 'ํ ') "COL1"
, NEXT_DAY(SYSDATE, '์') "COL2"
FROM DUAL;
--==>> 2023-10-21 16:25:45 2023-10-22 16:25:45
--โป ์ถ๊ฐ ์ธ์
์ค์ ๋ณ๊ฒฝ
ALTER SESSION SET NLS_DATE_LANGUAGE = 'ENGLISH';
SELECT NEXT_DAY(SYSDATE, 'SAT') "COL1"
, NEXT_DAY(SYSDATE, 'MON') "COL2"
FROM DUAL;
--==>> 2023-10-21 2023-10-23
--โป ์ถ๊ฐ ์ธ์
์ค์ ๋ณ๊ฒฝ
ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN';
--==>> Session์ด(๊ฐ) ๋ณ๊ฒฝ๋์์ต๋๋ค.
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
--==>> Session์ด(๊ฐ) ๋ณ๊ฒฝ๋์์ต๋๋ค.
--โ LAST_DAY()
--> ํด๋น ๋ ์ง๊ฐ ํฌํจ๋์ด ์๋ ๊ทธ๋ฌ์ ๋ง์ง๋ง ๋ ์ ๋ฐํํ๋ค.
SELECT SYSDATE "COL1" -- 2023-10-20
, LAST_DAY(SYSDATE) "COL2" -- 2023-10-31
, LAST_DAY(TO_DATE('2023-02-12', 'YYYY-MM-DD')) "COL3" -- 2023-02-28
, LAST_DAY(TO_DATE('2020-02-12', 'YYYY-MM-DD')) "COL3" -- 2020-02-29
FROM DUAL;
/* 5-๋ฌธ์ & ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ ์ค๋๋ถ๋ก.. ์ ํ์ด๊ฐ ๊ตฐ๋์ ๋ค์ ๋๋ ค๊ฐ๋ค.
-- ๋ณต๋ฌด๊ธฐ๊ฐ์ 22๊ฐ์๋ก ํ๋ค.
-- 1. ์ ์ญ ์ผ์๋ฅผ ๊ตฌํ๋ค.
SELECT SYSDATE "TODAY"
, ADD_MONTHS(SYSDATE, 22) "์ ์ญ์ผ์"
FROM DUAL;
-- ํ๋ฃจ ๊ผฌ๋ฐ๊ผฌ๋ฐ 3๋ผ ์์ฌ๋ฅผ ํด์ผ ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด..
-- ์ ํ์ด๊ฐ ๋ช ๋ผ๋ฅผ ๋จน์ด์ผ ์ง์ ๋ณด๋ด์ค๊น?
-- ๋ณต๋ฌด๊ธฐ๊ฐ * 3
-- --------
-- (์ ์ญ์ผ์ - ํ์ฌ์ผ์)
-- (์ ์ญ์ผ์ - ํ์ฌ์ผ์) * 3
SELECT SYSDATE "TODAY"
, ADD_MONTHS(SYSDATE, 22) "์ ์ญ์ผ์"
, (ADD_MONTHS(SYSDATE, 22) - SYSDATE)*3 "COL1"
FROM DUAL;
--==>> 2010
--โป ๋ ์ง ๊ด๋ จ ์ธ์
์ค์ ๋ณ๊ฒฝ
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
--==>> Session์ด(๊ฐ) ๋ณ๊ฒฝ๋์์ต๋๋ค.
/* 5-๋ฌธ์ & ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ ํ์ฌ ๋ ์ง ๋ฐ ์๊ฐ์ผ๋ก๋ถํฐ...
-- ์๋ฃ์ผ(2024-03-18 18:00:00) ๊น์ง
-- ๋จ์ ๊ธฐ๊ฐ์... ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ์กฐํํ ์ ์๋๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ค.
/*
------------------- ------------------- ---- ----- ---- ---
ํ์ฌ ์๊ฐ ์๋ฃ์ผ ์ผ ์๊ฐ ๋ถ ์ด
------------------- ------------------- ---- ----- ---- ---
2023-10-20 17:09:10 2024-03-19 18:00:00 140 0 49 50
------------------- ------------------- ---- ----- ---- ---
๋ถ 67๋ถ..X
*/
/*SELECT SYSDATE "ํ์ฌ์๊ฐ"
-- , TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') "์๋ฃ์ผ"
-- , TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE "์๋ฃ์ผ-ํ์ฌ"
, TRUNC(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE) "์ผ"
-- , MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1) "์ผ์ ์ธ๋๋จธ์ง"
-- , MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24 "์๊ฐ"
, TRUNC(MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24) "์๊ฐ"
-- , MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60 "๋ถ"
, TRUNC(MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60) "๋ถ"
, MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60
--- TRUNC(MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60)
"์ด"
, MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60
--- TRUNC(MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60)
"์ด"
FROM DUAL;*/
/* 5-๋ค๋ฅธ์ฌ๋์ด ํผ ๋ด์ฉ1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
SELECT SYSDATE "ํ์ฌ ์๊ฐ"
, TO_DATE('2024-03-19 18:00:00', 'YYYY-MM-DD HH24:MI:SS') "์๋ฃ์ผ"
, TRUNC(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE) "์ผ"
, TRUNC(MOD((TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE)*24,24)) "์๊ฐ"
, TRUNC(MOD((TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE)*24*60,60)) "๋ถ"
, TRUNC(MOD((TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE)*24*60*60,60)) "์ด"
FROM DUAL;
2. ํจ์:
2.1. ์ํํจ์: ROUND(), TRUNC(), MOD(5,2)
| ํจ์ | ์ค๋ช | EX |
| ROUND() | ๋ฐ์ฌ๋ฆผ | ROUND(48.678, 2) "COL2" -- 48.68 |
| TRUNC() | ์ ์ญ | TRUNC(48.678, 2) "COL2" -- 48.67 |
| MOD(5,2) | ๋๋จธ์ง | MOD(5,2) "COL1" -- 1 |
2.2. ๋ ์งํจ์:SYSDATE, ADD_MONTHS(SYSDATE, 2) , TO_DATE(), MONTHS_BETWEEN(), NEXT_DAY(), LAST_DAY()
| ํจ์ | ์ค๋ช | EX |
| SYSDATE | ๋ ์ง ์ฐ์ฐ ( ๊ธฐ๋ณธ ๋จ์๋ ์ผ์(DAY) ) |
|
| SYSDATE + 1/24 | ์๊ฐ ๋จ์ ์ฐ์ฐ | |
| ADD_MONTHS(SYSDATE, 2) | ADD_MONTHS() ๊ฐ์ ์๋ฅผ ๋ํ๊ฑฐ๋ ๋นผ์ฃผ๋ ํจ์ | |
| TO_DATE() | ๋ฌธ์ ํ์ ์ ๋ ์ง ํ์ ์ผ๋ก ๋ณํ | |
| MONTHS_BETWEEN() | ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ์์ ๋ ๋ฒ์งธ ์ธ์๊ฐ์ ๋บ ๊ฐ์์ | MONTHS_BETWEEN(SYSDATE, TO_DATE('2002-05-31','YYYY-MM-DD')) |
| NEXT_DAY() | ์ ์ผ ๊ฐ๊น์ด ์์ผ | NEXT_DAY(SYSDATE, '์') |
| LAST_DAY() | ํด๋น ๋ ์๊ฐ ํฌํจ๋์ด ์๋ ๊ทธ๋ฌ์ ๋ง์ง๋ง ๋ | LAST_DAY(TO_DATE('2023-02-12', 'YYYY-MM-DD')) |