Computer Science/Database

[DB]데이터베이스 개념노트 23편 - PIVOT, UNPIVOT

데이터베이스 개념노트 23편 - PIVOT, UNPIVOT지난 글에서는 부모와 자식 관계를 가진 데이터를 트리 구조로 조회하는 계층형 질의 START WITH, CONNECT BY PRIOR에 대해 정리했습니다.이번 글에서는 SQLD 보강 주제로 자주 등장하는 PIVOT과 UNPIVOT에 대해 정리해 보겠습니다.PIVOT과 UNPIVOT은 데이터를 보고서 형태로 바꾸거나, 반대로 보고서처럼 넓게 퍼진 데이터를 다시 행 형태로 바꿀 때 사용합니다. 처음에는 문법이 낯설지만, 핵심은 간단합니다.PIVOT은 행을 열로 바꾸고, UNPIVOT은 열을 행으로 바꿉니다.1. PIVOT이란?PIVOT은 행으로 저장된 데이터를 열 형태로 변환하는 SQL 문법입니다.PIVOT은 특정 컬럼의 값을 새로운 컬럼으로 펼쳐서 ..

[DB] 데이터베이스 개념노트 22편 - 계층형 질의 START WITH, CONNECT BY PRIOR

데이터베이스 개념노트 22편 - 계층형 질의 START WITH, CONNECT BY PRIOR지난 글에서는 정렬 결과 중 상위 N개 데이터를 조회하는 Top N 쿼리, ROWNUM, FETCH FIRST에 대해 정리했습니다.이번 글에서는 SQLD에서 빠뜨리면 안 되는 Oracle SQL 핵심 문법인 계층형 질의에 대해 정리해 보겠습니다.계층형 질의는 조직도, 메뉴 구조, 카테고리 구조처럼 상위 데이터와 하위 데이터가 연결된 구조를 조회할 때 사용합니다. SQLD에서는 START WITH, CONNECT BY PRIOR, LEVEL, ORDER SIBLINGS BY 같은 키워드를 잘 이해해야 합니다.1. 계층형 질의란?계층형 질의는 부모와 자식 관계를 가진 데이터를 계층 구조로 조회하는 SQL입니다.계층..

[DB] 데이터베이스 개념노트 21편 - Top N 쿼리, ROWNUM, FETCH FIRST

데이터베이스 개념노트 21편 - Top N 쿼리, ROWNUM, FETCH FIRST지난 글에서는 행을 유지한 상태에서 순위와 누적값을 계산하는 윈도우 함수(Window Function)에 대해 정리했습니다.이번 글에서는 SQLD에서 빠뜨리면 아쉬운 핵심 주제인 Top N 쿼리, ROWNUM, FETCH FIRST에 대해 정리해 보겠습니다.Top N 쿼리는 말 그대로 상위 N개 또는 하위 N개의 데이터를 조회하는 SQL입니다. 예를 들어 주문금액 상위 3건, 최근 가입 회원 10명, 매출 상위 5개 상품을 조회할 때 사용합니다.1. Top N 쿼리란?Top N 쿼리는 정렬된 결과 중에서 상위 N개 또는 하위 N개의 행만 조회하는 SQL입니다.Top N 쿼리는 특정 기준으로 정렬한 뒤, 그중 상위 또는 하..

[DB] 데이터베이스 개념노트 20편 - 윈도우 함수(Window Function)

데이터베이스 개념노트 20편 - 윈도우 함수(Window Function)지난 글에서는 여러 SELECT 결과를 합치거나 비교하는 집합 연산자 UNION, UNION ALL, INTERSECT, MINUS에 대해 정리했습니다.이번 글에서는 SQLD에서 자주 등장하는 심화 SQL 개념인 윈도우 함수(Window Function)에 대해 정리해 보겠습니다.윈도우 함수는 행들을 특정 기준으로 나누고 정렬한 뒤, 각 행을 유지한 상태에서 순위, 누적합, 이전 값, 다음 값 등을 계산할 수 있는 함수입니다. 처음 보면 어렵게 느껴질 수 있지만, 핵심은 GROUP BY처럼 행을 줄이지 않고, 각 행마다 분석 결과를 붙여주는 함수라고 이해하면 됩니다.1. 윈도우 함수란?윈도우 함수(Window Function)는 행..

