- equi : A,B 테이블에 둘다 존재해서 등가로 join이 가능한 경우 - non equi : A,B 테이블에 둘다 존재해서 등가로 join이 가능한 경우 - from 절의 Join 형태 1. inner join 2. natural join 3. using 조건절 4. on 조건절 5. cross join 6. outer join 1. inner join : default join : join 조건에서 동일한 값이 있는 행만 반환 : cross join, outer join과 같이 사용 할 수 없다. 2. natural join : inner join의 하위 개념 : 두 테이블간의 join 조건에서 동일한 이름을 갖는 모든 칼럼들에 대해 equi join을 수행함 : join이 되는 테이블의 데이터..
scalar subquery 쿼리 내장된 또다른 쿼리 블록을 서브쿼리라고 하는데, 그 중에서 함수처럼 한 레코드 당 정확히 하나의 값 만을 리턴하는 서브 쿼리를 'scalar subquery' 라고 한다. scalar subquery는 주로 select-list에서 사용되지만 몇가지 예외사항을 뺀다면 칼럼이 올 수 있는 대부분 위치에서 사용 가능하다. 아래 쿼리는 위치가 'CHICAGO' 인 부서만 대상으로 급여 수준을 집계 사원(emp) 테이블 전체를 다 읽어야 하는 비효율이 있다. select d.deptno, d.dname, avg_sal, min_sal, max_sal from dept d right outer join (select deptno, avg(sal) avg_sal, min(sal) ..
* 인덱스 스캔 방식 1. index range scan : INDEX (RANGE SCAN) : 인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 후에 리프 블록을 필요한 범위만 스캔하는 방식이다. : B-tree 인덱스의 일반적, 정상적 형태의 엑세스 방식 2. index full scan : INDEX (FULL SCAN) : 수직적 탐색 없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식 : 검색을 위한 최적의 인덱스가 없을 때 차선으로 선택된다. ex. 연봉이 5000만원 이상인 사원 -> 극히 일부면 table full scan보다 index full scan 해도 됨 ex. 연봉이 1000만원 이상인 사원 -> 굉장히 많기 때문에 거의 모든 레코드에 닿으면 index ful..
1. 순위 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER 2. 그룹내 집계 관련 함수 : SUM, MAX, MIN, AVG, COUNT 3. 행 순서 관련 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD 4. 그룹내 비율 관련 함수 : CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT 5. 선형분석을 포함한 통계 분석관련 함수 : ...(생략)......... 통계에 특화된 내용임 1. 순위 : 순위를 매겨줌. rank 순위를매겨줌. 차이점 : 1등이 두명이면 그다음은 3위로 표시 dense_rank 순위를매겨줌 차이점 : 1등이 두명이여도 그다음은 2위로 표시 ROW_NUMBER 순위를매겨줌 차이점 : 1등이 두명이여도 ro..
grouping sets를 통해 더욱 다양한 소계 집합을 만들 수 있다. 문장을 여러번 반복하지 않아도 원하는 결과를 쉽게 얻을 수 있게 되었다. 그룹함수 종류가 여러가지라 상황에 따라 잘 사용 할 것. 다음 포스팅을 참고 2021.03.29 - [Sql] - 그룹 함수-rollup, rollup orderby, grouping 그룹 함수-rollup, rollup orderby, grouping GROUP BY로 그룹핑한 로우들의 갯수나, 합계 등을 구해주는 기능이있다. oracle에서는 ROLLUP인데 mysql에서는WITH ROLLUP을 사용한다. 1. oracle select count(*) 'total empl', sum(SAL) 'total sal' from EMP,.. pakker.tisto..
rollup은 총 갯수, 총 합계 등만 가능했지만, cube는 결합 가능한 모든 값에 대하여 다차원 집계를 생성한다. 간단한 합계는 rollup을 사용하며, 다차원, 복합 합계는 cube를 사용한다. cube는 다차원, 복합합계를 지원하므로 자원을 더 쓸테니까 필요에 따라 사용하면 된다. rollup은 여기를 참고 2021.03.29 - [Sql] - 그룹 함수-rollup, rollup orderby, grouping 그룹 함수-rollup, rollup orderby, grouping GROUP BY로 그룹핑한 로우들의 갯수나, 합계 등을 구해주는 기능이있다. oracle에서는 ROLLUP인데 mysql에서는WITH ROLLUP을 사용한다. 1. oracle select count(*) 'total ..
GROUP BY로 그룹핑한 로우들의 갯수나, 합계 등을 구해주는 기능이있다. oracle에서는 ROLLUP인데 mysql에서는WITH ROLLUP을 사용한다. 1. oracle select count(*) 'total empl', sum(SAL) 'total sal' from EMP, DEPT where DEPT.DEPTNO = EMP.DEPTNO group by rollup (DNAME, JOB) -----> rollup 사용 2. mysql SELECT COUNT(IDX),IDX,WRITER,CONTENTS FROM TB_BOARD_COMMON_BJS GROUP BY WRITER WITH ROLLUP --> rollup 사용 가장 중요한 것은 SELECT 절에 집계함수를 사용 해야 한다. 그래야 결과..
1. 다중 행 서브쿼리 서브쿼리의 결과가 2건 이상 반환 될 수 있다면 반드시 다중 행 비교 연산자와 함께 사용 해야 한다. 그렇지 않으면 sql 문은 오류를 반환한다. 연산자 내 용 IN (서브쿼리) 서브쿼리의 결과에 존재하는 임의의 값과 동일한 조건을 의미 (multiple or 조건) 비교연산자 ALL (서브쿼리) 서브쿼리의 결과에 존재하는 모든 값을 만족하는 조건을 의미한다. 비교 연산자로 ">"를 사용 했다면 메인 쿼리는 서브쿼리의 모든 결과 값을 만족 해야 하므로, 서브쿼리 겨로가의 최대값보다 큰 모든 건이 조건을 만족한다. 비교연산자 ANY (서브쿼리) 서브쿼리의 결과에 존재하는 어느 하나의 값이라도 만족하는 조건을 의미한다. 비교 연산자로 ">"를 사용 했다면 메인 쿼리는 서브쿼리의 값들 ..
juneyr.dev/reactive-programming Reactive Programming 101 : 리액티브 프로그래밍이 뭔가요 그날이 왔다. 여러가지 api 콜을 합쳐서 다시 하나의 응답으로 만들어 내보내주는 코드를 보는데, 이해를 전혀 못하겠는 때가.. 그래서 이번주는 Reactive Programming 101이다. 처음에 구현체로 내가 마 juneyr.dev 자세히 나와있다 먼저 읽자 차단되지 않는 백 프레셔를 갖는 비동기 스트림 처리의 표준을 제공하는 것이 목적이다. Publisher(발행자), Subscriber(구독자), Subscription(구독), Processor(프로세서) 4가지의 인터페이스로 요약한다. Publisher는 하나의 Subscription당 하나의 Subscrib..
보호되어 있는 글입니다.