# DBserver **Repository Path**: zhizhenliu/dbserver ## Basic Information - **Project Name**: DBserver - **Description**: 实现一个简单的数据库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-16 - **Last Updated**: 2021-12-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dbserver:java实现的SQL数据库实例后台 ## 简介 * 通过javacc生成的解析器,解析SQL语句的子集成Statement对象,通过处理程序(Process对象)处理SQL请求。 * 支持创建、删除表/数据库,以及表的增、查、改的SQL语句,具体见下一节。 * 数据库存储在项目根目录下的`database`文件夹下,每个数据库中存储其Table表文件夹。 * 具体的表Table以两个文件储存: * `table.attribute`:存储表结构(字段名,字段类型) * `table.data`:储存表数据 ## 使用 1. 运行DbserverApplication程序,启动后台 2. 请求接口`\sql\run`并附带参数`sql`:查询语句和`database`:sql操作的数据库即可 ## 支持 * 数据定义语句(DDL) 1. `create database` 支持指定数据库名,创建数据库,例如: ```sql CREATE DATABASE test ``` 2. `create table` 支持指定表名,字段名和类型,例如: ```sql CREATE TABLE student(id int, name char, score int) ``` 3. `drop database` 支持指定数据库名,例如: ```sql DROP DATABASE test ``` 4. `drop table` 支持指定表名,例如: ```sql DROP TABLE STUDENT ``` 5. `use database` 支持指定数据库,例如: ```sql USE DATABASE test ``` * 数据操作语句(DML) 1. `insert` 支持指定字段,不指定字段为插入所有字段,可以一次插入多条数据,可以插入子查询数据,例如: ```sql INSERT INTO student VALUES(1, 'USER1', 90), (2, 'USER2', 80), (3, 'USER3', 85), (4, 'USER4', 77), (5, 'USER5', 60) ``` 3. `update` 支持一次更新多列,`where`条件可选,例如: ```sql UPDATE student SET score = 61,name = 'zhangsan' where id = 5 ``` 4. `select` 支持*选中所有列和指定列, 可以使用`as`设置别名,`where`条件可选,例如: ```sql SELECT id, name, score as MyScore FROM student WHERE name = 'USER1' OR id > 4 OR score >= 85 ``` 5. `max/min/count/sum/avg`:支持聚集函数,例如 ```sql SELECT MAX(score) as maxScore FROM student where id =2 or id =4 or name = 'USER5' SELECT MIN(score) as minScore FROM student where id =2 or id =4 or name = 'USER5' SELECT COUNT(ID) FROM student SELECT SUM(score) as minScore FROM student where id =2 or id =4 or name = 'USER5' SELECT AVG(score) as minScore FROM student where id =2 or id =4 or name = 'USER5' ```