What Is Hierarchyid Data Type in SQL?


Angela Bailey

The hierarchyid data type in SQL is a specialized data type that represents a hierarchical structure within a database. It is designed to efficiently store and manipulate hierarchical data, such as organizational charts, file systems, or product categories.

Benefits of Using Hierarchyid Data Type

The hierarchyid data type provides several advantages over traditional methods of representing hierarchical data in SQL:

  • Efficient Storage: Hierarchyid uses a variable-length binary encoding, resulting in efficient storage of the hierarchical structure.
  • Faster Query Performance: Hierarchyid allows for efficient querying and navigation of hierarchical data using various built-in functions.
  • Simplified Data Manipulation: Hierarchyid provides a set of useful methods for manipulating and traversing hierarchical data, making it easier to perform operations like inserting, deleting, or updating nodes.

Working with Hierarchyid Data Type

To work with hierarchyid data type, you need to understand its basic components:

  • Hierarchy Root: The root node represents the top-level item in the hierarchy. It is typically denoted by ‘/’ or an empty string.
  • Hierarchy Levels: Each level in the hierarchy is represented by an integer value.

    The root level is always 0, and subsequent levels increment by 1.

  • Hierarchy Paths: A path in hierarchyid represents the route from the root node to any given node. It consists of a series of level values separated by slashes (e.g., ‘/1/3/5’).

Create Table with Hierarchyid Column

To store hierarchical data, you need to create a table with a column of hierarchyid data type:

  EmployeeName VARCHAR(50),
  HierarchyNode hierarchyid

Inserting Data into Hierarchyid Column

You can insert data into the hierarchyid column using the GetRoot() method to specify the root node and the GetDescendant() method to generate child nodes:

-- Inserting root node
INSERT INTO Employees (EmployeeId, EmployeeName, HierarchyNode)
VALUES (1, 'John Doe', hierarchyid::GetRoot())

-- Inserting child nodes
INSERT INTO Employees (EmployeeId, EmployeeName, HierarchyNode)
SELECT 2, 'Jane Smith', hierarchyid::GetDescendant(hierarchyNode, NULL)
FROM Employees WHERE EmployeeName = 'John Doe'

Querying Hierarchical Data

You can use various built-in functions to query and manipulate hierarchical data. For example:

-- Get all employees under a specific node
FROM Employees
WHERE HierarchyNode.IsDescendantOf(hierarchyid::Parse('/1/')) = 1

-- Get the level of each employee in the hierarchy
SELECT EmployeeName, HierarchyNode.GetLevel() AS NodeLevel
FROM Employees


The hierarchyid data type in SQL provides an efficient and powerful way to store and manipulate hierarchical data. By using its specialized functions and methods, you can easily navigate through the hierarchy, perform various operations on nodes, and retrieve specific subsets of data.

If your database involves managing hierarchical structures, consider using the hierarchyid data type to enhance performance and simplify your data manipulation tasks.

Discord Server - Web Server - Private Server - DNS Server - Object-Oriented Programming - Scripting - Data Types - Data Structures

Privacy Policy