DataBase/Oracle
-
Oracle - Self Join, Outer JoinDataBase/Oracle 2024. 8. 15. 20:32
Self Join동일한 테이블을 두 번 사용하여 자신과 조인하는 것입니다. 같은 테이블의 서로 다른 행을 비교하거나 연관시키고자 할 때 사용됩니다. Self Join은 기본적으로 테이블을 두 번 참조하여, 각 테이블을 별칭(alias)으로 구분합니다. SELECT A.ENAME AS EMPLOYEE, B.ENAME AS MANAGERFROM EMP A, EMP BWHERE A.MGR = B.EMPNO; 설명: 이 예제는 EMP 테이블에서 직원(EMPLOYEE)과 그들의 관리자(MANAGER)를 쌍으로 묶어 보여줍니다. 여기서 A와 B는 EMP 테이블의 두 가지 별칭입니다. A.MGR = B.EMPNO는 직원의 관리자 번호(MGR)와 다른 직원의 사원 번호(EMPNO)를 비교하여 두 데이터를 연결합니다...
-
Oracle - Join 문제와 함께 파해치DataBase/Oracle 2024. 8. 14. 23:09
Join2개 이상의 테이블의 데이터를 한번에 가져올 수 있다. 사원의 사원번호(emp), 이름(emp), 근무부서(dept) 이름을 가져온다.위의 테이블은 dept 테이블의 정보이다.SELECT e.empno, e.ename, d.DNAME FROM EMP e , DEPT d WHERE e.deptno = d.DEPTNO; 사원번호, 이름, 근무부서를 가져오는 경우 정확한 정보를 가지고 오기 위해서 emp테이블과 dept테이블의 deptno를 확인하여 동일한 사람들의 정보만을 가져와야한다. 사원의 사원번호(emp), 이름(emp), 근무지역(dept)을 가져온다.SELECT e.EMPNO, e.ename, d.locFROM emp e, dept dWHERE e.deptno = d.DEPTNO;해당 조건..
-
Oracle - HavingDataBase/Oracle 2024. 8. 13. 22:54
Having- Group By로 묶인 각 그룹들 중에 실제로 가져올 그룹을 선할 조건을 Having을 이용하여 가져온다.여기서 Having의 경우 Group By 절의 조건이 된다. 부서별 평균 급여가 2000이상인 부서의 급여 평균을 가져온다.SELECT DEPTNO, avg(sal) FROM emp GROUP BY deptno HAVING avg(sal)>=2000; 부서별 최대 급여액이 3000이하인 부서의 급여 총합을 가져온다.SELECT sum(sal) FROM emp group BY deptno HAVING max(sal) >=3000; 부서별 최소금액이 1000이하인 부서에서 직무가 CLERK인 사원들의 급여 총합을 구한다.SELECT sum(sal) FROM emp WHERE job='..
-
Oracle - Group byDataBase/Oracle 2024. 8. 13. 22:52
Group By - select문을 통해 얻어온 결과를 정해준 기준에 따라 그룹을 분류하고 각 그내에서 그룹함수를 사용할 수 있다.각 부서별 사원들의 급여 평균을 구한다.SELECT deptno, avg(sal) FROM emp GROUP BY deptno;부서별이라는 특정 기준을 group by로 분류하였다. 각 직무별 사원들의 급여 평균을 구한다.SELECT job, sum(sal) FROM emp GROUP BY job; 1500이상 급여를 받는 사원들의 부서별 급여 평균을 구한다.SELECT deptno, avg(sal) FROM emp WHERE sal >= 1500 GROUP BY DEPTNO;
-
Oracle - 그룹함수 (avg, sum, min, max)DataBase/Oracle 2024. 8. 12. 22:25
AVG : 총합을 구한다. 사원들의 급여 총합을 구한다.SELECT sum(sal) FROM emp; 사원들의 커미션을 가져온다.SELECT SUM(comm) FROM emp;그룹함수에서는 null값을 제외하고 계산한다. 급여가 1500이상인 사원들의 급여 총합을 구한다.SELECT sum(sal) FROM emp WHERE sal>=1500; 20번 부서에 근무하고 있는 사원들의 급여 총합을 구한다.SELECT sum(sal) FROM emp WHERE DEPTNO = 20; 직무가 SALESMAN인 사원들의 급여 총합을 구한다.SELECT sum(sal) FROM emp WHERE job = 'SALESMAN' 직무가 SALESMAN인 사원들의 이름과 급여 총합을 가져온다.SELECT ENAME,..
-
Oracle - DECODE, CASE 함수DataBase/Oracle 2024. 8. 12. 22:04
DECODE - 값에 따라 반환값을 결정 할 수 있다. 직급에 따라 인상된 급여액을 가져온다.CLERK : 10% SALESMAN : 15% PRESIDENT : 200% MANAGER : 5% ANALYST : 20%SELECT empno, ename, job, decode(job, 'CLERK', sal*1.1, 'SALESMAN', sal*1.15, 'PRESIDENT', sal*3, 'MANAGER', sal*1.05, 'ANALYST', sal*1.2)FROM emp;이와같이 DECODE를 사용하여 해당 직무에 맞게 인상된 급여액을 가져 올 수 있다. CASE - 조건에 따라 반환값을 결정 할 수 있다.급여액별 등급을 가져온다. 1000미만 : c등급 1000..
-
Oracle - 날짜함수의 모든 것DataBase/Oracle 2024. 8. 12. 00:17
현재 날짜 구하기SELECT SYSDATE FROM dual;현재 날짜를 기준으로 하여 년, 월, 일, 시, 분, 초 까지 확인이 가능하다. 날짜 더하기 빼기SELECT sysdate, SYSDATE - 10000, SYSDATE + 10000 FROM dual;특정 시간에서 - , + 를 이용하여 날짜를 더하거나 빼기가 가능하다. 여기서 숫자의 경우 일자로 계산이 된다. SELECT SYSDATE - HIREDATE FROM EMP;SELECT TRUNC(SYSDATE - HIREDATE) FROM EMP;위의 예제는사원들의 입사일로부터 근무한 일수를 구한다. 시, 분, 초 까지 모두 포함되어 나오기에 보기 좋게 TRUNC를 사용하였다. 반올림하여 날짜 구하기 -CC 년 기준SELECT ROUND(S..
-
Oracle 문자열 함수의 모든것DataBase/Oracle 2024. 8. 11. 22:05
문자열 소문자 대문자--대문자 -> 소문자SELECT 'ABCDef', LOWER('ABC') FROM dual;--소문자 -> 대분자SELECT 'ABCde', UPPER('ABCde') FROM dual;--첫글자만 대문자, 나머지는 소문자로SELECT 'aBCDEF', initcap('aBCDEF') FROM dual; 문자열 연결--문자열 연결SELECT CONCAT('kkk', CONCAT('abc', 'def')) FROM dual;SELECT CONCAT(CONCAT(CONCAT(CONCAT('사원의 이름은 ', ename), '이고, 직무는'), job),'입니다') FROM emp;SELECT '사원들의 이름은' || ename || '이고, 직무는' || job || '입니다' FR..