packagek-kinzal/sql-faker

Faker Provider for generating syntactically valid SQL statements

External dependencies fakerphp/faker ^1.23

Architecture layers§

Layers and allowed dependencies from deptrac.yaml. Layers without an arrow are dependency-free by rule.

Namespaces§

SqlFaker 3 classes
SqlFaker\Compiler 2 classes
SqlFaker\Compiler\Bison 5 classes
SqlFaker\Compiler\Bison\Ast 1 interface 13 classes 1 enum
SqlFaker\Compiler\Bison\Directive 1 interface 10 classes
SqlFaker\Compiler\Bison\Lexer 1 interface 13 classes 1 enum
SqlFaker\Compiler\Bison\Rule 3 classes
SqlFaker\Compiler\Lemon 7 classes
SqlFaker\Compiler\Resource 2 classes
SqlFaker\Generation 1 class
SqlFaker\Generation\Candidate 9 classes
SqlFaker\Generation\Choice 3 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 2 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\Generation 4 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 3 classes
SqlFaker\MySql\Generation\Rewrite\Replication 2 classes
SqlFaker\MySql\Generation\Rewrite\Routine 2 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\Generation 3 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\Provider 1 class
SqlFaker\Sqlite\Generation 4 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 6§

README§

SQL Faker

License: MIT Docs PHP Version 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
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\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.