목록콤퓨타 왕기초/SQLD/JDBC/Oracle DB (42)
파게로그
정보처리기사와 SQLD가 다들 쓸모없다고는 하지만, 자신이 배운 것을 한 번쯤 정리하는 기회를 갖게 된다는 점, 그리고 언젠가 필요하게 될지도 모르지만 당장 필요하지 않아 접하지 못했던 '구멍'을 메울 수 있다는 점에서 (특히 비전공자에게) 응시 자체가 나쁜 경험이라고 생각되지는 않는다. 정보처리기사에 이어 SQLD에도 도전하게 되었다. 공부 과정은, 책과 실습이 주를 이루긴 했다. 다만 실질적으로 가장 도움이 된 것은, 이번 kry 온라인 저지 프로젝트를 하며 SQL을 만져본 경험이다. 학교에서 DB 수업을 들으면서... '고양이 급식 서비스'...를 위한 ERD를 만들어보면서... 완전 헤맸던 기억이 있는데, 이론적 기반과 실습 경험이 둘 다 조금씩이나마 갖추어지니 약간은 더 감이 잡히는 느낌이었다...
ROWNUM SELECT ROWNUM, empno, ename, title, sal FROM emp WHERE ROWNUM
using pivot and unpivot docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/SELECT.html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__CHDFIIDD pivot_clause docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/SELECT.html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__GUID-3C9CD3C5-0A70-4A6F-A76C-309A6502A2C3 Pivot and Unpivot www.oracle.com/technical-resources/articles/database/sql-11g-p..
RANK, DENSE_RANK SELECT ename, title, sal, RANK() OVER (ORDER BY sal DESC) RANK, DENSE_RANK() OVER (ORDER BY sal DESC) DENSE_RANK FROM emp WHERE title IN ('RESEARCHER', 'COOPERATOR', 'ANALYST'); OVER 뒤에 출력하고 싶은 데이터를 정렬하는 문장을 넣으면, 그 column의 값에 대한 데이터의 순위가 출력된다. SELECT ename, title, sal, RANK() OVER (PARTITION BY title ORDER BY sal DESC) 순위 FROM emp; title별로 묶이고, 순위도 title 내에서 계산된다. title은 항상 오름차순..
집계함수(aggregate function)는 단일한 행이 아니라 여러 행에 기반하여 함수가 적용된 결과를 반환한다. 주로 GROUP BY와 함께 쓰이며, 이는 질의의 대상인 테이블의 행을 분할하거나, 뷰를 여러 그룹으로 나누는 키워드이다. 이러한 각각의 그룹에 대해서 하나씩의 결과 행을 반환한다. MAX SELECT MIN(sal) FROM emp WHERE title = 'COOPERATOR'; MIN SELECT title, MIN(sal) 최솟값 FROM emp GROUP BY title ORDER BY 최솟값 DESC; SELECT MIN(sal) FROM emp WHERE 1 = 2; 그룹 함수는 WHERE절의 조건이 거짓이어도, 즉 이를 만족하는 row가 하나도 없더라도, NULL 결과를 출..
DECODE SELECT ename, deptno, DECODE(deptno, 10, 300) 보너스 FROM emp; SELECT ename, deptno, DECODE(deptno, 10, 300, 20, 400, 30, 500, 0) 보너스 FROM emp; IF (deptno == 10) THEN RETURN 300 ELSE IF (deptno == 20) THEN RETURN 400 ELSE IF (deptno == 30) THEN RETURN 500 ELSE RETURN 0 CASE SELECT ename, title, sal, CASE WHEN sal >= 3000 THEN 500 WHEN sal >= 2000 THEN 300 WHEN sal >= 1000 THEN 200 ELSE 0 END..
SELECT ename, sal FROM emp WHERE sal = '3000'; 문자형과 숫자형 비교 시 숫자형으로 암시적 형 변환된다.
산술 연산자 NVL( ) SELECT sal, comm, sal + comm, sal + NVL(comm, 0) FROM emp; NVL(column명, 값)을 통해 NULL 데이터를 값으로 처리할 수 있다. 비교 연산자 BETWEEN ~ AND ~ SELECT ename, deptno, hiredate FROM emp WHERE hiredate BETWEEN '1991/03/01' AND '1991/10/01'; 날짜에도 사용할 수 있다. LIKE SELECT ename, deptno FROM emp WHERE ename LIKE '도%'; -- '도'로 시작하는 문자열 매치 SELECT ename, deptno FROM emp WHERE ename LIKE '%도%'; -- '도'가 들어간 문자열 매..