sg: A simple standard SQL generator written in Go.
- Builders
- Generators
- Create view
- Create index
- Create unique index
- Index definition
- Column definition
- Primary key
- Default
- Delete
- Delete from
- Drop table
- Drop view
- Drop event
- Drop procedure
- Insert
- Values
- Alias
- Arg
- From
- Left join
- Right join
- Inner join
- On
- Select
- Order by
- Asc
- Desc
- Asc group
- Desc group
- Group by
- Having
- Update
- Set
- Set eq
- Where
- And
- Or
- Not
- And group
- Or group
- Eq
- Not eq
- Gt
- Gt eq
- Lt
- Lt eq
- Like
- Left like
- Right like
- Instr
- In
- Between and
package main import ( "fmt" . "github.com/go-the-way/sg" ) func main() { builder := InsertBuilder(). Table(T("table_person")). Column(C("col1"), C("col2")). Value(Arg(100), Arg(200)) fmt.Println(builder.Build()) // Output: // INSERT INTO table_person (col1, col2) VALUES (?, ?) [100 200] }package main import ( "fmt" . "github.com/go-the-way/sg" ) func main() { builder := DeleteBuilder(). Delete(T("t1.*")). From(As(C("table1"), "t1"), As(C("table2"), "t2")). Where(AndGroup(Gt("t1.col1", 100), Gt("t2.col2", 200))) fmt.Println(builder.Build()) // Output: // DELETE t1.* FROM table1 AS t1, table2 AS t2 WHERE ((t1.col1 > ?) AND (t2.col2 > ?)) [100 200] }package main import ( "fmt" . "github.com/go-the-way/sg" ) func main() { builder := UpdateBuilder(). Update(As(T("table_person"), "t")). Join(LeftJoin(As(T("table_a"), "ta"), On(C("t.col1 = ta.col1")))). Set(SetEq("col1", 100), SetEq("col2", 200)). Where(AndGroup(Eq("a", 100), Eq("b", 200))) fmt.Println(builder.Build()) // Output: // UPDATE table_person AS t LEFT JOIN table_a AS ta ON (t.col1 = ta.col1) SET col1 = ?, col2 = ? WHERE ((a = ?) AND (b = ?)) [100 200 100 200] }package main import ( "fmt" . "github.com/go-the-way/sg" ) func main() { builder := SelectBuilder(). Select(C("a"), C("b")). From(T("table_person")). Join(LeftJoin(As(T("table_a"), "ta"), On(C("ta.col1 = tb.col1")))). Where(AndGroup(Eq("a", 100), Eq("b", 200))). OrderBy(DescGroup(C("a"), C("b"))) fmt.Println(builder.Build()) // Output: // SELECT a, b FROM table_person LEFT JOIN table_a AS ta ON (ta.col1 = tb.col1) WHERE ((a = ?) AND (b = ?)) ORDER BY a DESC, b DESC [100 200] }CreateView(P("vm_nowTime"), P(`select NOW() AS t`) CreateIndex(false, P("idx_name"), T("table"), C("name")) CreateUniqueIndex(P("idx_name"), T("table"), C("name")) IndexDefinition(false, P("idx_name"), C("name")) ColumnDefinition(P("id"), P("int"), false, true, false, "", "ID") PrimaryKey(C("id")) Default(C("1")) Delete([]Ge{}, T("table_a")) DeleteFrom(T("table_a")) DropTable(T("table")) DropView(T("view")) DropEvent(T("event")) DropProcedure(T("procedure")) Insert(C("table"), C("aa")) Values(Arg(100)) Alias(C("hello"), "hello_lo") Arg(100) From(T("table_a"), T("table_b")) LeftJoin(As(T("table_a"), "ta"), On(C("ta.col1 = tb.col1")) RightJoin(As(T("table_a"), "ta"), On(C("ta.col1 = tb.col1")) InnerJoin(As(T("table_a"), "ta"), On(C("ta.col1 = tb.col1")) On(C("ta.col1 = tb.col1")) Select(C("t.col_a")) OrderBy(AscGroup(C("t.abc"), C("t.xxx"))) Asc(C("t.abc")) Desc(C("t.abc")) AscGroup(C("t.abc"), C("t.xxx")) DescGroup(C("t.abc"), C("t.xxx")) GroupBy(C("t.abc"), C("t.xyz")) Having(AndGroup(Eq("a", 1))) Update(T("table_a")) Set(C("t.a = t.b")) SetEq("col1", 100) Where(AndGroup(Eq("a", 1))) And(Eq("c", 100)) Or(Eq("c", 100)) Not(Eq("c", 100)) AndGroup(Gt("t1.col1", 100), Gt("t2.col2", 200)) OrGroup(Eq("a", 1), Eq("b", 100)) Eq("a", 1)) NotEq("a", 1)) Gt("a", 1)) Lt("a", 1)) Lt("a", 1)) LtEq("a", 1)) Like("a", 1) LeftLike("a", 1) RightLike("a", 1) Instr("a", 1) In("a", 1) BetweenAnd(c, rune(100), rune(100))