전체 글 247

TOP-N 쿼리

TOP-N 쿼리란?TOP-N 쿼리는 SQL에서 상위 N개 행을 추출하는 방법을 말한다.특정 기준으로 가장 높은 값이나 가장 낮은 값을 가진 데이터를 일정 개수만 조회할 때 사용하는 방식이다.예시)점수가 가장 높은 학생 상위 3명, 매출이 가장 높은 상품 5개ROWNUMROWNUM은 Oracle 데이터베이스에서 조회 결과에 대해 임시로 부여되는 순차 번호다.조회된 행의 순서대로 1부터 번호가 매겨지며, 이 값은 테이블에 실제로 저장된 컬럼이 아니라 조회 시점에만 만들어지는 가상 컬럼이다.대표적인 가상 컬럼 예시로 ROWNUM, ROWID, LEVEL 등이 있다예시)SELECT ROWNUM, STUDENT_ID, NAME, SCOREFROM STUDENT_SCORE;결과에는 조회된 순서대로 1, 2, 3....

윈도우 함수

1. 윈도우 함수란윈도우 함수는 테이블의 행을 유지한 상태에서 순위, 누적합, 이전값·다음값 같은 값을 계산하는 함수다.GROUP BY처럼 여러 행을 하나로 줄여버리는 함수가 아니라, 원본 행을 그대로 남겨두면서 각 행 옆에 계산 결과를 추가하는 함수라고 볼수 있다윈도우 함수의 큰 분류로는 순위 함수, 그룹 내 집계 함수, 그룹 내 행 순서 함수, 그룹 내 비율 함수로 정리할수 있다2. 윈도우 함수 기본 문법윈도우 함수는 반드시 OVER()와 함께 사용해야 한다.함수 옆에 OVER()가 없다면 윈도우 함수가 아니다. OVER() 안에는 다음 요소가 들어갈 수 있다.WINDOW_FUNCTION() OVER ([PARTITION BY 컬럼][ORDER BY 컬럼][WINDOWING 절])PARTITION B..

그룹 함수

그룹 함수란?여러 행을 하나의 집합으로 보고 요약 결과를 만들어내는 함수다대표적으로 ROLLUP, CUBE, GROUPING SETS가 있다. 이 함수들을 사용하면 여러 번의 GROUP BY 결과를 한 번에 표현할 수 있다.그룹 함수가 필요한 이유소계와 총계를 같이 보고 싶을 때 쿼리를 단순화할 수 있기 때문이다.예를 들어 지역별 매출 합계를 구하는 쿼리와 전체 매출 합계를 구하는 쿼리를 각각 작성할 수도 있다. 하지만 이런 방식은 집계 기준이 많아질수록 쿼리가 길어지고 번거로워진다.그래서 ROLLUP, CUBE, GROUPING SETS를 사용하면 여러 단계의 집계 결과를 한 번에 만들 수 있다. 따라서 그룹 함수는 단순히 합계를 구하는 기능이 아닌 다양한 집계 수준을 한 번에 보여주기 위한 도구다RO..

집합연산자

집합 연산자란?집합 연산자는 여러 SQL 쿼리 결과를 하나의 집합처럼 보고, 그 결과들을 결합하는 연산자다.합집합은 UNION, 중복을 허용한 합집합은 UNION ALL, 교집합은 INTERSECT, 차집합은 MINUS로 표현한다.SQL Server에서는 MINUS 대신 EXCEPT를 사용한다. 따라서 집합 연산자는 각각의 SELECT 결과를 세로 방향으로 붙이고, 지정한 연산 방식에 따라 하나의 결과로 합치는 기능이라고 보면 된다.조인과 집합연산자의 차이조인은 두 테이블의 데이터를 가로 방향으로 붙이는 개념이고, 집합 연산자는 여러 결과를 세로 방향으로 합치는 개념이다UNION과 UNION ALLUNIONUNION은 여러 결과를 합친 뒤 중복을 제거해서 반환하는 연산자다.예시)한국 지사 직원과 미국 지..

Spring IoC 컨테이너란?

Spring IoC 컨테이너란?객체 생성,의존성 주입,생명주기 관리를 개발자 대신 수행하는 Spring의 핵심엔진입니다 전통적인 객체 생성 방식과 어떤 차이가 있는지?전통적인 방식에서는 개발자가 직접 new로 객체를 생성하고 의존성을 연결했습니다IoC 방식에서는 컨테이너가 @Component,@Service 같은 어노테이션을 스캔해서 Bean을 자동생성하고 필요한곳에 주입합니다 이것이 제어의 역전입니다제어의 역전 → 무엇이 역전되는가?loc(Inversion of Control,제어의 역전)는 프로그램의 제어흐름을 개발자에서 프레임워크로 넘기는 설계원칙이다 전통적 방식 → 내 코드가 라이브러리를 호출IoC 방식 → 프레임워크가 내 코드를 호출제어가 역전 되는 3가지항목 전통적 방식IoC 방식객체생성new..

