Table of Contents

Querying Data

Velocity provides a comprehensive, fluent API for querying databases across all supported platforms. This section covers everything from basic queries to advanced patterns like joins and subqueries.

Learning Path

The querying documentation is organized from basic to advanced:

Foundation

  1. Retrieve vs Search - Choose the right query execution method
  2. Basic Queries - SELECT, FROM, column selection, and aliases

Filtering and Sorting

  1. Filtering - WHERE clauses, operators, and complex conditions
  2. Sorting - ORDER BY single and multiple columns

Advanced Features

  1. Expressions - Calculated fields, arithmetic, and string operations
  2. Grouping and Aggregation - GROUP BY, aggregate functions, and HAVING
  3. Joins - INNER, LEFT, RIGHT, FULL OUTER, CROSS, and multi-table joins
  4. Subqueries - Subqueries in SELECT, FROM, WHERE, GROUP BY, HAVING, INSERT, and UPDATE

Data Binding

  1. Binding Results - Map query results to C# objects

Optimization

  1. Performance - Query optimization and best practices
  1. Full-Text Searching - Using Full-Text Search and ranking

Quick Start

Here's a complete example using the fluent API:

using YndigoBlue.Velocity;
using YndigoBlue.Velocity.Model;
using YndigoBlue.Velocity.Enums;

// Get database schema and table
Schema schema = manager.LoadSchema("your_database");
Table users = schema["users"];

// Build query using fluent syntax
Query query = new Query()
    .Select([users["user_id"], users["username"], users["email"]])
    .From(users)
    .Where(new Criterion<bool>(users["is_active"], true))
    .OrderBy(users["username"]);

// Execute and process results
using (Manager manager = new Manager(connection))
using (ResultSet results = manager.Retrieve(query))
{
    foreach (Result row in results)
    {
        int id = row.GetFieldInteger("user_id");
        string username = row.GetFieldString("username");
        string email = row.GetFieldString("email");

        Console.WriteLine($"{id}: {username} ({email})");
    }
}

See Also