In-memory SQL database written in pure OCaml. Supports full CRUD operations (Create, Read, Update, Delete) with an interactive REPL for executing SQL queries.
- OCaml >= 5.0
- Dune >= 3.0
- Menhir >= 2.1
opam install dune menhir# Build
dune build
# Run interactive REPL
dune exec bin/main.exe
# Run tests
dune exec test/main.exeCase sensitivity information: SQL statements, expressions, and keywords should always be written in uppercase.
sql> CREATE TABLE users (id INT PRIMARY KEY, name STRING, age INT)
OK
sql> INSERT INTO users VALUES (1, 'Alice', 30), (2, 'Bob', 25)
2 row(s) affected
sql> SELECT * FROM users WHERE age > 20 ORDER BY name
id | name | age
---|-------|----
1 | Alice | 30
2 | Bob | 25
2 row(s)
sql> UPDATE users SET age = age + 1 WHERE name = 'Bob'
1 row(s) affected
sql> DELETE FROM users WHERE id = 1
1 row(s) affected
sql> SHOW TABLES
Tables:
users
sql> DESCRIBE users
Column Name | Type | Nullable | Primary Key
---------------------------------------------
id | INT | NO | YES
name | STRING | YES | NO
age | INT | YES | NO
sql> DROP TABLE users
OKCREATE TABLE, DROP TABLE, SHOW TABLES, DESCRIBE,
INSERT, SELECT, UPDATE, DELETE
WHERE, ORDER BY, LIMIT, AS, PRIMARY KEY
INT, FLOAT, STRING, BOOL, NULL
- Arithmetic:
+,-,*,/ - Comparison:
=,<>,<,<=,>,>= - Logical:
AND,OR,NOT - Null check:
IS NULL