스키마 설계 및 데이터 구조스키마 설계와 데이터 구조는 데이터베이스의 목적과 사용 방식에 따라 효율적인 구조를 설계하는 과정입니다. 일반적으로 Star Schema, Snowflake Schema와 같은 구조는 데이터 웨어하우스나 분석용 데이터베이스에서 사용되며, OLTP와 OLAP는 각기 다른 데이터 처리 방식에 특화된 시스템입니다.Star Schema와 Snowflake SchemaStar Schema와 Snowflake Schema는 주로 데이터 분석을 위한 데이터베이스 구조에 사용됩니다. 이 두 구조는 분석 성능과 저장 공간 효율성을 중점적으로 고려하여 설계됩니다.1) Star Schema개념: 중심에 사실 테이블(Fact Table)을 두고, 주변에 차원 테이블(Dimension Table)을 ..
데이터 모델링 기초 이해데이터베이스 기본 개념데이터베이스(Database):데이터를 조직적으로 저장하고 관리하는 시스템입니다. 다양한 애플리케이션에서 데이터를 효율적으로 접근하고 조작할 수 있도록 구조화되어 있습니다.데이터베이스는 대량의 데이터를 안전하게 저장하고, 빠르게 접근하여 필요한 정보를 제공하는 데 중요한 역할을 합니다.테이블(Table):테이블은 데이터베이스의 기본 구성 요소로, 행(Row)과 열(Column)로 구성된다.각 행은 데이터의 개별 레코드(예: 한 명의 고객)를 나타내며, 각 열은 특정 속성(예: 고객 이름, 전화번호 등)을 나타냅니다.예시: 고객 테이블에서는 각 행이 고객 한 명의 정보를 포함하고, 열은 고객의 이름, 주소, 전화번호 등을 저장합니다.RDBMS(관계형 데이터베이스..
정규표현식SQL에서 정규표현식(Regular Expression, RegEx)은 문자열 데이터를 처리하거나 특정 패턴을 검색, 매칭, 치환하는 데 유용한 기능입니다. SQL의 정규표현식은 데이터베이스 엔진에 따라 지원 방식과 기능이 조금씩 다릅니다.SQL에서 정규표현식을 지원하는 주요 함수REGEXP_LIKE(): 특정 패턴과 일치하는지 확인.REGEXP_REPLACE(): 특정 패턴을 찾아 치환.REGEXP_SUBSTR(): 특정 패턴과 일치하는 하위 문자열 반환.REGEXP(): WHERE 절에서 패턴 매칭 (MySQL 8.0 이전).주요 정규표현식 함수1) REGEXP_LIKE()문자열이 특정 정규표현식 패턴과 일치하는지 확인합니다.SELECT column_nameFROM table_nameWHER..
PIVOT과 UNPIVOT은 SQL에서 데이터 형식을 변환하거나 재구성하는 데 사용되는 구문입니다. 이 구문은 데이터를 분석할 때 가독성과 효율성을 높이기 위해 열과 행을 변환하는 데 매우 유용합니다.PIVOTPIVOT은 행 데이터를 열로 변환하여 데이터를 요약하고 구조를 재구성할 때 사용됩니다.기본 구문SELECT *FROM table_namePIVOT ( aggregate_function(value_column) FOR pivot_column IN (value1, value2, value3, ...)) AS pivot_table;aggregate_function: 데이터를 요약하는 집계 함수 (예: SUM, AVG, COUNT 등).pivot_column: 행 데이터를 열로 변환할 기준이 ..
SQL에서는 데이터의 계층적 구조나 자기 참조 관계를 처리하기 위해 계층형 질의와 셀프 조인을 자주 사용합니다. 두 기법은 상위-하위 관계를 다루거나 같은 테이블 내에서 행 간의 관계를 정의하는 데 유용합니다.계층형 질의(Hierarchical Query)계층형 질의는 부모-자식 관계와 같은 계층 구조 데이터를 조회할 때 사용됩니다. 데이터의 상위-하위 관계를 표현하고 탐색하기 위해 주로 재귀적 CTE(MySQL)나 CONNECT BY(오라클)를 사용합니다.계층형 질의의 구성 요소와 키워드부모-자식 관계:데이터의 상위 계층과 하위 계층이 명확히 정의된 구조.예: 직원-관리자 관계, 부서-상위 부서 관계.재귀적 CTE:MySQL 8.0 이상에서 지원.WITH RECURSIVE와 UNION ALL을 사용해 ..
Top N 쿼리Top N 쿼리는 SQL에서 데이터의 상위 N개를 조회할 때 사용되며, 순위 기반 조회에 자주 활용됩니다. SQL에서 이러한 쿼리를 작성하는 데 사용되는 함수로는 ROWNUM과 윈도우 함수의 순위 함수인 RANK, DENSE_RANK, ROW_NUMBER가 있습니다.ROWNUMROWNUM은 각 행에 고유한 순번을 부여하여, 특정 조건을 만족하는 상위 N개의 데이터를 조회할 때 사용합니다. 단, 오라클에서만 사용 가능한 함수입니다. ROWNUM은 쿼리가 실행되는 순서에 따라 행에 번호를 부여하므로, 일반적인 ORDER BY와 함께 사용할 경우 원하는 대로 동작하지 않을 수 있습니다. 기본 구문:SELECT column1, column2, ...FROM table_nameWHERE ROWNUM..
그룹함수SQL에서 ROLLUP, CUBE, GROUPING SETS는 데이터 집계를 확장하여 다양한 차원의 집계 결과를 한 번에 계산할 수 있는 기능입니다. 이를 통해 다차원 분석을 할 때 많은 쿼리를 줄일 수 있어 데이터 요약과 분석에 유용합니다.ROLLUPROLLUP은 GROUP BY와 함께 사용하여 계층적 집계 결과를 계산하는 데 유용합니다.(GROUP BY절에 들어가는 칼럼을 대상으로 하위 그룹피을 수행하는 함수)지정한 열 순서대로 부분 합계를 계산하고, 마지막에 전체 합계를 추가해줍니다.SELECT column1, column2, SUM(column3) AS totalFROM table_nameGROUP BY column1, column2 WITH ROLLUP; 예시:SELECT departme..
집합연산자SQL에서 집합 연산자(Set Operators)는 두 개 이상의 쿼리 결과를 결합하여 하나의 결과 집합으로 표시할 때 사용됩니다.(두 테이블에 대한 집합 연산(합집합, 교집합 등)을 수행하는 연산자)MySQL에서는 주로 UNION, UNION ALL, INTERSECT, EXCEPT(또는 MINUS) 연산자를 통해 이러한 작업을 수행할 수 있습니다.특정한 기준키 없이 두 테이블의 레코드들에 대해서 합집합과 교집합 연산을 수행하므로 두 테이블의 칼럼 구성, 스키마가 동일해야 합니다.UNIONUNION 연산자는 두 쿼리의 결과 집합을 결합하면서 중복된 데이터를 제거합니다. 결과에는 중복되지 않는 고유한 행만 표시됩니다.UNION을 실행하면, 한쪽 테이블 내에서의 중복까지 제거가 됩니다.SELECT..