/aydan_db

Курсовая по программированию

Primary LanguageC++

Aydan Database

aydan_db - база данных с возможностью вводить операции на языке запросов SQL

Прежде чем запустить программу, пожалуйста, ознакомьтесь с ее функционалом. Так вы упростите себе процесс оценивания, а я получу справедливую оценку, которая будет соответствовать тому количеству часов, что я вложил в этот проект


В данный момент база данных поддерживает 2 типа данных - string и number Столбцы имеют тип, название, а также 2 флага - primary key и auto_increment (второе с "_" потому что так в MySQL)

Названия таблиц/столбцов писать можно как `в таких кавычках`, так и без них.

Имеется 7 возможных команд:

Create

Применяется для создания таблиц

Пример запроса:

create table `users`(`id` number primary key auto_increment, `name` string)

Insert

Применяется для добавления строк в базу данных

Примечание: Нельзя указать столбцы, к которым будут применяться значения. Осуществляется только ввод полной строки (кроме auto_increment поля)

Пример запроса:

insert into `users` values ("aydan")

Select

Применяется для получения строк по какому-либо условию

Примечание: поддерживается только выполнение 1 условия.

ТАК ДЕЛАТЬ НЕ НАДО

select * from `users` where `id` = 3 and `name` = "valeriy"

Выше указанный запрос выполнить не получится.

Примечание 2: Вместо знака * указать столбцы нельзя. Если вы попытаетесь там ввести столбцы, вам выдаст ошибку. Поэтому получить можно только целиком полную строку

Условие записывается как (в любом другом порядке не сработает)

поле операция значение

Пример запроса:

select * from `users` where `id` < 2

Операции бывают следующие: =, == (эквивалентен =), >, <, >=, <=, !=

number принимает все вышеперечисленные операции string принимает только операции =, == и !=

Значение вводить следует строго в том типе, который принимает столбец (иначе вам ошибку выдаст о неверном типе).

Describe

Применяется для получения информации о таблице

Пример запроса:

describe `users`

Drop

Применяется для удаления таблицы

Пример запроса:

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>. Поэтому пришлось использовать это решение

  1. git clone --recursive git@github.com:NolikTop/aydan_db.git
  2. либо же git clone --recursive https://github.com/NolikTop/aydan_db.git если 1 пункт не сработает
  3. Войдите в папку aydan_db
  4. Можете открывать проект в своем любимом редакторе/IDE
  5. Если он не поддерживает вдруг cmake - поищите тот что поддерживает, потому что в консоли с cmake сложновато 😁
  6. Ваш редактор убедится в том что у вас нужная версия cmake (если он сказал что версия не поддерживается проектом - обновите версию в файле CMakeLists.txt. Есть также вариант обновить у себя на компьютере cmake)
  7. Создайте папку db в папке проекта (aydan_db). Вообще можно назвать как угодно и разместить тоже где угодно, однако так будет удобнее. Запомните адрес до этой папки со слешом в конце
  8. Откройте файл src/db/FS.h и замените переменную dbPath. В ней хранится путь к папке базы данных (где будут создаваться таблицы). Если вы этого не сделаете, в лучшем случае (на Unix-based системе) база данных скажет что папки базы данных нет, а в худшем случае (на Windows) база данных скажет, что на Windows не поддерживаются слеши в пути к файлу. !!! Обратите внимание, что в конце пути должен быть слеш (=обратный слеш если вы на Windows).
  9. Если все предыдущие пункты выполнены верно, значит будет работать. Запускайте конфигурацию aydan_db_run
  10. Если при запуске программы выводится какой-то бред — попробуйте в src/utils/Colors.h изменить макрос SHOW_COLORS на 0. Если не помогло, то проверьте кодировку.

Ура можно пользоваться