개발/KH국비지원과정

[KH국비지원 웹개발자 과정] Day_25 키워드 SQL그룹함수, 집합연산자, JOIN, GROUP BY 등

mabb 2022. 7. 15. 18:39
반응형

 안녕하세요. 삶의 질을 높이고자 노력하는 영차영차입니다.
드디어 국비지원 학원을 다니며 공부에 전념을 할 수 있게 되었습니다.
해당 포스팅은 강의 복기용으로 키워드를 기록하는 용도의 포스팅입니다.
--------------------------------------------------------------------------------------------------

-전일 실습 문제 리뷰

-워크북 실습문제 (주말 숙제)

- SQL 파일로 테이블 생성하는 것은 SQLPLUS가 빠르다. 해당 경로에서 @파일명.sql  // 디벨로퍼에서 하면 하루종일 걸림

공부할 키워드) IS PK , IS FK  // PrimaryKey  Foreign Key 

-그룹 함수

SQL가이드교재)
함수는 단일행함수와 다중행 함수로 구분
단일행함수는 각각 하나의 행에 대한 함수 수행의 결과가 여러 행으로 출력됨
다중행함수는 여러행을 가지고 함수 수행을 하고 하나의 행으로 출력됨
다중행 함수는 다시 집계함수, 그룹함수, 윈도우함수로 분류.

- SUM, AVG, COUNT, MAX, MIN  -> 한 칼럼 전체에 대해 계산하고 값을 하나의 행으로 출력해줌

-COUNT(*)로 컬럼명 생략가능, 단 NULL값도 카운팅됨.

-기준 컬럼의 값 별 집계를 하고자 할 때 -> GROUP BY절 , 2개 컬럼까지 그룹바이가 가능하다?
EX) 각 부서별 월급 평균, 서울시 각 자치구별 실거래가 평균

-그룹 함수의 결과에 조건을 줄 때는 HAVING절

-전체 테이블에 대해 조건을 줄 때는 WHERE절

- <> 는 != 과 같은 기능 (같지 않다)

-RDB로 데이터를 다루는 방법의 기본기는 다 비슷한 것 같다. 엑셀, 판다스, SQL등

-ROLLUP과 CUBE

SELECT 부서,직급, COUNT(*)
FROM EMP
GROUP BY 부서, 직급;  * ROLLUP, CUBE 사용가능 / 실제로는 잘 안쓴다고 함.

*
1) GROUP BY 부서, 직급  -> 부서별 직급별 인원수
2) GROUP BY RULLUP(부서,직급)  -> 부서별, 직급별 인원수 + 부서별 인원수
3) GROUP BY CUBE(부서,직급)  -> 부서별,직급별 인원수 + 부서별 인원수 + 직급별 인원수

 GROUPING
ROLLUP, CUBE와 함께 사용함. 컬럼에 출력된 값이 ROLLUP, CUBE에 대해 생성된 값인지 확인. GROUPING(DEPT_CODE) 은 1또는 0을 출력하여 CASE WHEN THEN 절로 칼럼 생성 가능.

-집합연산자
UNION, UNION ALL, INTERSECT, EXCEPT, MINUS
:예전에는 UNION 쿼리문등을 이용하여 정보를 빼오는 등 해킹에 악용하였다고 함. 하나의 쿼리문을 하나의 집합으로 생각하여 합집합, 교집합, 차집합과 같은 원리로 테이블을 생성하게됨. 두 개의 쿼리문을 집합연산자로 연결한다.
단, 두 쿼리문의 컬럼의 개수와 타입이 같아야 한다.

-JOIN
두 테이블을 연결하여 하나의 가상의 테이블을 만드는 것. 매개가 되는 컬럼을 기준으로 두 테이블을 연결하여 새로운 가상의 테이블을 만든다. 테이블을 3개이상 합치는 다중 조인도 있다.

셀렉트프롬조인웨어그룹바이해빙오더바이

-JOIN사용법
1) SQL 기본 사용법
FROM 테이블1
JOIN 테이블2 ON 테이블1.컬럼명 = 테이블2.컬럼명
* 두 테이블의 컬럼명이 같으면 JOIN 테이블2 USING(컬럼명)

2)오라클 사용법
FROM 테이블1,테이블2
WHERE 컬럼명 = 컬럼명

테이블 명을 명시할 때 테이블 명에도 별칭 사용이 가능하다. 테이블 명이 긴 경우
SELECT *
 FROM EMPLOYEE E
JOIN JOB J ON J.JOB_CODE = E.JOB_CODE;

모든지 기본기가 중요하다. 건너뛰고 더 어려운거를 배우기도 어렵고 이해하기도 어렵고.
강의의 최종 목표는 스프링으로 게시판만들기. 기본기를 갈고 닦자.

다중 JOIN 시 체인식으로 연결한다.
테이블1과 테이블 3의 컬럼을 이용하고자 하는데 두 테이블의 공통 컬럼이 없는 경우.
공통컬럼이 있는 테이블 2를 중간에 연결해줌.

 

반응형