packagek-kinzal/sql-faker

Grammar-based SQL generator for MySQL, PostgreSQL, and SQLite, with a FakerPHP provider

Depends on k-kinzal/bison-parser require-dev, k-kinzal/container require-dev, k-kinzal/lemon-parser require-dev, k-kinzal/bison-parser suggest, k-kinzal/lemon-parser suggest
External dependencies fakerphp/faker ^1.23

Namespaces§

SqlFaker\Compiler 2 classes
SqlFaker\Compiler\Bison 1 class
SqlFaker\Compiler\Lemon 1 class
SqlFaker\Compiler\Resource 2 classes
SqlFaker\Generation 1 class
SqlFaker\Generation\Candidate 9 classes
SqlFaker\Generation\Choice 4 classes
SqlFaker\Generation\Coverage 10 classes
SqlFaker\Generation\Derivation 13 classes
SqlFaker\Generation\Derivation\Completion 2 classes
SqlFaker\Generation\Exception 2 classes
SqlFaker\Generation\Lexeme 3 interfaces 8 classes
SqlFaker\Generation\Output 5 classes
SqlFaker\Generation\Plan 4 classes
SqlFaker\Generation\Plan\Compilation 4 classes
SqlFaker\Generation\Token 1 interface 5 classes
SqlFaker\Generation\Value 1 interface 9 classes
SqlFaker\Grammar\Model 1 interface 6 classes
SqlFaker\Grammar\Resource 2 classes
SqlFaker\MySql 1 class
SqlFaker\MySql\Generation 5 classes 1 enum
SqlFaker\MySql\Generation\Lexeme 10 classes
SqlFaker\MySql\Generation\Rewrite 15 classes
SqlFaker\MySql\Generation\Rewrite\Alter 1 class
SqlFaker\MySql\Generation\Rewrite\Column 2 classes
SqlFaker\MySql\Generation\Rewrite\Expression 4 classes
SqlFaker\MySql\Generation\Rewrite\Name 2 classes
SqlFaker\MySql\Generation\Rewrite\Option 1 class
SqlFaker\MySql\Generation\Rewrite\Partition 5 classes
SqlFaker\MySql\Generation\Rewrite\Query 4 classes
SqlFaker\MySql\Generation\Rewrite\Replication 2 classes
SqlFaker\MySql\Generation\Rewrite\Routine 3 classes
SqlFaker\MySql\Generation\Spacing 5 classes
SqlFaker\MySql\Generation\Tokenization 3 classes
SqlFaker\MySql\Generation\Value 5 classes
SqlFaker\MySql\Grammar 1 class
SqlFaker\PostgreSql 1 class
SqlFaker\PostgreSql\Generation 4 classes 1 enum
SqlFaker\PostgreSql\Generation\Lexeme 4 classes
SqlFaker\PostgreSql\Generation\Lookahead 1 class
SqlFaker\PostgreSql\Generation\Rewrite 13 classes
SqlFaker\PostgreSql\Generation\Rewrite\Column 4 classes
SqlFaker\PostgreSql\Generation\Rewrite\Expression 1 class
SqlFaker\PostgreSql\Generation\Rewrite\Name 7 classes
SqlFaker\PostgreSql\Generation\Rewrite\Option 1 class
SqlFaker\PostgreSql\Generation\Rewrite\Query 4 classes
SqlFaker\PostgreSql\Generation\Rewrite\Routine 8 classes
SqlFaker\PostgreSql\Generation\Tokenization 3 classes
SqlFaker\PostgreSql\Generation\Value 5 classes
SqlFaker\PostgreSql\Grammar 1 class
SqlFaker\Sqlite 1 class
SqlFaker\Sqlite\Generation 5 classes 1 enum
SqlFaker\Sqlite\Generation\Lexeme 5 classes
SqlFaker\Sqlite\Generation\Rewrite 11 classes
SqlFaker\Sqlite\Generation\Rewrite\Expression 1 class
SqlFaker\Sqlite\Generation\Tokenization 3 classes
SqlFaker\Sqlite\Generation\Value 3 classes
SqlFaker\Sqlite\Grammar 1 class

Documents 2§

SQL FakerREADME.md
SQL generation algorithmdocs/algorithm.md

README§

SQL Faker

Packagist Downloads PHP Version License: MIT Docs Ask DeepWiki

SQL Faker is a grammar-based SQL generator for MySQL, PostgreSQL, and SQLite. It derives random statements and SQL fragments from official grammar definitions and provides both a FakerPHP provider interface and a direct SqlGenerator interface. Generation plans let you select syntax and constrain its structure. Generated SQL does not require a database connection; its execution and semantic validity are subject to the algorithm's limitations.

Requirements

Support Syntax

The following grammar versions are bundled. Pass the version tag to select a grammar; omitting it uses the default for that database. Syntax availability depends on the selected version.

MySQL

VersionVersion tagDefault
5.6.51mysql-5.6.51
5.7.44mysql-5.7.44
8.0.44mysql-8.0.44
8.1.0mysql-8.1.0
8.2.0mysql-8.2.0
8.3.0mysql-8.3.0
8.4.7mysql-8.4.7Yes
9.0.1mysql-9.0.1
9.1.0mysql-9.1.0

PostgreSQL

VersionVersion tagDefault
16.6pg-16.6
17.2pg-17.2Yes

SQLite

VersionVersion tagDefault
3.47.2sqlite-3.47.2Yes

Installation

composer require --dev k-kinzal/sql-faker

Usage

use Faker\Factory;
use SqlFaker\MySql\MySqlProvider;

$faker = Factory::create();
$faker->addProvider(new MySqlProvider($faker));

$sql = $faker->sql(maxDepth: 6);
$select = $faker->selectStatement(maxDepth: 6);

License

MIT License. See LICENSE for details.