SQL/MSSQL
[MSSQL] GetReparentedValue 사용 방법 및 예시
`GetReparentedValue` 함수는 SQL Server의 계층적 데이터를 다룰 때 사용되는 함수 중 하나입니다. 이 함수는 계층적 데이터의 노드를 다른 부모 노드로 이동할 때 사용됩니다. 주어진 노드와 새로운 부모 노드의 `HierarchyID` 값을 기반으로 이동된 노드의 새로운 `HierarchyID` 값을 반환합니다. 이 함수는 다음과 같은 구문으로 사용됩니다: GetReparentedValue ( parent_hierarchyid :: hierarchyid , old_root_hierarchyid :: hierarchyid , new_root_hierarchyid :: hierarchyid ) 여기서: - `parent_hierarchyid`는 이동할 노드의 `HierarchyID` 값입..
[MSSQL] IsDescendantOf 사용 방법 및 예시
SQL Server의 `IsDescendantOf` 함수는 계층적인 데이터를 다룰 때 사용되는 함수 중 하나입니다. 이 함수는 두 개의 계층적인 값 사이의 부모-자식 관계를 확인합니다. 보통 이 함수는 `HierarchyID` 데이터 형식과 함께 사용됩니다. `IsDescendantOf` 함수의 사용법은 다음과 같습니다: IsDescendantOf ( parent_hierarchyid :: hierarchyid , child_hierarchyid :: hierarchyid ) 여기서: - `parent_hierarchyid`는 부모 노드를 나타내는 `HierarchyID` 값입니다. - `child_hierarchyid`는 자식 노드를 나타내는 `HierarchyID` 값입니다. 이 함수는 두 `Hier..
[MSSQL] GetRoot 사용 방법 및 예시
MSSQL에서 GetRoot 함수는 계층 구조 데이터에서 특정 노드의 최상위 부모(루트)를 찾는 데 사용됩니다. 이 함수는 주어진 노드의 상위 부모를 재귀적으로 탐색하여 최상위 부모를 반환합니다. 일반적으로 GetRoot 함수는 계층 구조적인 데이터를 처리하거나 쿼리할 때 사용됩니다. 특히 부모-자식 관계를 가진 테이블이나 CTE(공통 테이블 표현식)를 사용하여 구성된 데이터에서 사용됩니다. 간단한 예시로 조직도를 가정해보겠습니다. 다음은 조직도를 나타내는 Employees 테이블이라고 가정합니다. EmployeeID | EmployeeName | ManagerID -------------------------------------- 1 | John | NULL 2 | Alice | 1 3 | Bob |..
[MSSQL] GetLevel 사용 방법 및 예시
MSSQL에서 GetLevel은 계층 구조 데이터를 처리할 때 사용되는 유용한 함수 중 하나입니다. 이 함수는 특정 레코드가 계층 구조에서 어느 수준(level)에 있는지를 결정하는 데 사용됩니다. 보통 이 함수는 계층적 데이터 모델(예: 조직도, 부서 구조, 트리 구조 등)를 쿼리하고 처리할 때 사용됩니다. 일반적으로 GetLevel 함수는 Common Table Expressions (CTE) 또는 재귀 쿼리와 함께 사용됩니다. CTE를 사용하여 계층적 데이터를 구성하고 GetLevel 함수를 이용하여 각 노드의 수준을 결정할 수 있습니다. 간단한 예시로 조직도를 가정해보겠습니다. 다음은 조직도를 나타내는 Employees 테이블이라고 가정합니다. EmployeeID | EmployeeName | M..
[MSSQL] GetDescendant 사용 방법 및 예시
`GetDescendant()` 함수는 `hierarchyid` 데이터 형식에서 사용되며, 두 개의 `hierarchyid` 값 사이에 새로운 하위 노드의 `hierarchyid` 값을 생성하는 데 사용됩니다. 이 함수는 계층 구조 데이터에서 새로운 하위 노드를 추가할 때 유용합니다. `GetDescendant()` 함수는 다음과 같은 구문을 가집니다: hierarchyid.GetDescendant(child1, child2) 여기서: - `hierarchyid`는 계층 구조 데이터 유형의 변수 또는 열을 나타냅니다. - `child1`은 새로운 자식 노드의 이전 자식 노드 또는 NULL을 나타내며, 새로운 자식 노드를 자식1 위치에 추가합니다. - `child2`는 새로운 자식 노드의 이후 자식 노드 ..
[MSSQL] GetAncestor 사용 방법 및 예시
`GetAncestor()` 함수는 `hierarchyid` 데이터 형식에서 사용되며, 지정된 노드의 조상 노드를 반환하는 데 사용됩니다. 이 함수는 특정 노드의 상위 레벨 노드를 가져오는 데 유용합니다. `GetAncestor()` 함수는 다음과 같은 구문을 가집니다: hierarchyid.GetAncestor(n) 여기서: - `hierarchyid`는 계층 구조 데이터 유형의 변수 또는 열을 나타냅니다. - `n`은 노드의 상위 레벨을 지정하는 정수입니다. 1은 부모 노드를, 2는 부모의 부모 노드를 나타냅니다. 예를 들어, 다음은 `EmployeeHierarchy` 테이블에서 각 직원의 부서 관리자(Manager)를 찾는 쿼리입니다. SELECT EmployeeID, EmployeeName, Hi..
[MSSQL] hierarchyid 메서드 사용 방법 및 예시
MS SQL Server에서 `hierarchyid` 데이터 형식은 계층 구조 데이터를 저장하고 검색하는 데 사용됩니다. 이 데이터 형식은 트리 구조를 표현하고 부모-자식 관계를 나타냅니다. `hierarchyid`는 계층 구조 데이터를 효율적으로 저장하고 쿼리하는 데 특히 유용합니다. `hierarchyid` 데이터 형식은 다음과 같은 특징을 가집니다: 1. 고유한 식별자: 각 노드에는 계층 구조 내에서 고유한 식별자가 할당됩니다. 2. 트리 구조: 각 노드는 부모 노드와 자식 노드를 나타내는 계층 구조적인 관계를 가집니다. 3. 경로 정보: `hierarchyid` 값은 루트 노드에서 특정 노드까지의 경로를 나타냅니다. 4. 계층적 연산: `hierarchyid` 값 사이에서 계층적인 연산을 수행할 ..
[MSSQL] smalldatetime 사용 방법 및 예시
MS SQL Server에서 `smalldatetime` 데이터 유형은 날짜와 시간 정보를 저장하는 데 사용됩니다. 그러나 `datetime`보다 작은 범위의 날짜와 시간 값을 저장합니다. `smalldatetime`는 날짜 범위가 1900년 1월 1일부터 2079년 6월 6일까지이며, 시간은 00:00부터 23:59:59까지의 범위를 가집니다. 이 데이터 유형은 보다 간단한 날짜와 시간 값을 저장할 때 유용합니다. `smalldatetime` 데이터 유형은 다음과 같은 구조를 가지고 있습니다: YYYY-MM-DD hh:mm:ss 여기서: - `YYYY-MM-DD`는 연, 월, 일을 나타냅니다. - `hh:mm:ss`는 시간을 나타냅니다. 예를 들어, '2024-04-09 14:30:00'는 2024년 ..
[MSSQL] datetimeoffset 사용 방법 및 예시
MS SQL Server에서 `datetimeoffset` 데이터 유형은 날짜와 시간 정보에 대한 오프셋(시간대)을 포함하는 데이터를 저장하는 데 사용됩니다. 이 데이터 유형은 `datetime` 데이터 유형과 유사하지만, 특정 시간대에 상대적인 날짜와 시간 값을 포함합니다. 이는 국제 표준인 ISO 8601 형식을 따르며, 시간대 정보는 시간 오프셋으로 저장됩니다. `datetimeoffset` 데이터 유형은 다음과 같은 구조를 가지고 있습니다: YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm] 여기서: - `YYYY-MM-DD hh:mm:ss[.nnnnnnn]`는 날짜와 시간 값을 나타냅니다. 이 부분은 `datetime`과 동일합니다. - `[{+|-}hh:mm]`는 오프..
[MSSQL]DATE, DATETIME, TIME 날짜 시간 데이터 형식
Transact-SQL에서는 날짜와 시간을 다루는 여러 가지 데이터 유형을 제공합니다. 그 중 가장 일반적인 것은 `DATE`, `DATETIME`, `DATETIME2`, `TIME` 등이 있습니다. 각각의 데이터 유형은 특정한 유형의 날짜 또는 시간 정보를 저장하는 데 사용됩니다. 1. DATE: DATE 데이터 유형은 연, 월, 일을 표현하는 데 사용됩니다. 즉, 년, 월, 일의 값만 저장됩니다. 예를 들어, '2024-04-09'와 같은 형식으로 저장됩니다. DECLARE @myDate DATE = '2024-04-09'; 2. DATETIME: DATETIME은 날짜와 시간을 모두 포함하는 데이터 유형입니다. 이는 연, 월, 일, 시간, 분, 초까지의 값을 저장할 수 있습니다. 예를 들어, '2..