2023-BJTU-SGBD-Projet
École de logiciels de l'Université Jiaotong de Pékin Cours de formation pratique du printemps 2023 Système de gestion de base de données de projets
admin
et le mot de passe 123456
pour vous connecter. 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
et 123456
pour vous connecter à la base de données #include<filemanager>
filemanager
en c++17, mais qt5 ne prend en charge experimental/filemanager
en c++17, ce qui doit être décidé en fonction de l'environnement. Le contenu correspondant peut être modifié dans file/src/filemanager.cpp
.Connectez-vous à la base de données
colasql 用户名 密码
#管理员用户名admin,密码colasql
LOGIN 用户名 密码;
Créer un utilisateur
CREATE USER 用户名 密码;
#所有用户默认拥有数据库的查询权、创建权,只对自己创建的数据库有删除权
#创建用户不需要任何权限,但授予权限只能授予自己拥有的权限
#其它说明见下
Modifier les autorisations des utilisateurs
GRANT USER 用户名 数据库名 表名 权限名;
#数据库名和表名都不能为"*",对某个特定的数据库的表授予权限。
GRANT USER 用户名 数据库名 权限名;
#数据库名为"*",对所有数据库的所有表授予权限(当前用户拥有该数据库的权限,仅admin可用)。
#数据库名不为"*"时,若为表级权限则授予该数据库里所有表的表级权限(当前用户需拥有授权的所有权限),若为数据库级权限则授予该数据库的数据库级权限(当前用户需拥有该权限)。
Nom de l'autorisation
#表级权限
SELECT
DELETE
INSERT
UPDATE
INDEX
ALTER
#数据库级权限
CREATE
DROP
# ALL表示以上所有权限,仅数据库管理员(admin)可用
# ALL
Supprimer un utilisateur (nécessite des droits d'administrateur)
DROP USER 用户名;
int # 42位整数,如 1, 14, 514
float # 42位浮点数,如 1.0, 5.1, 2
string # 字符串,如 "dbms", "2002-10-12"
Créer une base de données (nécessite des droits d'administrateur)
CREATE DATABASE 数据库名;
Supprimer la base de données (nécessite des droits d'administrateur)
DROP DATABASE 数据库名;
Utiliser la base de données
USE 数据库名;
Afficher toutes les bases de données
SHOW DATABASES;
Créer une table (nécessite l'autorisation CREATE)
CREATE TABLE 表名
列名1 类型1
列名2 类型2
...
约束条件1
约束条件2
...
;
Syntaxe de contrainte
CONSTRAINT 约束名 PRIMARY KEY 列名; # 指定主键
CONSTRAINT 约束名 FOREIGN KEY 列名 REFERENCES 表名2 列名2 ; # 指定外键,该列 参考 表2的列2
CONSTRAINT 约束名 UNIQUE 列名; # 指定该列值不可重复(未指定时,默认可重)
CONSTRAINT 约束名 NOT NULL 列名; # 指定该列非空(未指定时,默认可空)
CONSTRAINT 约束名 DEFAULT 列名 值; # 指定该列默认值(未指定时,默认值为NULL)
Supprimer la table (autorisation DROP requise)
DROP TABLE 表名;
Modifier la table (nécessite l'autorisation ALTER)
ALTER TABLE 表名 ADD 列名 类型;
ALTER TABLE 表名 DROP 列名;
ALTER TABLE 表名 MODIFY 列名 类型;
ALTER TABLE 表名 约束条件;
ALTER TABLE 表名 DELETE 约束条件名;
Afficher la structure de la table (nécessite l'autorisation SELECT)
DESC TABLE 表名;
afficher tous les tableaux
SHOW TABLES;
Lié à l'indice
CREATE INDEX ON 表名 列名1 列名2 ...;
Afficher les contraintes
SHOW CONSTRAINTS;
SHOW CONSTRAINT ON 表名;
insérer un enregistrement
INSERT INTO 表名 列名1 列名2 列名3 ... VALUES 值1 值2 值3 ...;
supprimer l'enregistrement
DELETE FROM 表名 [ WHERE 筛选条件1 筛选条件2 ...];
Syntaxe du filtre
列名 = 值
Sélectionner un enregistrement
SELECT 列名1 列名2 列名3 ...
FROM 表名1 [ NATURAL JOIN 表名2 ...]
[ WHERE 筛选条件1 筛选条件2 ...]
[ ORDER BY 列名1 列名2 ...];
Mettre à jour l'enregistrement
UPDATE 表名 SET 列名1 = 值1 [列名2 = 值2 ...]
[ WHERE 筛选条件1 筛选条件2 ...];
Enregistrer et soumettre
SAVE;
COMMIT ;
Restaurer et lire
READ;
ROLLBACK ;
RUN path/to/directory/script.colasql
;
à la fin de l'instruction ici, sinon l'analyse échouera ! NULL
est un mot-clé Co1aSQL S'il est occupé, les résultats attendus risquent de ne pas être obtenus. // 属性(字段)
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);