SQL 표준 조인 정리

INNER JOIN이란?INNER JOIN은 두 테이블 사이의 조인 조건에 일치하는 행만 반환하는 조인 방식이다.두 테이블에 공통으로 존재하는 데이터만 결과에 포함되고, 조건에 맞지 않는 데이터는 제외된다. 쉽게 말하면 교집합만 가져오는 조인이라고 생각하면된다예시) 회원 테이블에 A0001,A0002,A0003이 있고 회원 연락처 테이블에 A0001, A0002, A0004가 있을때 두테이블에 모두 존재하는 정보 구하기SELECT A.회원ID , A.이름 , B.연락처FROM 회원 A , 회원연락처 BWHERE A.회원ID = B.회원ID;회원ID 기준으로 INNER JOIN하면 두 테이블에 모두 존재하는 A0001, A0002만 결과에 포함된다. A0003은 연락처 정보가 없어서 빠지..

JOIN

조인이란?조인(JOIN)은 두 개 이상의 테이블에 흩어져 있는 데이터를 한 번에 조회할 수 있게 해주는 기능이다. SQL에서는 꼭 이해하고 넘어가야 하는 핵심 개념 중 하나다. 실무에서는 필요한 정보가 여러 테이블에 나뉘어 저장되어 있는 경우가 많기 때문에, 결국 원하는 결과를 얻으려면 조인을 사용할 수밖에 없다.조인을 배우기 전에 알아야 할 것보통은 테이블 하나만 지정해서 조회한다SELECT *FROM STUDENT;FROM절에 테이블을 여러 개 나열하기SELECT *FROM STUDENT, MAJOR;이경우 SQL은 두 테이블의 가능한 모든 조합을 먼저 만든다 따라서 한쪽 테이블의 각 행과 다른 테이블의 각 행을 전부 붙여보는 방식으로 결과를 만든다FROM절에서 테이블을 여러개 사용하려면 서로 어떤..

ORDER BY절

✔️ ORDER BY란?ORDER BY는 조회된 결과를 특정 컬럼 기준으로 정렬할 때 사용하는 문법이다 SQL 실행 순서상 가장 마지막에 실행되며, SELECT로 뽑아낸 결과를 다시 원하는 기준으로 재배치하는 역할을 한다✔️ ORDER BY 실행 순서ORDER BY는 FROM, WHERE, GROUP BY, HAVING, SELECT가 끝난 뒤 마지막에 실행된다.그래서 ORDER BY는 “데이터를 찾는 문법”이라기보다 “조회된 결과를 보기 좋게 정리하는 문법”이라고 생각하면 편하다✔️ 기본 정렬 방식ORDER BY 뒤에는 정렬 기준이 되는 컬럼을 적는다이때 ASC는 오름차순, DESC는 내림차순을 의미한다 그리고 ASC는 생략 가능하며, 생략하면 기본값으로 오름차순이 적용된다예시)SELECT MOVIE_..

GROUP BY, HAVING절

✔️ GROUP BY란GROUP BY는 특정 컬럼을 기준으로 데이터를 그룹화하고, 합계, 평균, 개수 같은 집계 결과를 구할 때 사용하는 문법이다. 쉽게 말하면 여러 행을 어떤 기준으로 묶어서 하나의 요약 결과로 바꿔주는 역할이다✔️ GROUP BY 실행 흐름GROUP BY는 SQL 작성 순서만 보면 뒤에 나오지만, 실제 실행 순서에서는 FROM, WHERE 다음에 실행되고 SELECT보다 먼저 처리된다. 따라서 먼저 테이블을 정하고, 필요하면 WHERE로 조건을 걸러낸 다음 같은 값끼리 그룹을 만들어서 마지막에 SELECT로 보여줄 결과를 정한다그래서 GROUP BY를 이해할 때는 “행을 먼저 묶고, 그다음 집계 결과를 보여준다”는 순서로 생각하는 게 편하다✔️ GROUP BY 기본 예시예시) 수강생..

WHERE절

✔️ WHERE절이란?WHERE절은 테이블에서 내가 원하는 행만 조건에 맞게 걸러서 조회할 수 있게 해주는 SQL 문법이다.SELECT, FROM과 함께 자주 사용되고, 실무에서도 정말 많이 쓰이는 기본 문법이다. 결국 전체 데이터를 다 보는 게 아니라, 필요한 데이터만 골라서 가져오기 위해 사용하는 절이라고 보면 된다.✔️ WHERE절이 필요한 이유WHERE절이 필요한 이유는 불필요한 데이터를 줄이고, 원하는 결과만 빠르게 조회하기 위해서다.예를 들어 유저 정보가 100만 건 있는 테이블에서 특정 한 사람의 정보만 찾고 싶다면, WHERE 없이 전체를 다 보는 방식은 비효율적이다. 반면 WHERE를 사용하면 조건에 맞는 데이터만 바로 추출할 수 있다✔️ SQL 실행 순서와 WHERE절SQL은 작성 순서..