2023 BJTU DBMS Project
v1.0
2023-BJTU-DBMS-プロジェクト
北京交通大学ソフトウェアスクール 2023年春季実践研修コース プロジェクトデータベース管理システム
admin
とパスワード123456
を使用してログインします。 cd cmd
cmake -Bbuild
make -Cbuild -j8
build/colasql admin 123456;
cd gui/ColaSqlGui
qmake -o build/Makefile ColaSqlGui.pro
make -Cbuild -j8
build/ColaSqlGui
admin
と123456
使用してデータベースにログインしてください#include<filemanager>
に関するコンパイル エラーfilemanager
ライブラリをサポートしますが、qt5 は c++17 のexperimental/filemanager
のみをサポートするため、環境に応じて決定する必要があります。対応するコンテンツはfile/src/filemanager.cpp
で変更できます。データベースへのログイン
colasql 用户名 密码
#管理员用户名admin,密码colasql
LOGIN 用户名 密码;
ユーザーの作成
CREATE USER 用户名 密码;
#所有用户默认拥有数据库的查询权、创建权,只对自己创建的数据库有删除权
#创建用户不需要任何权限,但授予权限只能授予自己拥有的权限
#其它说明见下
ユーザー権限を変更する
GRANT USER 用户名 数据库名 表名 权限名;
#数据库名和表名都不能为"*",对某个特定的数据库的表授予权限。
GRANT USER 用户名 数据库名 权限名;
#数据库名为"*",对所有数据库的所有表授予权限(当前用户拥有该数据库的权限,仅admin可用)。
#数据库名不为"*"时,若为表级权限则授予该数据库里所有表的表级权限(当前用户需拥有授权的所有权限),若为数据库级权限则授予该数据库的数据库级权限(当前用户需拥有该权限)。
権限名
#表级权限
SELECT
DELETE
INSERT
UPDATE
INDEX
ALTER
#数据库级权限
CREATE
DROP
# ALL表示以上所有权限,仅数据库管理员(admin)可用
# ALL
ユーザーの削除 (管理者権限が必要)
DROP USER 用户名;
int # 42位整数,如 1, 14, 514
float # 42位浮点数,如 1.0, 5.1, 2
string # 字符串,如 "dbms", "2002-10-12"
データベースの作成 (管理者権限が必要)
CREATE DATABASE 数据库名;
データベースの削除 (管理者権限が必要)
DROP DATABASE 数据库名;
データベースを使用する
USE 数据库名;
すべてのデータベースを表示
SHOW DATABASES;
テーブルの作成 (CREATE 権限が必要)
CREATE TABLE 表名
列名1 类型1
列名2 类型2
...
约束条件1
约束条件2
...
;
制約の構文
CONSTRAINT 约束名 PRIMARY KEY 列名; # 指定主键
CONSTRAINT 约束名 FOREIGN KEY 列名 REFERENCES 表名2 列名2 ; # 指定外键,该列 参考 表2的列2
CONSTRAINT 约束名 UNIQUE 列名; # 指定该列值不可重复(未指定时,默认可重)
CONSTRAINT 约束名 NOT NULL 列名; # 指定该列非空(未指定时,默认可空)
CONSTRAINT 约束名 DEFAULT 列名 值; # 指定该列默认值(未指定时,默认值为NULL)
テーブルの削除 (DROP 権限が必要)
DROP TABLE 表名;
テーブルの変更 (ALTER 権限が必要)
ALTER TABLE 表名 ADD 列名 类型;
ALTER TABLE 表名 DROP 列名;
ALTER TABLE 表名 MODIFY 列名 类型;
ALTER TABLE 表名 约束条件;
ALTER TABLE 表名 DELETE 约束条件名;
テーブル構造の表示 (SELECT 権限が必要)
DESC TABLE 表名;
すべてのテーブルを表示
SHOW TABLES;
インデックス関連
CREATE INDEX ON 表名 列名1 列名2 ...;
ビューの制約
SHOW CONSTRAINTS;
SHOW CONSTRAINT ON 表名;
レコードを挿入
INSERT INTO 表名 列名1 列名2 列名3 ... VALUES 值1 值2 值3 ...;
レコードを削除する
DELETE FROM 表名 [ WHERE 筛选条件1 筛选条件2 ...];
フィルター構文
列名 = 值
レコードの選択
SELECT 列名1 列名2 列名3 ...
FROM 表名1 [ NATURAL JOIN 表名2 ...]
[ WHERE 筛选条件1 筛选条件2 ...]
[ ORDER BY 列名1 列名2 ...];
更新記録
UPDATE 表名 SET 列名1 = 值1 [列名2 = 值2 ...]
[ WHERE 筛选条件1 筛选条件2 ...];
保存して送信
SAVE;
COMMIT ;
ロールバックと読み取り
READ;
ROLLBACK ;
RUN path/to/directory/script.colasql
;
を追加することはできません。そうしないと、解析が失敗します。 NULL
は Co1aSQL キーワードです。占有されている場合、期待される結果が得られない可能性があります。 // 属性(字段)
std::pair<std::string, std::string> field;
std::unordered_map<std::string, std::any> records;
// 约束条件
Class Constraint {};
Class PrimaryKeyConstraint: public Constraint {};
Class ForeignKeyConstraint: public Constraint {};
Class UniqueConstraint: public Constraint {};
Class NotNullConstraint: public Constraint {};
Class DefaultConstraint: public Constraint {};
// 创建用户(需要管理员权限)
int CreateAccount (std::string accountName,
std::string password,
bool ownAllDatabases,
std::string databaseName,
int authority);
// 删除用户(需要管理员权限)
int DeleteAccount (std::string accountName);
// 修改用户权限
int GrantAccount (std::string accountName,
bool ownAllDatabases,
std::string databaseName,
int authority);
// 创建数据库(需要管理员权限)
int CreateDatabase (std::string databaseName);
// 删除数据库(需要管理员权限)
int DeleteDatabase (std::string databaseName);
// 使用数据库 —— 该函数会对其他函数产生影响
int UseDatabase (std::string databaseName,
std::string accountName,
std::string password);
// 显示所有数据库
int ShowDatabase (std::string& output);
// 创建表
int CreateTable (std::string tableName,
const std::vector<std::pair<std::string, std::any>>& fields,
const std::vector<Constraint*>& constraints);
// 删除表
int DeleteTable (std::string tableName);
// 修改表
int AlterTableAdd (std::string tableName, Field field);
int AlterTableDrop (std::string tableName, std::string fieldName);
int AlterTableModify (std::string tableName, std::string fieldName, Field field);
int AlterTableConstraint (std::string tableName, Constraint constraint);
int AlterTableDeleteConstraint (std::string tableName, std::string constraintName);
// 查看表结构(通过&output来输出结果)
int QueryTable (std::string tableName, std::string& output) const ;
// 显示当前数据库的所有表
int ShowTable (std::string& output);
// 插入记录
int InsertRecord (std::string tableName,
const std::vector<Field>& values);
// 删除记录(conditions储存筛选条件,根据筛选条件删除记录)
int DeleteRecord (std::string tableName,
const std::vector<Field>& conditions);
// SelectRecord的参数需要修改!!!目前不完善!!!
// 选择(查询)记录(conditions储存筛选条件)
int SelectRecord (std::string tableName,
const std::vector<Field>& conditions,
std::string& output) const ;
// 更新记录
int UpdateRecord (std::string tableName,
const std::vector<Field>& values,
const std::vector<Field>& conditions);