[DB] 데이터베이스 개념노트 19편 - 집합 연산자 UNION, UNION ALL, INTERSECT, MINUS

데이터베이스 개념노트 19편 - 집합 연산자 UNION, UNION ALL, INTERSECT, MINUS지난 글에서는 SQL문 안에 또 다른 SELECT문을 사용하는 서브쿼리(Subquery)에 대해 정리했습니다.이번 글에서는 여러 SELECT문의 결과를 하나로 합치거나, 공통된 결과를 찾거나, 한쪽에만 있는 데이터를 찾을 때 사용하는 집합 연산자(Set Operator)에 대해 정리해 보겠습니다.SQLD에서는 UNION, UNION ALL, INTERSECT, MINUS의 차이를 자주 묻습니다. 특히 중복 제거 여부, 컬럼 개수와 데이터 타입 조건, ORDER BY 사용 위치를 꼭 기억해야 합니다.1. 집합 연산자란?집합 연산자는 두 개 이상의 SELECT 결과를 하나의 결과로 결합하는 SQL 연산자..

[DB] 데이터베이스 개념노트 18편 - 서브쿼리(Subquery)

데이터베이스 개념노트 18편 - 서브쿼리(Subquery)지난 글에서는 SELECT문을 가상 테이블처럼 사용할 수 있게 해주는 뷰(View)에 대해 정리했습니다.이번 글에서는 SQLD에서 자주 출제되는 핵심 개념인 서브쿼리(Subquery)에 대해 정리해 보겠습니다.서브쿼리는 하나의 SQL문 안에 포함된 또 다른 SELECT문입니다. 복잡한 조건을 만들거나, 다른 조회 결과를 기준으로 데이터를 조회할 때 자주 사용됩니다.1. 서브쿼리란?서브쿼리(Subquery)는 SQL문 안에 포함된 또 다른 SELECT문입니다.서브쿼리는 하나의 SQL문 내부에서 사용되는 SELECT문으로, 메인쿼리의 조건이나 조회 대상에 활용된다.서브쿼리는 보통 괄호 안에 작성합니다.SELECT 컬럼명FROM 테이블명WHERE 컬럼명..

[DB]데이터베이스 개념노트 17편 - 뷰(View)

데이터베이스 개념노트 17편 - 뷰(View)지난 글에서는 데이터를 빠르게 검색하기 위한 데이터베이스 객체인 인덱스(Index)에 대해 정리했습니다.이번 글에서는 SELECT문을 더 편리하고 안전하게 사용할 수 있도록 도와주는 뷰(View)에 대해 정리해 보겠습니다.뷰는 실제 테이블처럼 조회할 수 있지만, 일반적으로 데이터를 직접 저장하지는 않습니다. 복잡한 SELECT문을 하나의 가상 테이블처럼 사용할 수 있게 해주는 데이터베이스 객체입니다.1. 뷰란?뷰(View)는 하나 이상의 테이블을 기반으로 만든 가상의 테이블입니다.뷰는 SELECT문을 저장해두고, 사용자가 테이블처럼 조회할 수 있게 만든 데이터베이스 객체이다.뷰는 실제 데이터를 직접 저장하는 테이블과 다릅니다. 일반적인 뷰는 데이터를 저장하지 ..

[DB] 데이터베이스 개념노트 16편 - 인덱스(Index)

데이터베이스 개념노트 16편 - 인덱스(Index)지난 글에서는 데이터베이스 작업의 안정성을 보장하는 트랜잭션과 ACID에 대해 정리했습니다.이번 글에서는 SQL 성능에서 매우 중요한 개념인 인덱스(Index)에 대해 정리해 보겠습니다.인덱스는 데이터를 더 빠르게 찾기 위해 사용하는 데이터베이스 객체입니다. SQLD에서도 인덱스의 개념, 장단점, 생성 기준, 주의사항은 자주 등장하므로 반드시 이해해 두는 것이 좋습니다.1. 인덱스란?인덱스(Index)는 테이블에서 원하는 데이터를 빠르게 찾기 위해 사용하는 객체입니다.인덱스는 테이블의 데이터를 빠르게 검색하기 위해 특정 컬럼을 기준으로 만들어 둔 검색 구조이다.책의 목차나 색인을 생각하면 이해하기 쉽습니다. 책에서 원하는 내용을 찾을 때 처음부터 끝까지 ..