이번에는 그룹 함수 중에서도 전에 배운 집계 함수를 제외한 소계(총계) 함수, 그리고 윈도우 함수들에 대해 알아보겠습니다! 그룹 함수란?그룹 함수는 SQL에서 다양한 수준의 요약 데이터(합계, 평균 등)를 생성하는 데 사용되는 고급 함수입니다. 다음은 주요 그룹 함수 중에서도 소계 함수들에 대한 설명입니다. ✅ ROLLUP집계 데이터를 여러 레벨의 소계로 제공하여, 데이터의 계층적 구조를 보여줍니다. ROLLUP을 사용하면 최종 합계와 함께 각 단계의 소계를 쉽게 계산할 수 있습니다. 아래는 ROLLUP의 예시로, 컬럼1과 컬럼2를 기준으로 그룹화하고 각 그룹 및 서브 그룹의 합계와 전체 합계를 계산합니다.SELECT 컬럼1, 컬럼2, SUM(컬럼3)FROM 테이블GROUP BY ROLLUP(컬럼1, 컬..
이번에는 서브쿼리, 뷰, 집합 연산자에 대한 SQL 활용 부분을 알아보겠습니다! 서브쿼리란?서브쿼리는 SQL 문 내에서 다른 SQL 문을 포함하여 사용하는 기법으로, 데이터를 조회하거나 조작할 때 유용하게 사용됩니다.서브쿼리의 다양한 유형과 활용 방법에 대해 알아보겠습니다. ✅ 스칼라 서브쿼리스칼라 서브쿼리는 단일 행과 단일 컬럼을 반환하는 서브쿼리입니다.주로 SELECT 절에서 사용되며, 단일 값으로 처리됩니다.예를 들어, 특정 제품의 평균 가격보다 높은 가격의 제품을 찾을 때 스칼라 서브쿼리를 활용할 수 있습니다.SELECT product_name, priceFROM productsWHERE price > (SELECT AVG(price) FROM products); ✅ 인라인 뷰 인라인 뷰는 FRO..
앞선 글에서 나오지 않은 개념이나 헷갈리는 문제들을 정리하고 'SQL 기본' 챕터를 마무리하고자 합니다. ✅ SELECT 쿼리SELECT 쿼리는 논리적인 SELECT ALIAS - FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY 순서로 진행됩니다. ✅ ALIAS별도의 ALIAS가 지정되어 있지 않으면 컬럼명이 대문자로 출력됩니다. ✅ 산술 연산자나눗셈 연산을 진행할 때 0으로 나누어지는 경우에는 0으로 나눌 수 없다는 내용의 오류가 발생합니다. ✅ 문자열 데이터에서 주의할 점!CHAR 데이터 타입은 고정 길이를 가지고 있는 문자열 데이터입니다.만약 특정 컬럼의 데이터 타입이 CHAR(5)인데 컬럼값이 3인 경우, 나머지 2자리는 공백으로 채워 고정 길이를 유..
이번 글에서는 JOIN과 표준 JOIN에 대한 내용을 다뤄보며 SQL 기본 챕터를 마무리하도록 하겠습니다. 데이터 간의 연결이 필요하다면, JOIN!✅ JOIN이란?JOIN은 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 SQL 연산입니다.서로 관련 있는 데이터 항목들 사이의 관계를 기반으로 정보를 결합할 수 있습니다.일반적으로 JOIN은 PK와 FK 값의 연관성에 의해 성립됩니다.JOIN에는 다양한 유형이 있으며, 각각의 사용법과 목적이 다릅니다. ✅ EQUI JOINEQUI JOIN(동등 조인)은 두 테이블 간의 컬럼 값이 정확하게 일치할 때 컬럼을 결합하는 방법입니다.= 연산자만을 사용하여 JOIN 조건을 명시합니다. EQUI JOIN은 INNER JOIN의 일종으로, 두 테이블..
이번에는 WHERE 절, GROUP BY & HAVING 절, 그리고 ORDER BY 절에 대해 알아보겠습니다! 조건을 달고 싶다면, 무조건 WHERE 절!WHERE 절은 SQL 쿼리에서 특정 조건을 만족하는 행(row)을 선택하기 위해 사용됩니다. WHERE 절은 데이터를 필터링하여, 조건에 부합하는 데이터만을 결과로 반환합니다. 또한 다양한 연산자와 함께 사용되어, 보다 세밀한 데이터 검색과 분석을 가능하게 합니다. ✅ 비교 연산자 5가지! 비교 연산자는 두 값의 비교 결과에 따라 참(True) 또는 거짓(False)을 반환합니다. 기본적인 비교 연산자에는 =, >, , >=, 가 있습니다. 예를 들어, age > 18은 'age'가 18보다 클 경우 참을 반환합니다. ✅ 부정 비교 연산자 부정..
이번에는 관계형 데이터베이스(RDB), 그리고 SQL에 기본인 SELECT 문과 몇 가지 함수에 대해 알아보겠습니다! 관계형 데이터베이스란?✅ 데이터베이스는 뭐지? 데이터베이스는 체계화된 데이터의 모음입니다. 각 데이터베이스는 용도와 목적에 맞는 데이터들끼리 모여 저장됩니다.이를 통해 데이터를 쉽게 저장, 검색, 수정, 삭제할 수 있으며, 다양한 사용자와 응용 프로그램이 데이터를 효율적으로 관리하고 액세스할 수 있는 환경을 제공합니다. 데이터베이스 관리 시스템(DBMS)은 이러한 데이터베이스를 생성하고 관리하는 소프트웨어입니다. ✅ 그렇다면 관계형 데이터베이스는? 관계형 데이터베이스(RDB)는 데이터를 2차원의 표(table) 형태로 구조화하여 관리하는 데이터베이스의 한 종류입니다. 각 표는 행(row..
앞선 글에서 나오지 않은 개념이나 헷갈리는 문제들을 정리하고 '데이터 모델과 SQL' 챕터를 마무리하고자 합니다. 정규화 & 반정규화✅ 성능 데이터 모델링이란?성능 데이터 모델링은 데이터베이스 성능을 최적화하는 목적으로 데이터 모델을 설계하는 과정입니다.이 과정에서는 데이터베이스의 응답 시간을 개선하고, 시스템의 처리량을 최대화하기 위해 데이터 구조를 조정합니다.성능 데이터 모델링의 방법으로는 정규화, 반정규화, 테이블 통합, 테이블 분할 등이 있습니다. ✅ 성능 데이터 모델링의 순서는?데이터 모델에 맞게 정규화를 수행합니다.데이터베이스의 용량 및 트랜잭션 유형을 파악하여 성능 저하를 일으키는 부분이 없는지 검토합니다.용량과 트랜잭션 유형에 맞게 반정규화를 수행합니다.성능 향상을 위한 이력모델의 조정, ..
이번에는 데이터 모델을 정규화 및 반정규화하는 방법과, 트랜잭션, NULL에 대해서 알아보겠습니다! 정규화란?정규화는 데이터베이스 설계의 핵심 과정으로, 중복을 최소화하고 데이터의 정합성(데이터의 정확성과 일관성을 유지하고 보장)을 위해 데이터를 구조화하는 방법입니다. 정규화를 통해 데이터를 여러 엔티티로 분리하여, 각 엔티티가 그 목적에 맞게 데이터를 보다 효율적으로 저장하도록 합니다.일반적으로 정규화를 수행하면 데이터 처리 성능이 향상됩니다.이제 정규화의 주요 단계들을 하나씩 살펴보도록 하겠습니다. ✅ 제1정규형제1정규형은 엔티티의 모든 속성이 하나의 속성값(더 이상 분해할 수 없는 값)만을 포함하도록 구조화하는 것입니다. 즉, 각 속성에는 반복되는 그룹이나 배열이 없어야 하며, 각 인스턴스마다 유일..