# rdbms-playground A cross-platform terminal app for **learning relational database concepts** — tables, columns, primary and foreign keys, relationships, indexes, queries, and query plans — in a safe sandbox. It's a teaching tool, not a database administration tool. It meets beginners with guided, keyword-based commands (**simple mode**) and grows with them to raw SQL (**advanced mode**), so the same playground works from "what is a primary key?" through to writing real queries and reading their execution plans. Website & documentation: **** ## Install ### One line (Linux / macOS) ```sh curl -fsSL https://git.lazyeval.net/oli/rdbms-playground/raw/branch/main/scripts/install.sh | sh ``` Detects your OS and CPU, downloads the matching release binary, verifies its SHA-256 checksum, and installs it to `~/.local/bin`. Set `RDBMS_INSTALL_DIR` to install elsewhere, or `RDBMS_VERSION=vX.Y.Z` to pin a version. (Prefer to read before you run? The script lives at `scripts/install.sh`.) ### One line (Windows, PowerShell) ```powershell irm https://git.lazyeval.net/oli/rdbms-playground/raw/branch/main/scripts/install.ps1 | iex ``` Downloads the matching `.exe`, verifies its checksum, installs to `%LOCALAPPDATA%\Programs\rdbms-playground`, and adds it to your user PATH. Or use a package manager (Scoop / winget) once those land. ### With `cargo binstall` If you have [`cargo-binstall`](https://github.com/cargo-bins/cargo-binstall) (install it first — it is not part of `cargo` itself): ```sh cargo binstall rdbms-playground ``` ### From source ```sh cargo install rdbms-playground # from crates.io # or, from a clone: cargo build --release # binary at target/release/rdbms-playground ``` ### Prebuilt binaries Every release publishes static Linux, standalone Windows, and macOS binaries (x86_64 and aarch64) with `.sha256` checksums on the [releases page](https://git.lazyeval.net/oli/rdbms-playground/releases). Windows users can also use the binary directly (package-manager support is planned). ## A quick taste ``` create table Customers with pk id(serial) add column Customers: name (text) add column Customers: email (text) insert into Customers values ('Ann', 'ann@example.io') show data Customers ``` Press **F1** while typing for a contextual hint about the command you're building, or type `help` for the full command list. Switch to raw SQL with `mode advanced` (or prefix a single line with `:`). ## Project status Approaching its first public release. See the website for current features; installation via package managers (Homebrew, Scoop, winget) is on the roadmap. ## License Dual-licensed under either of - MIT license ([LICENSE-MIT](LICENSE-MIT)) - Apache License 2.0 ([LICENSE-APACHE](LICENSE-APACHE)) at your option. ## Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions. See [CONTRIBUTING.md](CONTRIBUTING.md).