aydan_db - база данных с возможностью вводить операции на языке запросов SQL
Прежде чем запустить программу, пожалуйста, ознакомьтесь с ее функционалом. Так вы упростите себе процесс оценивания, а я получу справедливую оценку, которая будет соответствовать тому количеству часов, что я вложил в этот проект
В данный момент база данных поддерживает 2 типа данных - string
и number
Столбцы имеют тип, название, а также 2 флага - primary key и auto_increment (второе с "_" потому что так в MySQL)
Названия таблиц/столбцов писать можно как `в таких кавычках`, так и без них.
Имеется 7 возможных команд:
Применяется для создания таблиц
Пример запроса:
create table `users`(`id` number primary key auto_increment, `name` string)
Применяется для добавления строк в базу данных
Примечание: Нельзя указать столбцы, к которым будут применяться значения. Осуществляется только ввод полной строки (кроме auto_increment поля)
Пример запроса:
insert into `users` values ("aydan")
Применяется для получения строк по какому-либо условию
Примечание: поддерживается только выполнение 1 условия.
select * from `users` where `id` = 3 and `name` = "valeriy"
Выше указанный запрос выполнить не получится.
Примечание 2: Вместо знака *
указать столбцы нельзя. Если вы попытаетесь там ввести столбцы, вам выдаст ошибку. Поэтому получить можно только целиком полную строку
Условие записывается как (в любом другом порядке не сработает)
поле операция значение
Пример запроса:
select * from `users` where `id` < 2
Операции бывают следующие: =
, ==
(эквивалентен =
), >
, <
, >=
, <=
, !=
number принимает все вышеперечисленные операции
string принимает только операции =
, ==
и !=
Значение вводить следует строго в том типе, который принимает столбец (иначе вам ошибку выдаст о неверном типе).
Применяется для получения информации о таблице
Пример запроса:
describe `users`
Применяется для удаления таблицы
Пример запроса:
drop table `users`
Обратите внимание на то, что должен быть минимум C++17 (из-за __has_include в директивах #if), а еще лучше будет если у вас C++20
В данной работе я использовал:
cmake
(для поддержки зависимостей)
git
(и это неоднократно спасало!!!)
Google Test
(для проверки валидности кода). Очень пригодилось в binary::Stream,
потому что руками там невозможно выяснить в каком байте что-то пошло не так. Также пригодилось в parser::Parser для проверки функций парсинга
gulrak/filesystem
(в качестве полифилла для std::filesystem). На Mac OS по непонятной причине в C++20 нет <filesystem>
и даже <experimental/filesystem>
. Поэтому пришлось использовать это решение
git clone --recursive git@github.com:NolikTop/aydan_db.git
- либо же
git clone --recursive https://github.com/NolikTop/aydan_db.git
если 1 пункт не сработает - Войдите в папку
aydan_db
- Можете открывать проект в своем любимом редакторе/IDE
- Если он не поддерживает вдруг cmake - поищите тот что поддерживает, потому что в консоли с cmake сложновато 😁
- Ваш редактор убедится в том что у вас нужная версия cmake (если он сказал что версия не поддерживается проектом - обновите версию в файле
CMakeLists.txt
. Есть также вариант обновить у себя на компьютере cmake) - Создайте папку
db
в папке проекта (aydan_db
). Вообще можно назвать как угодно и разместить тоже где угодно, однако так будет удобнее. Запомните адрес до этой папки со слешом в конце - Откройте файл
src/db/FS.h
и замените переменнуюdbPath
. В ней хранится путь к папке базы данных (где будут создаваться таблицы). Если вы этого не сделаете, в лучшем случае (на Unix-based системе) база данных скажет что папки базы данных нет, а в худшем случае (на Windows) база данных скажет, что на Windows не поддерживаются слеши в пути к файлу. !!! Обратите внимание, что в конце пути должен быть слеш (=обратный слеш если вы на Windows). - Если все предыдущие пункты выполнены верно, значит будет работать. Запускайте конфигурацию
aydan_db_run
- Если при запуске программы выводится какой-то бред — попробуйте в
src/utils/Colors.h
изменить макросSHOW_COLORS
на0
. Если не помогло, то проверьте кодировку.
Ура можно пользоваться