2023-BJTU-DBMS-Proyecto
Escuela de software de la Universidad Jiaotong de Beijing 2023 Curso de formación práctica de primavera Sistema de gestión de bases de datos de proyectos
admin
de la cuenta y la contraseña 123456
para iniciar sesión. 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
y 123456
para iniciar sesión en la base de datos. #include<filemanager>
filemanager
en c++ 17, pero qt5 solo admite experimental/filemanager
en c++ 17, lo que debe decidirse de acuerdo con el entorno. El contenido correspondiente se puede modificar en file/src/filemanager.cpp
.Iniciar sesión en la base de datos
colasql 用户名 密码
#管理员用户名admin,密码colasql
LOGIN 用户名 密码;
Crear usuario
CREATE USER 用户名 密码;
#所有用户默认拥有数据库的查询权、创建权,只对自己创建的数据库有删除权
#创建用户不需要任何权限,但授予权限只能授予自己拥有的权限
#其它说明见下
Modificar permisos de usuario
GRANT USER 用户名 数据库名 表名 权限名;
#数据库名和表名都不能为"*",对某个特定的数据库的表授予权限。
GRANT USER 用户名 数据库名 权限名;
#数据库名为"*",对所有数据库的所有表授予权限(当前用户拥有该数据库的权限,仅admin可用)。
#数据库名不为"*"时,若为表级权限则授予该数据库里所有表的表级权限(当前用户需拥有授权的所有权限),若为数据库级权限则授予该数据库的数据库级权限(当前用户需拥有该权限)。
Nombre del permiso
#表级权限
SELECT
DELETE
INSERT
UPDATE
INDEX
ALTER
#数据库级权限
CREATE
DROP
# ALL表示以上所有权限,仅数据库管理员(admin)可用
# ALL
Eliminar usuario (requiere derechos de administrador)
DROP USER 用户名;
int # 42位整数,如 1, 14, 514
float # 42位浮点数,如 1.0, 5.1, 2
string # 字符串,如 "dbms", "2002-10-12"
Crear base de datos (requiere derechos de administrador)
CREATE DATABASE 数据库名;
Eliminar base de datos (requiere derechos de administrador)
DROP DATABASE 数据库名;
Usar base de datos
USE 数据库名;
Mostrar todas las bases de datos
SHOW DATABASES;
Crear tabla (requiere permiso CREAR)
CREATE TABLE 表名
列名1 类型1
列名2 类型2
...
约束条件1
约束条件2
...
;
Sintaxis de restricción
CONSTRAINT 约束名 PRIMARY KEY 列名; # 指定主键
CONSTRAINT 约束名 FOREIGN KEY 列名 REFERENCES 表名2 列名2 ; # 指定外键,该列 参考 表2的列2
CONSTRAINT 约束名 UNIQUE 列名; # 指定该列值不可重复(未指定时,默认可重)
CONSTRAINT 约束名 NOT NULL 列名; # 指定该列非空(未指定时,默认可空)
CONSTRAINT 约束名 DEFAULT 列名 值; # 指定该列默认值(未指定时,默认值为NULL)
Eliminar tabla (se requiere permiso DROP)
DROP TABLE 表名;
Modificar tabla (requiere permiso ALTER)
ALTER TABLE 表名 ADD 列名 类型;
ALTER TABLE 表名 DROP 列名;
ALTER TABLE 表名 MODIFY 列名 类型;
ALTER TABLE 表名 约束条件;
ALTER TABLE 表名 DELETE 约束条件名;
Ver estructura de tabla (requiere permiso SELECT)
DESC TABLE 表名;
mostrar todas las tablas
SHOW TABLES;
Relacionado con el índice
CREATE INDEX ON 表名 列名1 列名2 ...;
Ver restricciones
SHOW CONSTRAINTS;
SHOW CONSTRAINT ON 表名;
insertar registro
INSERT INTO 表名 列名1 列名2 列名3 ... VALUES 值1 值2 值3 ...;
eliminar registro
DELETE FROM 表名 [ WHERE 筛选条件1 筛选条件2 ...];
Sintaxis de filtro
列名 = 值
Seleccionar registro
SELECT 列名1 列名2 列名3 ...
FROM 表名1 [ NATURAL JOIN 表名2 ...]
[ WHERE 筛选条件1 筛选条件2 ...]
[ ORDER BY 列名1 列名2 ...];
Actualizar registro
UPDATE 表名 SET 列名1 = 值1 [列名2 = 值2 ...]
[ WHERE 筛选条件1 筛选条件2 ...];
Guardar y enviar
SAVE;
COMMIT ;
Revertir y leer
READ;
ROLLBACK ;
RUN path/to/directory/script.colasql
;
al final de la declaración aquí; de lo contrario, el análisis fallará. NULL
es una palabra clave de Co1aSQL. Si está ocupada, es posible que no se obtengan los resultados esperados. // 属性(字段)
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);