DATA-BOS Database
A lightweight custom database system written in C++ with basic SQL-like support.
Features
SQL-style commands
Supports INT, FLOAT, VARCHAR(n)
Full CRUD operations
File-based persistent storage
WHERE clauses with standard operators
Simple interactive CLI
Build make
Builds the databos executable.
Run make run
./databos
Commands CREATE TABLE CREATE TABLE users (id INT, name VARCHAR(100), age INT, salary FLOAT);
INSERT INSERT INTO users (id, name, age, salary) VALUES (1, 'John Doe', 30, 50000.50);
SELECT SELECT * FROM users; SELECT name, age FROM users; SELECT * FROM users WHERE age > 25;
Supported operators: =, !=, <, >, <=, >=
UPDATE UPDATE users SET salary = 55000 WHERE id = 1;
Requires WHERE clause
DELETE DELETE FROM users WHERE id = 2;
Requires WHERE clause
DROP TABLE DROP TABLE users;
SHOW TABLES SHOW TABLES;
DESCRIBE DESCRIBE users; -- or DESC users;
HELP HELP;
EXIT EXIT; -- or QUIT;
Example Session DATA-BOS> CREATE TABLE employees (id INT, name VARCHAR(50), department VARCHAR(50), salary FLOAT); DATA-BOS> INSERT INTO employees (id, name, department, salary) VALUES (1, 'Alice', 'Engineering', 75000.00); DATA-BOS> INSERT INTO employees (id, name, department, salary) VALUES (2, 'Bob', 'Marketing', 65000.00); DATA-BOS> SELECT * FROM employees; DATA-BOS> UPDATE employees SET salary = 85000 WHERE id = 1; DATA-BOS> DELETE FROM employees WHERE id = 2; DATA-BOS> SHOW TABLES; DATA-BOS> DESC employees; DATA-BOS> EXIT;
Storage
Data is stored in databos_storage/
Each table = one .dbt file
Auto-saves on table/data changes
Auto-loads on startup
Clean Up make clean
Removes binaries and storage files.
Architecture
database.cpp/h: Core logic (tables, rows, storage)
parser.cpp/h: Parses SQL-like commands
executor.cpp/h: Executes parsed queries
main.cpp: CLI interface
Safety
UPDATE/DELETE require WHERE to avoid mass changes
Data is auto-persisted
Type-safe values
Checks for table existence before ops
Roadmap / Ideas
JOIN support
Indexing
Transactions (BEGIN, COMMIT, ROLLBACK)
More data types: DATE, BOOLEAN, BLOB
Aggregates: COUNT, SUM, AVG, etc.
ORDER BY, GROUP BY
NULL handling
Keys and constraints