스키마 설계 및 데이터 구조스키마 설계와 데이터 구조는 데이터베이스의 목적과 사용 방식에 따라 효율적인 구조를 설계하는 과정입니다. 일반적으로 Star Schema, Snowflake Schema와 같은 구조는 데이터 웨어하우스나 분석용 데이터베이스에서 사용되며, OLTP와 OLAP는 각기 다른 데이터 처리 방식에 특화된 시스템입니다.Star Schema와 Snowflake SchemaStar Schema와 Snowflake Schema는 주로 데이터 분석을 위한 데이터베이스 구조에 사용됩니다. 이 두 구조는 분석 성능과 저장 공간 효율성을 중점적으로 고려하여 설계됩니다.1) Star Schema개념: 중심에 사실 테이블(Fact Table)을 두고, 주변에 차원 테이블(Dimension Table)을 ..
정규표현식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..
서브쿼리 문법서브쿼리란?서브쿼리는 메인 쿼리(Main Query) 안에 포함된 서브쿼리(또는 내부 쿼리라고도 함)입니다.SQL문의 내부에 DBMS가 제공하는 다양한 함수를 넣을 수 있는 것과 마찬가지로 함수가 들어갈 수 있는 위치에는 그 위치에 맞는 결과를 반환하는 또 다른 독립적인 SQL문을 서브쿼리라고 합니다.서브쿼리는 메인쿼리의 칼럼 사용 여부에 따라 연관 서브쿼리와 비연관 서브쿼리로 나뉩니다.연관(Correlated) 서브쿼리: 메인쿼리 칼럼을 서브쿼리에서 사용.비연관(Un-Correlated) 서브쿼리: 메인쿼리의 칼럼을 서브쿼리에서 사용하지 않음.서브쿼리는 메인 쿼리의 조건으로 사용되거나, 메인 쿼리에 필요한 값을 제공합니다.괄호 ( ) 안에 작성되며, 일반적으로 SELECT문을 포함합니다.서..