Skip to content

MySQL Query Builder API

Ilya edited this page Nov 4, 2024 · 1 revision

MySQL Query Builder API Reference

Constructor

const queryBuilder = new QueryBuilder();

Query Methods

SELECT Queries

select(...fields: string[]): QueryBuilder

Creates a SELECT query

  • Parameters: fields to select
  • Returns: this for chaining

INSERT Queries

insert(table: string): QueryBuilder
values(data: object): QueryBuilder

Creates an INSERT query

  • Parameters:
    • table: table name
    • data: object with data to insert
  • Returns: this for chaining

UPDATE Queries

update(table: string): QueryBuilder
set(data: object): QueryBuilder

Creates an UPDATE query

  • Parameters:
    • table: table name
    • data: object with data to update
  • Returns: this for chaining

DELETE Queries

delete(): QueryBuilder

Creates a DELETE query

  • Returns: this for chaining

Conditions and Filtering

where()

where(field: string, operator: string, value: any): QueryBuilder

Adds WHERE condition

  • Parameters:
    • field: field name
    • operator: comparison operator
    • value: value to compare
  • Returns: this for chaining

andWhere()

andWhere(field: string, operator: string, value: any): QueryBuilder

Adds AND WHERE condition

  • Throws: MySQLSyntaxError if no previous WHERE exists

orWhere()

orWhere(field: string, operator: string, value: any): QueryBuilder

Adds OR WHERE condition

Sorting and Grouping

orderBy()

orderBy(field: string, direction: 'ASC'|'DESC'): QueryBuilder

Adds ORDER BY clause

groupBy()

groupBy(field: string): QueryBuilder

Adds GROUP BY clause

Limitations

limit()

limit(limit: number): QueryBuilder

Limits number of records

offset()

offset(offset: number): QueryBuilder

Sets query offset

Table Joins

join()

join(table: string, condition: string): QueryBuilder

Adds INNER JOIN

leftJoin()

leftJoin(table: string, condition: string): QueryBuilder

Adds LEFT JOIN

Query Building

build()

build(): {
    prepared: string,
    unprepared: string,
    params: any[]
}

Builds final query

  • Returns:
    • prepared: prepared statement with parameters
    • unprepared: raw SQL query with values
    • params: array of parameters

Usage Example

const query = new QueryBuilder()
    .select('id', 'name')
    .from('users')
    .where('age', '>', 18)
    .andWhere('status', '=', 'active')
    .orderBy('name', 'DESC')
    .limit(10)
    .build();

console.log(query.prepared);   // SELECT id, name FROM users WHERE age > ? AND status = ? ORDER BY name DESC LIMIT ?
console.log(query.unprepared); // SELECT id, name FROM users WHERE age > 18 AND status = 'active' ORDER BY name DESC LIMIT 10
console.log(query.params);     // [18, 'active', 10]