All Projects → c9s → Sqlbuilder

c9s / Sqlbuilder

Licence: other
A powerful, fast, cross-platform SQL Builder for PHP. Convert your structured data into SQL queries with a fluent style interface and targeting on all the mainstream database (MySQL, PostgreSQL, SQLite)

Projects that are alternatives of or similar to Sqlbuilder

Jooq
jOOQ is the best way to write SQL in Java
Stars: ✭ 4,695 (+3483.97%)
Mutual labels:  sql-query, database, mysql
Querybuilder
SQL query builder, written in c#, helps you build complex queries easily, supports SqlServer, MySql, PostgreSql, Oracle, Sqlite and Firebird
Stars: ✭ 2,111 (+1511.45%)
Mutual labels:  sql-query, database, mysql
Pecee Pixie
Lightweight, easy-to-use querybuilder for PHP inspired by Laravel Eloquent - but with less overhead.
Stars: ✭ 19 (-85.5%)
Mutual labels:  database, mysql, pgsql
Jet
Type safe SQL builder with code generation and automatic query result data mapping
Stars: ✭ 373 (+184.73%)
Mutual labels:  sql-query, database, mysql
Maghead
The fastest pure PHP database framework with a powerful static code generator, supports horizontal scale up, designed for PHP7
Stars: ✭ 483 (+268.7%)
Mutual labels:  database, mysql, pgsql
Blog
Everything about database,business.(Most for PostgreSQL).
Stars: ✭ 6,330 (+4732.06%)
Mutual labels:  database, mysql, pgsql
Goqu
SQL builder and query library for golang
Stars: ✭ 984 (+651.15%)
Mutual labels:  sql-query, database, mysql
Goose
A database migration tool. Supports SQL migrations and Go functions.
Stars: ✭ 2,112 (+1512.21%)
Mutual labels:  database, mysql
Next
Directus is a real-time API and App dashboard for managing SQL database content. 🐰
Stars: ✭ 111 (-15.27%)
Mutual labels:  database, mysql
Db Tutorial
💾 db-tutorial 是一个数据库教程。
Stars: ✭ 128 (-2.29%)
Mutual labels:  database, mysql
Bitnami Docker Mysql
Bitnami MySQL Docker Image
Stars: ✭ 116 (-11.45%)
Mutual labels:  database, mysql
Slightphp
SlightPHP 高效的PHP敏捷开发框架
Stars: ✭ 110 (-16.03%)
Mutual labels:  database, mysql
Ship Hold
data access framework for Postgresql on nodejs
Stars: ✭ 110 (-16.03%)
Mutual labels:  sql-query, database
Griffon Vm
Griffon Data Science Virtual Machine
Stars: ✭ 128 (-2.29%)
Mutual labels:  database, mysql
Online Shopping System
demo
Stars: ✭ 110 (-16.03%)
Mutual labels:  database, mysql
Datax
DataX is an open source universal ETL tool that support Cassandra, ClickHouse, DBF, Hive, InfluxDB, Kudu, MySQL, Oracle, Presto(Trino), PostgreSQL, SQL Server
Stars: ✭ 116 (-11.45%)
Mutual labels:  database, mysql
Tableqa
AI Tool for querying natural language on tabular data.
Stars: ✭ 109 (-16.79%)
Mutual labels:  sql-query, database
Spring Boot 2 Oauth2 Authorization Jwt
Spring Boot 2 OAuth2 JWT Authorization server implementation with Database for Users and Clients (JPA, Hibernate, MySQL)
Stars: ✭ 115 (-12.21%)
Mutual labels:  database, mysql
Alpine Mariadb
MariaDB running on Alpine Linux [Docker]
Stars: ✭ 117 (-10.69%)
Mutual labels:  database, mysql
Myblog
python写的博客,支持3种数据库,现在挂在evilbinary.org
Stars: ✭ 121 (-7.63%)
Mutual labels:  database, mysql

SQLBuilder for PHP

Build Status Coverage Status Latest Stable Version Total Downloads Monthly Downloads Latest Unstable Version License

If you're looking for something that is not an ORM but can generate SQL for you, you just found the right one.

SQLBuilder is not an ORM (Object relational mapping) system, but a toolset that helps you generate cross-platform SQL queries in PHP.

SQLBuilder is a stand-alone library, you can simply install it through composer or just require them (the class files) with your autoloader, and it has no dependencies.

Features

  • Simple API, easy to remember.
  • Fast & Powerful.
  • Custom parameter marker support:
    • Question-mark parameter marker.
    • Named parameter marker.
  • Configurable quote handler.
  • Zero dependency.

Synopsis

Here is a short example of using Universal SelectQuery

use SQLBuilder\ArgumentArray;
use SQLBuilder\Universal\Query\SelectQuery;
use SQLBuilder\Driver\MySQLDriver;
use SQLBuilder\Driver\PgSQLDriver;
use SQLBuilder\Driver\SQLiteDriver;

$mysql = new MySQLDriver;
$args = new ArgumentArray;

$query = new SelectQuery;
$query->select(array('id', 'name', 'phone', 'address','confirmed'))
    ->from('users', 'u')
    ->partitions('u1', 'u2', 'u3')
    ->where()
        ->is('confirmed', true)
        ->in('id', [1,2,3])
    ;
$query
    ->join('posts')
        ->as('p')
        ->on('p.user_id = u.id')
    ;
$query
    ->orderBy('rand()')
    ->orderBy('id', 'DESC')
    ;

$sql = $query->toSql($mysql, $args);

var_dump($sql);
var_dump($args);

A More Detailed Description

Unlike other SQL utilities, SQLBuilder let you define the quote style and the parameter marker type. there are 2 parameter marker type you can choose:

  1. Question mark parameter marker (?)
  2. Named parameter. (:id, :name, :address, :p1)

The above two are supported by PDO directly, and the first one is also supported by mysqli, pgsql extension.

The API is dead simple, easy to remember, you can just define one query, then pass different query driver to the query object to get a different SQL string for your targettting platform.

It also supports cross-platform query generation, there are three types of query (currently): Universal, MySQL, PgSQL. The Universal queries are cross-platform, you can use them to create a cross-platform PHP API of your database system, and the supported platforms are: MySQL, PgSQL and SQLite.

Universql Queries:

  • CreateDatabaseQuery
  • DropDatabaseQuery
  • SelectQuery
  • InsertQuery
  • UpdateQuery
  • DeleteQuery
  • UnionQuery
  • CreateIndexQuery
  • DropIndexQuery

To see the implementation details, you can check the source code inside Universal namespace: https://github.com/c9s/SQLBuilder/tree/master/SQLBuilder/Universal/Query

MySQL Queries:

  • CreateUserQuery
  • DropUserQuery
  • GrantQuery
  • SetPasswordQuery

For MySQL platform, the implementation is according to the specification of MySQL 5.6.

For PostgreSQL platform, the implementation is according to the specification of PostgreSQL 9.2.

Installation

Install through Composer

composer require corneltek/sqlbuilder

Getting Started

Documentation

Development

composer install

Copy the phpunit.xml file for your local configuration:

phpunit -c your-phpunit.xml tests

Contribution

To test with mysql database:

mysql -uroot -p
CREATE DATABASE sqlbuilder CHARSET utf8;
GRANT ALL PRIVILEGES ON sqlbuilder.* TO 'testing'@'localhost' identified by '';

--- or use this to remove password for testing account
SET PASSWORD FOR [email protected]=PASSWORD('');

To test with pgsql database:

sudo -u postgres createdb sqlbuilder

Reference

Author

Yo-An Lin (c9s) [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].