# XML-DBMS的设计与开发 **Repository Path**: startgis/XML_DBMS ## Basic Information - **Project Name**: XML-DBMS的设计与开发 - **Description**: 通过XML文件形式保存数据库内数据表信息,并通过ElementTree 解析XML文件内容,实现数据在XML文件中的存取; 通过信号量机制解决数据表读写互斥问题,基于SHA1算法对数据关键信息进行加密,防止数据泄露; 通过正则表达式对SQL语句的解析,实现创建数据库/表,删除数据库/表,插入记录、查询信息的SQL语句解析。 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/zhoukai_01/XML_DBMS - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-04-30 - **Last Updated**: 2024-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # XML-DBMS的设计与开发 #### 介绍 通过XML文件形式保存数据库内数据表信息,并通过ElementTree 解析XML文件内容,实现数据在XML文件中的存取; 通过信号量机制解决数据表读写互斥问题,基于SHA1算法对数据关键信息进行加密,防止数据泄露; 通过正则表达式对SQL语句的解析,实现创建数据库/表,删除数据库/表,插入记录、查询信息的SQL语句解析。 #### 使用说明 ** 命令行以及UI接口使用** 1.创建数据库 创建XML数据库。提供两种创建数据库的SQL命令如下: CREATE DATABASE {IF NOT EXISTS} [database name] [SECRET | PUBLIC] 参数1:database name 数据库名称 参数2:[SECRET | PUBLIC] 访问控制修饰符 examples: CREATE DATABASE IF NOT EXISTS COMPANY PUBLIC CREATE DATABASE COMPANY PUBLIC 2.加载数据库 加载数据库,即执行该SQL命令,进入数据库操作空间,可对加载的数据库进行操作 LOAD DATABASE [database name] 参数1:database name 数据库名称 example: LOAD DATABASE COMPANY 3.删除数据库 删除数据库,执行SQL命令,确认当前登录用户是否对删除库具有删除权限,如有,删除数据库,若无,不做删除 DROP DATABASE [database name] 参数1:database name 数据库名称 example: DROP DATABASE COMPANY 4.创建表 创建表的操作,执行该指令前需要加载数据库,创建一张记录表 CREATE TABLE {IF NOT EXISTS} [table name] ( [attribute1 type1], [attribute2 type2], ······, [attributen typen], PRIVATE KEY ([attribute1], [attribute2], ······, [attributem]){, NO NULL([attribute1], [attribute2], ······, [attributev])}) 参数1:table name 表名称 参数2:attribute1 type1 属性名以及属性类型,形如"DEPARTMENT_NAME string"表示:该表中设置"DEPARTMENT_NAME"属性,其值的类型为"string"。 参数3-4:attributei 主键属性以及非空属性 examples: CREATE TABLE IF NOT EXISTS DEPARTMENT (DEPARTMENT_NAME string, NUMBER_PEOPLE int, PRIVATE KEY (DEPARTMENT_NAME), NO NULL(NUMBER_PEOPLE)) CREATE TABLE DEPARTMENT (DEPARTMENT_NAME string, NUMBER_PEOPLE int, PRIVATE KEY (DEPARTMENT_NAME)) 5.插入记录 插入记录操作,执行该指令向指定表中插入记录 INSERT INTO [table name] ([attribute1], [attribute2],······, [attributen]) VALUES (value1, value2,······, valuen) INSERT INTO [table name] VALUES (value1, value2,······, valuei) 参数1:table name 表名称 参数2:attribute1-n 插入记录属性名列表 参数3:value1-n 插入记录属性值列表 *** 但插入记录为该表完整属性列表记录时,属性名列表可以省略不写 examples: INSERT INTO DEPARTMENT (DEPARTMENT_NAME, NUMBER_PEOPLE) VALUES (财务部, 4) INSERT INTO DEPARTMENT (DEPARTMENT_NAME, NUMBER_PEOPLE) VALUES (技术部, 30) INSERT INTO DEPARTMENT (DEPARTMENT_NAME, NUMBER_PEOPLE) VALUES (保卫处, 6) INSERT INTO DEPARTMENT (DEPARTMENT_NAME, NUMBER_PEOPLE) VALUES (后勤处, 7) INSERT INTO DEPARTMENT (DEPARTMENT_NAME, NUMBER_PEOPLE) VALUES (管理部, 5) INSERT INTO DEPARTMENT VALUES (工程部, 40) 6.查询 查询指定表符合要求的记录信息,可通过指定查找行,指定表中记录字段条件查找 SELECT [attribute1], [attribute2],······, [attributen] FROM [table name] LIMIT {[line_start], [line_count]} SELECT * FROM [table name] LIMIT {[line_start], [line_count]} SELECT [attribute1], [attribute2],······, [attributen] FROM [table name] WHERE [attribute1 operator1 value1] [relationship1] [attribute2 operator2 value2] [relationship2] ······ [relationshij] [attributei operatori valuei] SELECT * FROM [table name] WHERE [attribute1 operator1 value1] [relationship1] [attribute2 operator2 value2] [relationship2] ······ [relationshij] [attributei operatori valuei] 参数1:attribute1-n 查询记录属性列表(查询记录属性列表为*,表示查询所有属性 参数2:table name 查询表名 参数1-1:line_start(LIMIT) 查询记录开始行 参数1-2:line_count(LIMIT) 查询记录行数 参数2-1:[attribute1 operator1 value1] [relationship1](WHERE) attribute1:筛选条件属性1 operator1 :筛选条件判断符1 (支持 <, >, <=, >=, =, !=) value1 :筛选条件值1 relationship1:条件间关系符(支持 AND,OR) examples: SELECT DEPARTMENT_NAME, NUMBER_PEOPLE FROM DEPARTMENT LIMIT 1, 4 SELECT DEPARTMENT_NAME FROM DEPARTMENT SELECT * FROM DEPARTMENT LIMIT 1, 4 SELECT DEPARTMENT_NAME FROM DEPARTMENT WHERE NUMBER_PEOPLE > 6 SELECT DEPARTMENT_NAME FROM DEPARTMENT WHERE NUMBER_PEOPLE > 6 AND DEPARTMENT_NAME = 技术部 7.删除数据表 删除数据表 DROP TABLE [table name] 参数1:table name 数据表名称 example: DROP TABLE DEPARTMENT **API接口** 1.创建数据库操作API对象 xml_dataBase = XMLDataBase(dataBaseName) 参数1:dataBaseName: 数据库名称 作用:仅创建一个数据库操作的对象,不对数据库做任何操作 example: xml_dataBase = XMLDataBase('COMPANY') 2.创建数据库 xml_dataBase = XMLDataBase(dataBaseName) xml_dataBase.createDataBase(authority, condition) 参数1:authority:数据库权限控制符,SECRET或PUBLUIC 参数2:condition:创建标识,默认为'IF NOT EXISTS' 作用:创建数据库dataBaseName,如果dataBaseName已存在,提示数据库存在 3.加载/连接数据库 xml_dataBase = XMLDataBase(dataBaseName) xml_dataBase.connectDataBase(userName) 参数1:userName:数据库用户名 作用:对已存在的数据库进行连接,可对该数据库进行操作 3.创建表 xml_dataBase = XMLDataBase(dataBaseName) xml_dataBase.createTable(sql) 作用:执行sql语句,创建表 4.插入记录 xml_dataBase = XMLDataBase(dataBaseName) xml_dataBase.insert(sql) 作用:执行sql语句,插入记录 5.查询记录 xml_dataBase = XMLDataBase(dataBaseName) xml_dataBase.select(sql) 作用:执行sql语句,查询记录 6.删除表 xml_dataBase = XMLDataBase(dataBaseName) xml_dataBase.dropTable(sql) 作用:执行sql语句,删除表 7.删除数据库 xml_dataBase = XMLDataBase(dataBaseName) xml_dataBase.dropDataBase(sql, userName) 作用:执行sql语句,删除数据库