SQL(24)
-
셀프 조인 Self Join
같은 테이블을 조인하는 것을 의미한다. 셀프 조인은 테이블 내에 여러 개의 컬럼들이 연관 관계가 있는 경우 사용한다. # 셀프 조인에서 두개 이상의 동일한 테이블을 이용해서 조인이 이루어지는데 동일 테이블 각각의 역할이 다르다는 사실이 매우 중요하다. SELECT A.컬럼, B.컬럼 FROM A, B WHERE A. = B.; ⇒ FROM 절에서 테이블의 별칭이 필요함 Self Join : LEFT OUTER JOIN SELECT ~ FROM A LEFT OUTER JOIN B ON A.컬럼 = B.컬럼; SELECT ~ FROM A, B WHERE A.컬럼 = B.컬럼 (+); Self Join : RIGHT OUTER JOIN SELECT ~ FROM A RIGHT OUTER JOIN B ON A.컬..
2022.03.10 -
조인 JOIN
하나의 테이블에 조회하길 원하는 모든 데이터가 있는 경우는 드물다. 보통 회사 서버에 내가 원하는 정보는 여러 테이블에 나눠서 존재하기 때문에 테이블을 결합하여 조회할 필요성이 있다. 조인이란? 두 개 이상의 테이블에 있는 컬럼의 값을 테이블 간의 관계(relationship)을 이용해서 가져오기 위해 사용하는 것이다. 조건식에 따른 분류 등가 조인 (Equal join) 두 개의 테이블 간에 일치하는 것을 조인한다. ⇒ 교집합을 만드는 것 비등가 조인 (Non equal join) 두 개의 테이블 간에 조인하는 경우 = 조건을 사용하지 않고 >, 등의 비 등가 부호를 사용하는 조인이다. CROSS JOIN 조건 없이 2개의 테이블을 하나로 조인하는 것이다. 카테시안 곱(Cartesian Product)..
2022.03.09 -
윈도우 함수 WINDOW FUNCTION
개별 데이터들에 대한 연산 결과를 출력해주는 분석 함수(Analytical Funcion)를 윈도우 함수라고 한다. ⇒ 행과 행의 관계를 정의해주는 함수, 온라인 실시간 분석 함수 WINDOW 함수 문법 SELECT WINDOW함수 OVER (, , ) FROM ; 행분할 : PARTITION BY 행정렬 : ORDER BY 대상 행 지정 : WINDOWING # PARTITION BY, ORDER BY 모두 생략 가능하다 PARTITION BY 생략 시, 파티션을 지정하지 않고 전체 행에 대해서 윈도우 함수의 처리가 이루어진다. ORDER BY 생략 시, 테이블 내의 정보 저장 순서 또는 인덱스 조회 순서에 따라서 윈도우 함수 처리가 이루어진다. 이 때, 처리 값의 범위는 파티션 내 전체이므로 파티션 ..
2022.03.09 -
그룹 함수 GROUP FUNCTION
그룹 함수를 이용하여 하나의 SQL 구문으로 테이블을 한번만 읽고 빠르게 결산 개념의 결과를 가져올 수 있다. 전체 집계 및 소계를 한 번에 구하는 GROUP BY절에 사용하는 그룹 함수가 있다. GROUP BY 절에 사용하는 그룹 함수 ROLLUP : 합계와 소계를 한꺼번에 구하는 함수이다. CUBE : 입방체를 의미하며 GROUP BY에 부여된 집약 키를 가능한 모든 조합으로 섞어서 하나의 결과에 포함시키는 함수이다. GROUPING SETS : 불필요한 개별 행들을 제외하고 항목에 대한 소계를 계산하는 함수이다. GROUPING SETS 각 컬럼의 소계만 구한다. GROUP BY GROUPING SETS(A) ⇒ 컬럼A 소계 # 인수가 한 개인 경우 GROUP BY A와 같은 결과이다. GROUP ..
2022.03.09 -
HAVING
GROUP BY로 묶인 각 그룹들 중에서 실제 가져올 그룹을 선택할 조건을 HAVING절에 작성한다. # GROUP BY 조건은 HAVING을 사용하고 WHERE절에 조건문을 사용하게 되면 GROUP BY 대상에 반영되지 않는다. GROUP BY 없이 HAVING이 사용된 경우 테이블 전체가 하나의 그룹이 되는 경우, GROUP BY절을 사용할 필요 없이 HAVING만을 사용할 수도 있다. SELECT COUNT(*) FROM WHERE COUNT(*) > 1; ⇒ Error # 집계함수는 GROUP BY 연산이므로 WHERE절에 나올 수 없다. SELECT COUNT(*) FROM HAVING COUNT(*) > 1; ⇒ 테이블 전체가 하나의 그룹이므로 조건을 HAVING으로 받는다. HAVING에 S..
2022.03.08 -
GROUP BY
GROUP BY절은 데이터들을 원하는 그룹으로 나눌 수 있다. ⇒ GROUP BY NULL을 포함한 컬럼에 대해 GROUP BY을 하면 NULL에 대해서도 그룹화를 한다. ⇒ NULL에 대해 연산을 하지 않는 집계함수와는 다른 점이다. GROUP BY NULL or (); ⇒ 그룹화를 하지 않은 것과 같은 의미다. GROUP BY에 두 개 이상의 컬럼을 작성하는 경우 ⇒ 행을 그룹화 할 때 GROUP BY절에 입력한 컬럼들의 값을 조합으로 그룹화가 이루어진다. SELECT FROM GROUP BY , ;
2022.03.08