본문 바로가기

전체 글59

[Oracle] ANSI SQL 조인 NATURAL JOIN - 두 테이블에 동일한 칼럼명이 있을경우 자동 조인함 SELECT E.ename, D.dname, e.deptno FROM emp E, dept D WHERE E.deptno = D.deptno; -- deptno 의 칼럼이 양테이블에 있기때문에, 정확한 테이블 별명을 넣어야 한다. SELECT E.ename, D.dname, deptno FROM emp E NATURAL JOIN dept D; --deptno는 두 테이블에 중복이므로, 별명이 생략되어야 함 T1 JOIN T2 USING (칼럼명, ..., 칼럼명N) - 비교 칼럼이 여러개 인 경우 USING에 선언 SELECT E.ename, D.dname, deptno FROM emp E JOIN dept D USING (de.. 2021. 4. 18.
[Oracle] JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, (+) WHERE 절 JOIN SELECT t1.ename, t1.sal, T2.* FROM emp t1, salgrade T2 WHERE t1.sal BETWEEN T2.losal AND T2.hisal; WHERE 절 JOIN하기 옵션 (+) 방법 - 오라클만 가능 select d.dname, l.city from dept d, locations l where d.loc_code = l.loc_code(+); (+)가 없는 테이블 ROW가 전체 출력 됨, DEPT DNAME > INSA 정보까지 보기 위해, locations 테이블에 (+) 함 LEFT JOIN, RIGHT JOIN SELECT D.DNAME, L.LOC_CODE FROM DEPT D LEFT JOIN LOCATIONS L -- FROM D.. 2021. 4. 18.
[Oracle] RANK, DENSE_RANK, ROW_NUMBER, NTILE, LAG, LEAD RANK() OVER, RANK() OVER(PARTITION BY 그룹), SELECT EMPNO, ENAME, DEPTNO, SAL, RANK() OVER (ORDER BY SAL DESC) "RANK" FROM EMP; 사원번호, 이름, 부서번호, 급여, 급여가 많은 사원부터 순위 조회 사원번호, 이름, 부서번호, 급여, 부서 내에서 급여가 많은 사원부터 순위 조회 SELECT EMPNO, ENAME, DEPTNO, SAL, RANK() OVER (PARTITION BY DEPTNO ORDER BY SAL DESC) "RANK" FROM EMP; DENSE_RANK() OVER, DENSE_RANK() OVER(PARTITION BY 그룹) ORDER BY 절에 사용된 컬럼이나 표현식에 대하여 순위.. 2021. 4. 17.
[Oracle/오라클] 그룹함수 - COUNT, SUM, AVG, MAX, MIN, ROWS , + OVER, group by, having MIN, MAX select min(ename), max(ename), min(hiredate), max(hiredate) from emp; 예제 테이블 SELECT * FROM TB_GRADE; SELECT CLASS_CD, MAX(KOR) KOR, MAX(ENG) ENG, MAX(MAT) MAT FROM TB_GRADE GROUP BY CLASS_CD; SELECT CLASS_CD, STUDENT_NO, STUDENT_NM, KOR, SUM(KOR) OVER(PARTITION BY CLASS_CD) AS KOR_SUM, MAX(KOR) OVER(PARTITION BY CLASS_CD) AS KOR_MAX FROM TB_GRADE ORDER BY CLASS_CD, STUDENT_NO; 1) GROUP .. 2021. 4. 17.
[Oracle] 데이터 타입 변환 함수 - 날짜 / 숫자 SYSDATE FORMAT 변경 ALTER SESSION SET nls_date_format ='yyyy-mm-dd'; ALTER SESSION SET nls_date_format ='yyyy-mm-dd hh24:mi:ss'; DY, DAY 요일구하기 select sysdate, TO_CHAR(sysdate,'DY'), TO_CHAR(sysdate,'DAY') from dual; SELECT sysdate, to_char(sysdate, 'Q') 분기, to_char(sysdate, 'DDD') "올해 몇 번째 날", to_char(sysdate, 'DY') "요일" , to_char(sysdate, 'D') "요일을 숫자로", to_char(sysdate, 'WW') "올해 몇 번째 주" FROM du.. 2021. 4. 13.
[Oracle] 날짜 함수 - ADD_MONTHS, MONTHS_BETWEEN, LAST_DAY, TRUNC, EXTRACT, INTERVAL select sysdate, sysdate+300, add_months(sysdate, 10), sysdate +365*10, add_months(sysdate, 12*10) from dual; 기간 개월 수 구하기 MONTHS_BETWEEN(최근, 과거) select ename, hiredate, trunc(months_between(sysdate, hiredate)) 근속월, trunc(months_between(sysdate, hiredate)/12) 근속년 from emp; 해당월 마지막일자 구하기 LAST_DAY select last_day(sysdate) from dual; 부분 초기화 TRUNC select sysdate, trunc(sysdate), trunc(sysdate,'yy'), t.. 2021. 4. 12.
[Oracle] 문자/숫자 함수 LPAD(선택칼럼, 문자수, 치환문자) , RPAD LTRIM(선택칼럼, 삭제하고자 하는 문자) , RTRIM - 첫 문자만 삭제, TRIM - 양쪽 문자 삭제 select ename, LTRIM(ename, 'S'), RTRIM(ename, 'S'), TRIM('T' from ename)from emp; REPLACE / TRANSLATE select ename, replace(ename, 'CO', '**'), TRANSLATE(ename, 'CO', '*5') from emp; 숫자 함수(ROUND, TRUNC, MOD, ABS, FLOOR, CEIL, SIGN, POWER(M, N) 2021. 4. 11.
[Oracle] 연결 연산자 - 컬럼 또는 문자를 다른 컬럼과 연결 특정문자 결합/추가 하기 select player_name, player_name || ' 선수' from player; 칼럼 결합하기 select ename, job, ename || '-' || job from emp; select ename, job, ename || '-' || job "이름-직업" from emp; 별칭 사용 시 " " 를 사용해아 하는경우 1) 특수문자가 있는경우 2) 숫자가 맨 앞에 있는경우 3) 대소문자를 구분하여 사용하는 경우 2021. 4. 10.
[Oracle] Case 문 테이블 조회 SELECT class_cd, student_no,student_nm, kor FROM tb_grade; CASE 문 SELECT CLASS_CD, STUDENT_NO, STUDENT_NM, KOR AS KOR_SCORE, CASE WHEN KOR >= 90 AND KOR = 80 AND KOR = 70 AND KOR = 60 AND KOR 2021. 4. 9.