#sql-query #query-builder #sql #sqlite #statement #join #clause

lumus-sql-builder

以编程和直观的方式构建 SQL 语句

2 个版本

0.1.7 2024 年 8 月 22 日
0.1.6 2024 年 8 月 21 日
0.1.5 2024 年 6 月 27 日
0.1.3 2024 年 4 月 3 日
0.1.2 2024 年 3 月 17 日

#951 in 数据库接口

Download history 1/week @ 2024-05-16 2/week @ 2024-05-23 271/week @ 2024-06-27 25/week @ 2024-07-04 6/week @ 2024-07-25 2/week @ 2024-08-01 80/week @ 2024-08-15

每月 90 次下载

MIT 许可协议

36KB
753

Lumus sql builder

关于项目

Lumus SQL Builder 是一个 Rust 库,允许您以编程和直观的方式为简单项目构建复杂的 SQL 查询。它支持各种 SQL 操作,包括列选择、连接、WHERE 子句、分组、排序等。

功能

  • 创建表
  • 数据插入
  • 数据选择,支持 DISTINCT、GROUP BY、ORDER BY、LIMIT 和 OFFSET
  • 简单创建 WHERE 子句的方法

示例用法

创建表

use lumus_sql_builder::sqlite::{CreateTable, Column};

fn main() {
    let create_table = CreateTable::new("employees", vec![
        Column::new("id").integer().primary_key().auto_increment(),
        Column::new("name").text().not_null(),
        Column::new("age").integer().not_null(),
        Column::new("department").text().default("'Undefined'"),
        Column::new("salary").real(),
        Column::new("hired_date").datetime(),
        Column::new("manager_id").integer()
    ]);

    println!("{}", create_table.build().unwrap());
}

输出

CREATE TABLE employees (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER NOT NULL,
    department TEXT DEFAULT 'Undefined',
    salary REAL,
    hired_date DATETIME,
    manager_id INTEGER
);

插入数据

use lumus_sql_builder::sqlite::Insert;

fn main() {
    let insert = Insert::new("employees").values(vec![
        ("name", "John"),
        ("age", "30"),
        ("department", "IT"),
        ("salary", "5000.00"),
        ("hired_date", "2024-03-20"),
        ("manager_id", "1")
    ]);

    println!("{}", insert.build().unwrap());
}

输出

INSERT INTO employees (name, age, department, salary, hired_date, manager_id) VALUES ('John', '30', 'IT', '5000.00', '2024-03-20', '1');

选择数据

use lumus_sql_builder::sqlite::{Select, Where};

fn main() {
    let select = Select::new("employees")
        .columns("name, age, department")
        .condition(Where::from("age > 25").build())
        .order("age DESC")
        .limit(10);

    println!("{}", select.build().unwrap());
}

输出

SELECT name, age, department FROM employees WHERE age > 25 ORDER BY age DESC LIMIT 10;

无运行时依赖项