본문 바로가기

dev

window 함수 WINDOW FUNCTION행과 행 사이의 관계를 쉽게 정의할 수 있다.다른 함수와는 달리 중첩하여 사용할 수 없다.(단, 서브쿼리에는 사용 가능)OVER 문이 필수로 사용된다. (쓸거 없으면 OVER() 이라도 써야한다.)SELECT 윈도우함수명(매개변수)OVER ([PARTITION BY] [ORDER BY] [WINDOWING])FROM 테이블명 ex)SELECT JOB, ENAME, SAL,RANK() OVER (PARTITION BY JOB ORDER BY SAL DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) JOB_RANKFROM EMP;- PARTITION BY 절 : 전체 집합을 특정 칼럼을 기준으로 소그룹으로 나눈다.- W..
그룹 함수 ROLLUP, GROUPING SETS, CUBE 1. ROLLUPGROUP BY된 칼럼에 대해 소계를 만들어 준다. (컬럼별 집계 + 전체 집계, 즉 컬럼 N개면 N+1개 결과) 칼럼 순서에 따라 결과가 다르게 나온다(순서 중요)하나의 칼럼을 기준으로 GROUP BY 된 경우 : 해당 컬럼을 기준으로 집계 + 전체 집계두 개 이상의 칼럼을 기준으로 GROUP BY된 경우 : 각 컬럼을 기준으로 집계 + 전체 집계예시1) 하나의 칼럼을 기준으로 GROUP BY된 경우SELECT DEPTNO, JOB, SUM(SAL)FROM EMPGROUP BY ROLLUP(DEPTNO); 예시2) 두개의 칼럼을 기준으로 GROUP BY된 경우SELECT DEPTNO, JOB, SUM(SAL)FROM EMPGROUP BY..
SQL 표준 함수 SQL 표준 함수 1. 집계 함수(AGGREGATE FUNCTION)GROUP AGGREGATE FUNCTION이라고도 부르며, GROUP FUNCTION의 한 부분으로 분류할 수 있음COUNT, SUM, AVG, MAX, MIN 등이 있다.2. 그룹 함수집계 함수를 제외한 나머지 함수ROLLUP, CUBE, GROUPING SETS 이 있다.ROLLUP : 소그룹 간의 소계 계산CUBE : GROUP BY된 항목들 간에 다차원적 집계를 생성GROUPING BY: 원하는 부분의 소계만 손쉽게 추출3. 윈도우 함수분석 함수(ANALYTIC FUNCTION) 또는 순위 함수(RANK FUNCTION)으로 부르기도 한다.
서브쿼리 subquery메인 쿼리 내부에 사용되는 SELECT 문을 말한다.인라인 뷰, 스칼라 서브쿼리, 서브쿼리로 나눌 수 있다.인라인 뷰 : FROM 절에서 뷰처럼 사용되는 SELECT 문이다. FROM절에 임시 테이블 공간을 생성하며, 뷰와 비슷한 형태다.스칼라 서브쿼리 : SELECT 절에서 함수처럼 사용되는 SELECT 문이다. 반환값은 한개여야 한다(함수이므로)서브쿼리 : WHERE 절에서 조건으로 사용되는 SELECT 문이다.[tip] 서브 쿼리를 이용할 때는 반드시 괄호()를 쓴다! 1. 인라인 뷰FROM 절에 테이블이 바로 오는 것이 아니라, SELECT 절이 오는 방식 SELECT 로 추출된 뷰가 FROM절에 오는 것으로 볼 수 있다.MSSQL에서는 인라인 뷰를 사용할 때 인라인 뷰에 대한 앨리..
Join Equi join / Non-equi join 1. Equality condition(=) join=을 사용해 일치하는 값을 조회한다.[tip] hash join은 Equi join만 사용 가능하다.SELECT * FROM EMP, DEPTWHERE EMP.DEPTNO = DEPT.DEPTNOAND EMP.ENAME LIKE '임%'ORDER BY ENAME;2. Non-Equi join>, =, 중복되지 않는 튜플 합치기 과정으로 수행되기 때문에 정렬이 발생한다.SELECT DEPTNO FROM EMPUNIONSELECT DEPTNO FROM EMP 2. 교집합 : INTERSECT 연산SELECT 연산의 결과를 교집합한다.SELECT DEPTNO FROM EMP INTERSECTSELECT DEPTN..
Java 진영의 persistent framework persistent framework persistent layer(data access layer)를 다루는 프레임워크를 persistent framework 라고 한다.persistent framework는 다음 두 가지로 분류할 수 있다. 1. SQL MapperObject의 필드와 SQL 문을 매핑SQL 문을 이용해 직접 데이터베이스를 조작MyBatis2. ORMObject 필드와 데이터를 매핑코드를 통해 데이터를 조작 가능(ORM 프레임워크가 쿼리를 자동 생성)persistent API라고 할 수 있음JPA, Hibernate(JPA를 구현)Java 진영의 persistent framework 1. JDBC(Java database connectivity)Java에서 DB접근을 할 수 있도록 하..
파일 업다운로드 기본설정, 멀티파트 미디어 타입 1. 멀티파트 미디어 타입 POST 방식의 전송은 POST body에 데이터를 포함시켜 전송한다. 이 때, 다음 두 가지 방식을 사용할 수 있다.application/x-www-form-urlencoded : 일반 파라미터만 전송 가능multipart/form-data : 파일 전송 가능multipart 미디어 타입은 단일 body에 다중 resource로 설계된 타입이다.이미지에서 볼 수 있듯 하나의 body에 여러 컨텐츠가 포함되며 각 컨텐츠는 boundary로 구분된다.특히 마지막 boundary의 끝에는 --가 붙어 body의 끝을 알린다. (이는 모두 HTTP 통신 규격에 따른다.)만약 데이터의 크기가 패킷 크기보다 크다면(1500byte), 여러 패킷으로 쪼개져서 전송된다. 2. spring ..
로깅, SLF4J 1. SLF4J로깅 패사드로깅에 대한 추상화된 인터페이스를 제공해준다.즉, SLF4J를 사용하면 로깅 라이브러리에 대한 의존성을 제거해준다.(손쉬운 모듈 교체 가능) 2. spring에서 SLF4J 사용하기 1) spring 기본 로깅 모듈 제거spring은 기본적으로 common-logging을 사용이를 제거하고 slf4를 추가org.springframeworkspring-context${spring.version}commons-logging commons-logging 2) jcl-over-slf4 추가commons-logging을 대체하는 SLF4J 라이브러리추가하지 않으면 spring은 commons-logging을 찾지 못했다는 오류를 발생시킨다. org.slf4jjcl-over-slf4j1.7..